【问题标题】:How to disable Sonar rules for specific files?如何禁用特定文件的声纳规则?
【发布时间】:2014-02-01 21:36:40
【问题描述】:

我有一个正在处理的项目,其中一些文件违反了一些规则,但在某种程度上并不是真正的问题,因此会分散注意力。但是,我不想在全局范围内禁用这些规则,也不想将它们一一标记为误报。

有没有办法禁用特定文件的声纳规则,如果可以,如何?

【问题讨论】:

标签: sonarqube


【解决方案1】:

从 SonarQube 4.0 开始,您可以根据规则键和文件路径模式定义 issue exclusion patterns

在以前的版本中,您可以依赖Switch Off Violations plugin

【讨论】:

  • 太好了,谢谢。对登陆此页面的未来人员的说明:规则键模式是 :
  • @mith 链接已损坏。请让你的答案自成一体。
【解决方案2】:

您可以使用 SuppressWarnings 注释类或方法。

这是一个例子:

@java.lang.SuppressWarnings("squid:S00111") squid:S00111 在这种情况下是 Sonar 问题 ID。您可以从 Sonar Web ui 中找到此问题 ID。

【讨论】:

    【解决方案3】:

    基于 Mithfindel 的回答和 dpk 的评论,这消除了警告

    System.out 和 System.err 不应用作记录器

    通过为规则 squid:S106 添加忽略模式,从名为 log(或其任何子包)的包中的所有类中:

    要查看所有规则的键列表,请转到 质量配置文件 下的配置文件,然后选择 下载 以获取包含所有规则键的 .csv 文件。

    我使用的是 SonarQube 4.1.1 版。

    【讨论】:

    • 我有一个控制台项目,并希望在其上禁用“不应使用控制台日志记录”规则。正如你所说,我使用 UI,但似乎 MSBuild 没有得到这些排除项(在代理日志或 .sonarqube 日志中找到的任何内容)。我是否必须有一个配置文件或 MSbuild 应该检索项目的声纳配置?规则键模式:csharpsquid:S2228 文件路径模式:**/ChangeLog/**/*.*
    • BonOeil,你应该问一个单独的问题。
    【解决方案4】:

    您可以在sonar-project.properties下设置具体的文件和规则,内容如下:

    # Ignore Issues
    sonar.issue.ignore.multicriteria=e1,e2
    # Skip Bold Check
    sonar.issue.ignore.multicriteria.e1.ruleKey=Web:BoldCheck
    sonar.issue.ignore.multicriteria.e1.resourceKey=**/*.html
    # Skip Tag Check
    sonar.issue.ignore.multicriteria.e2.ruleKey=Web:S1234
    sonar.issue.ignore.multicriteria.e2.resourceKey=**/*.html
    

    根据您的具体需要更改 ruleKeyresourceKey

    【讨论】:

      【解决方案5】:

      是的,有可能。

      【讨论】:

        【解决方案6】:

        使用下面的注释我们可以忽略特定文件中的规则

        对于一个规则

        @java.lang.SuppressWarnings("squid:S2696")
        @Slf4j
        @Service
        public class PaymentServiceImpl implements PaymentService {....
        

        适用于多个规则

        @java.lang.SuppressWarnings({"squid:S2696", "squid:S1172", "squid:CommentedOutCodeLine"})
        @Slf4j
        @Service
        public class PaymentServiceImpl implements PaymentService {...
        

        【讨论】:

        • 提示:如果您想获得要放入@SuppressWarning 的确切代码,您可以转到SonarQube 仪表板,然后单击文字“为什么这是个问题?”您感兴趣,屏幕下方会打开一个小窗口;看右边,你会看到类似“java:S1234”的东西。那是代码。
        猜你喜欢
        • 2013-04-30
        • 2014-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-25
        • 2014-08-18
        • 2023-04-02
        • 1970-01-01
        相关资源
        最近更新 更多