我运行流行的Java代码质量工具SonarQube,并观察其建议。我看到它报告了下面的“严重”严重性问题,
您可以看到该规则的合规和不合规代码,如下所示,
if(something) {
executeTask();
} else if (somethingElse) { // **Compliant**
doSomethingElse();
}
else { // **Noncompliant**
generateError();
}
我觉得,这是开发人员的自由裁量权,至少不应该以“严重”严重程度报告该问题。 (“次要”或“信息”严重程度可以通过适当的理由进行。)
你对这个推荐的原因有什么理由吗?
其次,对于在相当长的时间内处理代码质量工具的受众的问题,总体来说我需要使用代码质量工具有多严肃?
(我发现了一些文章here和here,它们实际上赞同了“不合规”的写作方式if-else或try-catch-finally。)
答案 0 :(得分:3)
您的代码被视为不合规并不奇怪 - 它违反了Java Code Conventions。是否遵守代码约定,但考虑到以通用样式编写的代码更容易理解的事实。
根据Java Code Conventions if-else语句应具有以下形式:
Context
try-catch语句应具有以下格式:
if (condition) {
statements;
} else {
statements;
}
答案 1 :(得分:3)
如果您不想使用此类代码约定,您可以从质量配置文件中禁用该规则 - 甚至更改其严重性。默认" SonarQube Way"质量概况只是广泛接受的最佳实践的标志,但最终您有责任根据您的需求进行调整。