是否可以关闭特定代码块的声纳(www.sonarsource.org)测量值,哪一个不想测量?
一个例子是Findbugs输出的“保留堆栈跟踪”警告。离开服务器时,我可能只想将消息传递回客户端,不包括我刚捕获的实际异常,如果客户端不知道该异常(因为客户端没有JAR,那么例如,包含例外情况。
答案 0 :(得分:172)
您可以使用SuppressWarnings
注释类或方法@java.lang.SuppressWarnings("squid:S00112")
在这种情况下,squid:S00112 是一个声纳问题ID。您可以在Sonar UI中找到此ID。转到问题深入研究。找到您要禁止警告的问题。在代码中的红色问题框中,有一个规则链接,其中包含给定问题的定义。点击后,您会在页面顶部看到ID。
答案 1 :(得分:65)
我建议您尝试使用@SuppressWarnings("squid:S2078")
来抑制特定警告。
为了抑制多个警告,您可以像@SuppressWarnings({"squid:S2078", "squid:S2076"})
还有//NOSONAR
评论告诉SonarQube忽略特定行的所有错误。
最后,如果您拥有用户界面的正确权限,则可以直接从界面发出标记为误报。
我建议删除特定警告的原因是,阻止特定问题而不是使用//NOSONAR
是一种更好的做法,并且可能会在代码中意外爬出Sonar问题。
您可以在FAQ
中详细了解相关信息注意:GáborBakos指的是现在404的旧版常见问题解答。这是我的第一个谷歌搜索结果,所以我想帮助其他可能有同样问题的人
编辑:2016年6月30日 SonarQube现在称为SonarLint
如果您想知道如何找到鱿鱼数量。只需点击声纳消息(例如Remove this method to simply inherit it.
),声纳问题就会扩大。
在左下角,它将有鱿鱼编号(例如squid:S1185
可维护性>可理解性)
那么你可以通过@SuppressWarnings("squid:S1185")
答案 2 :(得分:59)
这是FAQ。您可以将//NOSONAR
放在触发警告的行上。我更喜欢使用FindBugs机制,它包括添加@SuppressFBWarnings注释:
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value = "NAME_OF_THE_FINDBUGS_RULE_TO_IGNORE",
justification = "Why you choose to ignore it")
答案 3 :(得分:4)
在您得到警告的行上使用// NOSONAR,如果它不能帮助您的代码处理。可行!
答案 4 :(得分:3)
我无法在声纳5.6中找到鱿鱼编号,这个注释也有效:
@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})
答案 5 :(得分:0)
实际上很难理解哪个是问题的 ID,所以我使用了 @SuppressWarnings("all") 注释,它基本上适用于所有规则,但更准确地说,最好使用 ID。点击查看图片-> Sonar Issue ID
所以当点击“为什么这是一个问题?”在红色框中,您将进入带有解释的屏幕。在左侧屏幕的顶部,您可以看到规则名称,在左侧是该规则的 id。 所以要申请这个规则,你只需要在你的类或方法中添加这个注解。
@SuppressWarnings("common-java:DuplicatedBlocks")