closures某些代码的声纳

是否有可能closures声纳( www.sonarsource.org )测量特定的代码块,哪一个不想被测量?

一个例子是FindBugs输出的“Preserve Stack Trace”警告。 当离开服务器时,我可能只想把消息传回给客户端,而不包括我刚才捕获的实际exception,如果这个exception对于客户端来说是未知的(因为客户端没有那个JAR例外包含例外)。

这是一个常见问题 。 您可以将//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") 

鱿鱼:S00112在这种情况下是一个声纳问题ID。 您可以在Sonar UI中find此ID。 转到问题追溯。 find您想要取消警告的问题。 在你的代码中的红色问题框中是有一个规则链接与给定问题的定义。 一旦你点击,你会看到页面顶部的ID。

我build议你尝试使用@SuppressWarnings("squid:S2078")来抑制特定的警告。

为了抑制多个警告,你可以这样做@SuppressWarnings({"squid:S2078", "squid:S2076"})

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

最后,如果您拥有适当的用户界面权限,则可以直接从界面发出标志作为误报。

之所以我build议抑制特定的警告,是因为不要使用//NOSONAR来阻止某个特定问题,而是//NOSONAR冒险在代码中//NOSONAR代码。

您可以在FAQ中阅读更多信息

注意:GáborBakos正在指向现在404的旧版FAQ。 这是我的第一个谷歌结果,所以我想帮助其他人可能有同样的问题

编辑:6/30/16 SonarQube现在叫做SonarLint

如果你想知道如何find鱿鱼号码。 只需单击Sonar消息(例如, Remove this method to simply inherit it. ),Sonar问题将展开。

在左下方将有鱿鱼号码(例如squid:S1185可维护性> squid:S1185

那么你可以通过@SuppressWarnings("squid:S1185")来压制它

我无法在声纳5.6中find鱿鱼号码,这个注释也起作用:

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