如何在Java中忽略一些SonarQube规则?

ebdffaop  于 2023-04-10  发布在  Java
关注(0)|答案(4)|浏览(560)

我们最近开始使用SonarQube。我们发现了一些SonarQube建议的规则,但我们希望忽略它们或给予它们低优先级,甚至配置SonarQube建议的时间。例如
我们希望避免规则(和/或配置SonarQube建议的优先级和时间)
1.记录此公共类
1.完成与此TODO注解关联的任务。
我找不到一种方法来配置这个规则被忽略。我们希望这种规则被忽略的整个项目,而不是特定的类。
配置这个值将帮助我们有一个更好的时间估计,以解决主要问题,并给予低优先级的规则,如上述两个。
我很感激你的忠告。

ffx8fchx

ffx8fchx1#

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

示例:

@SuppressWarnings("squid:S0016")

我不太喜欢这样,使用添加注解**//NOSONAR**,告诉SonarQube忽略特定行的所有错误。

示例二:

如果我这样做:

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);
iqjalb3h

iqjalb3h2#

如注解中所述,您只需从配置文件中删除规则或对其进行编辑以降低其优先级即可。您需要具有“全局管理质量配置文件”权限才能执行此操作。使用该权限登录后,请转到“规则”界面,搜索要停用的规则,选择该规则,单击它,然后从相关配置文件中将其停用。

kyks70gy

kyks70gy3#

正确的做法是在每个项目的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
z9smfwbn

z9smfwbn4#

也许这些答案有点旧,因为在SonarQube UI中有一种简单的方法可以做到这一点。
1.在SonarQube中查找您的项目
1.单击问题选项卡
1.单击特定问题
1.在顶部,您将看到问题代码名称(例如:typescript:S1135java:S107)。复制此代码。
1.在屏幕的右上角点击项目设置〉〉常规设置
1.单击左侧的分析范围选项卡
1.向下滚动到“忽略多个条件上的问题”
1.在本节中,您将创建排除规则。

示例
*忽略任何地方的问题:例如,如果要在所有地方忽略typescript:S1135,则输入typescript:S1135作为规则键模式,输入**/*作为文件路径模式(*匹配零个或多个目录。 匹配零个或多个字符)。
*忽略特定文件中的所有问题:输入*作为规则键模式,输入路径(path/to/your/file.js)作为文件路径模式。

更多示例:https://docs.sonarqube.org/9.8/project-administration/narrowing-the-focus/#excluding-specific-rules-from-specific-files

相关问题