示例代碼:SonarQube假陽性在靜態方法「未使用私有方法應被刪除」
public static String foo(){
return bar();
}
private static String bar(){
return "";
}
SonarQube標記欄()函數爲未使用,但SonarLint(的IntelliJ,版本2.7.1.1640)工作正常。 我已經安裝了SonarQube(6.2)和最新版本的Java插件(4.5.0.8398)的最新版本,但仍然有這個問題 - 我認爲這個問題已修復? 這是一種迴歸bug嗎? 感謝您的幫助。
UPDATE:
上面的例子太瑣碎,我管理,以指定的問題:它看起來像傳遞給函數的原始參數的問題,例如,這是標記爲未使用:
public static String foo(SomeClass a) {
return bar(a.getChar());
}
private static String bar(char a) {
return String.valueOf(a);
}
如果我將硬編碼值傳遞給bar(像bar('a'))一切正常(甚至當我傳遞像bar(「string」.charAt(0))))。 SomeClass.getChar()返回'char',因此對於裝箱原語不是問題。
SOLUTION: as @Michael - SonarSource團隊建議,依賴關係字節碼存在問題。我禁用了teamcity Sonar runner插件,現在通過Gradle插件運行sonarqube。
在SonarQube的某種支持論壇或bug追蹤器上詢問這個問題呢? – john16384
無法用相同的配置重現。您是否確定在爲SonarQube執行分析時提供文件的字節碼? –
約翰 - 你是對的,我應該也許我會把它作爲一個錯誤發送給SonarQube,但我想確定這不是我的錯誤。 @ Michael-SonarSourceTeam - 請看我的更新。 – szymonszymon