我正在考虑如何在不进行重大重构的情况下解决特定的关键/主要问题,并打破与之前版本(差异等)的比较。
我知道我可以将我的类拆分成同一个文件中的多个类,而不会破坏比较。我已经这样做了。 (今晚会提供一个例子)。
然而,问题是:在运行算法时,SONAR是否考虑在同一个.java文件中附带类?它是否考虑嵌套类?
更重要的是,它将它们视为与文件名同名的关键“公共类”的一部分。在生成警告时,各种指标的计算是否将其视为public class
?
如何重构代码,因此diff不会受到严重破坏
我在if, else if
的很长链中有以下代码:
}else if ("cdbStreet".equals(paramKey)) {
并将其转换为:
}else{
setSearchDataByRequestParametersPart2(searchData, ...);
}
}
return queryString.toString();
}
private static void setSearchDataByRequestParametersPart2(SearchRequestData searchData, ...) {
if ("cdbStreet".equals(paramKey)) {
答案 0 :(得分:1)
Sonar正在对嵌套(内部)类进行代码分析。它适用于我的商业项目(我无法分享示例)。报告内部静态和非静态类的违规。
有一些特定于内部类的规则 https://sonarqube.com/coding_rules#q=inner|languages=java
有关可用示例,请参阅 https://sonarqube.com/component_measures/metric/lines/list?id=com.icegreen%3Agreenmail-parent
从第358行开始,您将分析内部类FetchCommandParser。针对该类中的代码报告了一些警告。
在内部,声纳插件使用源代码和字节码。默认情况下,您提交所有代码进行分析(如果您愿意,可以配置排除项)。