[英]False positive SonarQube violation on String concatenation in loop
我有一些看起來像這樣的代碼(我用通用的代替我的業務變量):
Map<String, String> map = new HashMap<String, String>();
for (int i = 1; i < 10; i++) {
String suffix1 = retrieveValue1(i);
String suffix2 = retrieveValue2(i);
String tag = "prefix";
if (suffix1 != null) {
tag += suffix1;
}
else {
tag += suffix2;
}
map.put(tag.toUpperCase(), "on");
}
讓我感到不快的是,我收到了以下SonarQube違規行為:
性能 - 方法在循環中使用+連接字符串
在我看來,這是一個假陽性(因為這里的字符串上沒有真正的循環)但我想先仔細檢查。
我和我的朋友谷歌找不到任何類似的情況。
這是假陽性,還是我的循環中是否存在真正的性能損失?
是的,SonarQube可能對在循環中使用+=
感到困惑。
String tag = "prefix";
在循環內部創建,因此for
循環中沒有字符串連接,從技術上講,警告是誤報。
請注意,您仍然可以使用StringBuilder
附加標記的兩個部分,但是您必須測量是否有必要。
在循環外聲明String變量。 我認為這可以解決你的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.