我们怎样才能忽略Java中的一些SonarQube规则?

时间:2016-08-23 19:26:21

标签: java sonarqube rules sonar-runner sonarqube-scan

我们最近开始使用 SonarQube 。我们已经找到了SonarQube建议的一些规则,但我们想忽略它们或给它们低优先级,甚至配置SonarQube建议的时间。例如

我们希望避免规则(和/或配置SonarQube建议的优先级和时间)

  1. 记录此公共课程。和
  2. 完成与此TODO评论相关的任务。
  3. 我找不到配置此规则以供忽略的方法。我们希望忽略整个项目而不是特定类的这种规则。

    配置此值可帮助我们更好地估算主要问题,并为上述规则提供低优先级。我们正在使用SonarQube 6

    我提出你的建议。

3 个答案:

答案 0 :(得分:5)

如评论中所述,您所要做的就是从您的个人资料中删除规则或编辑它们以降低其优先级。您需要“全局管理质量配置文件”权限才能执行此操作。使用该权限登录后,请转到规则界面,搜索要停用的规则,选择规则,单击该规则,然后从相关配置文件中取消激活该规则。

答案 1 :(得分:4)

如果你有想要忽略的规则的id,那么你可以添加 SuppressWarnings

实施例

@SuppressWarnings("squid:S0016")

我不喜欢这个,并且用来添加评论 // NOSONAR  告诉 SonarQube 忽略特定行的所有错误。

例2:

如果我这样做:

System.setErr(System.out);
ConsoleHandler h = new ConsoleHandler(); 
System.setErr(err);

我的声纳抱怨我要用logger而不是system.out ......

因此,我可以保持警告:

System.setErr(System.out);  //NOSONAR 
ConsoleHandler h = new ConsoleHandler(); 
System.setErr(err);

答案 2 :(得分:0)

正确的方法是在每个项目的sonar-project.properties文件中放置以下内容:

sonar.issue.ignore.multicriteria=e1,e2
# tab characters should not be used
sonar.issue.ignore.multicriteria.e1.ruleKey=squid:S00105
sonar.issue.ignore.multicriteria.e1.resourceKey=**/*.java
# right curly braces should be on a new line
sonar.issue.ignore.multicriteria.e2.ruleKey=squid:RightCurlyBraceStartLineCheck
sonar.issue.ignore.multicriteria.e2.resourceKey=**/*.java