簡體   English   中英

循環中字符串連接的假陽性SonarQube違規

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM