有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

你会挑剔吗?右大括号和下一个“else”、“catch”和“finally”关键字应位于同一行

我运行流行的Java代码质量工具SonarQube,并观察了它的建议。我看到它在下面报告了严重程度为“重大”的问题

enter image description here

您可以看到该规则的兼容和不兼容代码,如下所示

  if(something) {
    executeTask();
  } else if (somethingElse) {          // **Compliant**
    doSomethingElse();
  }
  else {                               // **Noncompliant**
     generateError();
  }

我觉得,这是开发商的自由裁量权,至少不应以“重大”严重性报告该问题。(“轻微”或“信息”严重性可以通过适当的理由确定。)

你有什么理由解释为什么会有这样的建议

第二,对于那些在相当长的一段时间内一直在使用代码质量工具的观众来说,我的问题是,我需要对代码质量工具有多认真

(我发现了一些文章,herehere,它们实际上支持“不合规”的书写方式if-else或try-catch finally。)


共 (2) 个答案

  1. # 1 楼答案

    如果您不想麻烦处理像这样的代码约定,您可以从质量配置文件中禁用该规则,甚至更改其严重性。默认的“SonarQube方式”质量配置文件只是广泛接受的最佳实践的一个指示,但最终是您的责任使其适应您的需要

  2. # 2 楼答案

    毫不奇怪,您的代码被视为不兼容的-它违反了Java Code Conventions。遵循代码约定与否,但要考虑的是,以普通样式编写的代码更容易理解。p>

    根据Java代码约定,if else语句应具有以下形式:

    if (condition) {
        statements;
    } else {
        statements;
    }
    

    try-catch语句应具有以下格式:

    try {
        statements;
    } catch (ExceptionClass e) {
        statements;
    }