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"})