如何禁用特定文件的Sonar规则?

时间:2014-01-13 23:06:26

标签: sonarqube

我有一个我正在研究的项目,有些文件违反了一些规则,但这些方法并非真正的问题,因此会分散噪音。但是,我不想在全球范围内禁用这些规则,我宁愿不必逐个将它们标记为误报。

有没有办法禁用特定文件的声纳规则,若然,怎么办?

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:6)

基于Mithfindel的回答和dpk的评论,这将删除警告

  

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

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

enter image description here

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

我正在使用SonarQube版本4.1.1。

答案 2 :(得分:4)

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

以下是一个例子:

@ java.lang.SuppressWarnings("鱿鱼:S00111&#34) squid:在这种情况下,S00111是一个声纳问题ID。您可以从Sonar web ui。

中找到此问题ID

答案 3 :(得分:2)

您可以在 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

根据您的特定需求更改 ruleKey resourceKey

答案 4 :(得分:0)

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

一个规则

@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 {...