Java 关闭声纳以获取特定代码

Java 关闭声纳以获取特定代码,java,jenkins,sonarqube,findbugs,Java,Jenkins,Sonarqube,Findbugs,是否可以关闭特定代码块的sonar()测量,哪一块代码不想被测量 Findbugs输出的“保留堆栈跟踪”警告就是一个例子。离开服务器时,如果客户机不知道异常(例如,因为客户机没有包含该异常的JAR),我可能只想将消息传递回客户机,而不包括我刚刚捕获的实际异常。您可以将//NOSONAR放在触发警告的行的末尾 //NOSONAR 对于大多数语言,SonarQube支持使用通用机制://NOSONAR,位于问题行的末尾。这将抑制可能在线提出的所有问题(现在和将来) 不过,我更喜欢使用FindBugs

是否可以关闭特定代码块的sonar()测量,哪一块代码不想被测量

Findbugs输出的“保留堆栈跟踪”警告就是一个例子。离开服务器时,如果客户机不知道异常(例如,因为客户机没有包含该异常的JAR),我可能只想将消息传递回客户机,而不包括我刚刚捕获的实际异常。您可以将
//NOSONAR
放在触发警告的行的末尾

//NOSONAR

对于大多数语言,SonarQube支持使用通用机制:
//NOSONAR
,位于问题行的末尾。这将抑制可能在线提出的所有问题(现在和将来)

不过,我更喜欢使用FindBugs机制,它包括添加@SuppressFBWarnings注释:

@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
    value = "NAME_OF_THE_FINDBUGS_RULE_TO_IGNORE",
    justification = "Why you choose to ignore it")

可以使用SuppressWarnings注释类或方法

@java.lang.SuppressWarnings("squid:S00112")

squid:S00112在本例中是声纳问题ID。您可以在声纳UI中找到此ID。转到问题向下钻取。查找要禁止显示警告的问题。在代码中的红色问题框中,有一个与给定问题定义相关的规则链接。单击后,您将在页面顶部看到ID。

我建议您尝试使用
@SuppressWarnings(“squid:S2078”)
来抑制特定警告

要抑制多个警告,可以这样做
@SuppressWarnings({“squid:S2078”,“squid:S2076”})

还有
//NOSONAR
注释告诉SonarQube忽略特定行的所有错误

最后,如果您拥有用户界面的适当权限,您可以直接从界面发出一个假阳性标志

我建议抑制特定警告的原因是,更好的做法是阻止特定问题,而不是使用
//NOSONAR
,并冒着声纳问题在代码中意外蔓延的风险

您可以在

编辑:2016年6月30日 SonarQube现在被称为SonarLint

以防你想知道如何找到乌贼号。只需点击声纳消息(例如,
删除此方法以简单地继承它。
),声纳问题就会扩大

在左下角,它将有squid编号(例如
squid:S1185
维修性>可理解性)


因此,您可以通过
@SuppressWarnings(“squid:S1185”)

在sonar 5.6中找不到squid编号,使用此注释也可以:

@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})

如果您无法帮助代码解决某些问题,请在收到警告的行中使用//NOSONAR。它起作用了

同意。但是,我不确定Sonar是否正确解释了
@SuppressFBWarnings
(添加此项是为了避免与
java.lang.SuppressWarnings
)冲突,并且也忽略了它。好吧,Sonar使用FindBugs。所以,如果FindBugs处理这些注释,我不明白为什么在Sonar中运行FindBugs时它们不起作用。无论如何,测试应该不难。FAQ链接已经过时了。这是一个新的问题,你能提供其他链接到SonarQube常见问题吗?我看到的是一个登录表单而不是FAQ,我可以确认这也适用于特定的FindBugs规则ID,例如
@SuppressWarnings(“FindBugs:UI\u继承\u不安全\u GETRESOURCE”)
。问题是Eclipse显示了一个警告
不受支持的@SuppressWarnings(“squid:S00112”)
。您可以将Eclipse配置为忽略这一点,但随后会出现诸如
@SuppressWarnings(“uncheckedd”)中的打字错误
将不会被检测到。有关@SuppressWarnings和Sonar的文档,请参阅。我们在抑制时如何添加注释/理由?感谢ingnoe multiple Sonar cube Warnings的提示在界面上将其标记为假阳性的另一个问题是,如果出于任何原因删除并再次添加项目,您设置的所有标志都将消失。@annedroiid-是否有任何方法可以在pom.xml文件中执行相同的操作?我在这里提出了一个问题:
squid
用于声纳源Java数据库(SonarAnalyzer Java)
pmd
checkstyle
位于其他规则存储库中。