是否可以关闭声纳(www.sonarsource.org)对特定代码块的测量,哪一个不想被测量?
一个例子是Findbugs输出的“PreserveStackTrace”警告,当我离开服务器时,如果客户端不知道异常(例如,因为客户端没有包含异常的JAR),我可能只想把消息传回客户端,而不包括我刚刚捕获的实际异常。
是否可以关闭声纳(www.sonarsource.org)对特定代码块的测量,哪一个不想被测量?
一个例子是Findbugs输出的“PreserveStackTrace”警告,当我离开服务器时,如果客户端不知道异常(例如,因为客户端没有包含异常的JAR),我可能只想把消息传回客户端,而不包括我刚刚捕获的实际异常。
7条答案
按热度按时间stszievb1#
可以使用SuppressWarnings注解类或方法
squid:S00112在本例中是Sonar问题ID。您可以在Sonar UI中找到此ID。转到问题深入查看。找到您想要禁止警告的问题。在代码中的红色问题框中有一个规则链接,其中包含给定问题的定义。单击该链接后,您将在页面顶部看到此ID。
iyr7buue2#
我建议您尝试使用
@SuppressWarnings("squid:S2078")
来抑制特定警告。要抑制多个警告,可以像
@SuppressWarnings({"squid:S2078", "squid:S2076"})
这样执行还有
//NOSONAR
注解,告诉SonarQube忽略特定行的所有错误。最后,如果您对用户界面具有适当的权限,则可以直接从界面发出误报标志。
我建议抑制特定警告的原因是,阻止特定问题比使用
//NOSONAR
更好,因为这样会冒着Sonar问题无意中潜入代码的风险。您可以在常见问题解答中了解更多信息
编辑:6/30/16 SonarQube现在被称为SonarLint
如果你想知道如何找到乌贼号,只需点击声纳消息(ex.
Remove this method to simply inherit it.
),声纳问题就会扩大。在左下角,它将有squid编号(例如:
squid:S1185
可维护性〉可理解性)所以你可以用
@SuppressWarnings("squid:S1185")
来抑制它pobjuy323#
这是一个FAQ。您可以将
//NOSONAR
放在触发警告的行的末尾。对于大多数语言,SonarQube支持使用通用机制:
//NOSONAR
。这将取消当前和将来可能在该行中提出的所有问题。不过,我更喜欢使用FindBugs机制,它包括添加@SuppressFBWarnings注解:
rbl8hiat4#
如果你不能帮助你的代码,在你得到警告的行上使用//NOSONAR。它很有效!
dbf7pr2w5#
我无法找到乌贼号声纳5.6,与此注解也工作:
dy1byipe6#
实际上,要理解问题的ID很难,所以我使用了@SuppressWarnings(“all”)注解,它基本上适用于所有规则,但更准确地说,最好使用ID。单击查看图片-〉Sonar Issue ID
因此,当点击红色框中的“Why is this a issue?”(为什么这是一个问题?)时,您将进入一个带有解释的屏幕。在屏幕顶部的左侧,您可以看到规则名称,在左侧,您可以看到此规则的ID。因此,要应用此规则,您只需将此注解添加到您的类或方法中。
@SuppressWarnings(“公共java:重复块”)
hjzp0vay7#
任何方法的代码复杂度仅允许为15,如果我们必须在不重构方法的情况下解决此问题,则可以在方法定义的顶部使用此代码:-@SuppressWarnings({“java:S3776”})