是否可以关闭不希望测量的特定代码块的声纳( www.sonarsource.org )测量?
Findbugs 输出的“保留堆栈跟踪”警告就是一个例子。离开服务器时,我可能只想将消息传递回客户端,不包括我刚刚捕获的实际异常,如果客户端不知道该异常(因为客户端没有其中的 JAR例如包含异常)。
是否可以关闭不希望测量的特定代码块的声纳( www.sonarsource.org )测量?
Findbugs 输出的“保留堆栈跟踪”警告就是一个例子。离开服务器时,我可能只想将消息传递回客户端,不包括我刚刚捕获的实际异常,如果客户端不知道该异常(因为客户端没有其中的 JAR例如包含异常)。
您可以使用 SuppressWarnings 注释类或方法
@java.lang.SuppressWarnings("squid:S00112")
squid:S00112在这种情况下是 Sonar 问题 ID。您可以在 Sonar UI 中找到此 ID。转到问题钻取。找到一个你想禁止警告的问题。在代码中的红色问题框中,有一个带有给定问题定义的规则链接。单击该按钮后,您将在页面顶部看到 ID。
我建议您尝试使用@SuppressWarnings("squid:S2078")
.
为了抑制多个警告,您可以这样做@SuppressWarnings({"squid:S2078", "squid:S2076"})
还有//NOSONAR
一条注释告诉 SonarQube 忽略特定行的所有错误。
最后,如果您对用户界面具有适当的权限,则可以直接从界面发出标志作为误报。
我建议抑制特定警告的原因是,更好的做法是阻止特定问题,而不是使用//NOSONAR
Sonar 问题并冒着意外潜入代码的风险。
您可以在常见问题解答中阅读有关此内容的更多信息
编辑:2016 年 6 月 30 日 SonarQube 现在称为 SonarLint
如果您想知道如何找到鱿鱼编号。只需单击 Sonar 消息(例如Remove this method to simply inherit it.
),Sonar 问题就会展开。
在左下角,它将有 squid 编号(例如,squid:S1185
可维护性 > 可理解性)
那么你可以通过@SuppressWarnings("squid:S1185")
这是一个常见问题解答。您可以放在//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")
如果您无法帮助您的代码,请在收到警告的行上使用 //NOSONAR。有用!
我无法在声纳 5.6 中找到 squid 编号,此注释也适用:
@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})
实际上很难理解哪个是问题的 ID,所以我使用了 @SuppressWarnings("all") 注释,它基本上适用于所有规则,但更准确地说,最好使用 ID。点击查看图片 -> 声纳问题 ID
所以当点击“为什么这是一个问题?” 在红色框中,您将进入一个带有解释的屏幕。在左侧的屏幕顶部,您可以看到规则名称,左侧是该规则的 ID。因此,要申请此规则,您只需将此注释添加到您的类或方法中。
@SuppressWarnings("common-java:DuplicatedBlocks")