【问题标题】:Configure Sonar to ignore single-line if-statements将 Sonar 配置为忽略单行 if 语句
【发布时间】:2021-02-26 14:49:49
【问题描述】:

有没有办法将 Sonar 配置为忽略单行 if 语句,如

if (value == true) return;

同时标记多行 if 语句而没有大括号,例如

if (value == true)
    return;

作为违规行为?

【问题讨论】:

    标签: java sonarqube


    【解决方案1】:

    没有符合您需求的规则,但您可以使用 XPath 编写自己的规则。可以找教程here

    如果不知道如何扩展声纳的编码规则可以找教程here

    【讨论】:

    • 我完全赞成这个,但我如何让 XPath 识别单行语句?当代码在 AST 中时,有问题的语句不应该产生相同的结构吗?
    【解决方案2】:

    SonarJava(SonarQube 中 Java 静态分析的默认插件)提供 the rule 以始终对控制流结构强制使用花括号。

    但是,这将不允许单行 if 语句。您需要使用自定义插件为此创建自定义规则。见tutorial on writing custom rules。您可以使用implementation of SonarJava rule 作为指导。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 2020-10-28
      • 2015-08-13
      • 2014-03-04
      相关资源
      最近更新 更多