关闭某些代码关闭Sonar

时间:2012-06-10 20:09:11

标签: java jenkins sonarqube findbugs

是否可以关闭特定代码块的声纳(www.sonarsource.org)测量值,哪一个不想测量?

一个例子是Findbugs输出的“保留堆栈跟踪”警告。离开服务器时,我可能只想将消息传递回客户端,不包括我刚捕获的实际异常,如果客户端不知道该异常(因为客户端没有JAR,那么例如,包含例外情况。

6 个答案:

答案 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")