是否可以针对特定的代码块关闭声纳(www.sonarsource.org)测量,而哪些是不想测量的?
一个示例是Findbugs输出的“保留堆栈跟踪”警告。当离开服务器时,如果客户端不知道该异常,我可能只想将消息传递回客户端,而不包括我刚刚捕获的实际异常(因为该客户端没有该JAR,例如包含例外)。
是否可以针对特定的代码块关闭声纳(www.sonarsource.org)测量,而哪些是不想测量的?
一个示例是Findbugs输出的“保留堆栈跟踪”警告。当离开服务器时,如果客户端不知道该异常,我可能只想将消息传递回客户端,而不包括我刚刚捕获的实际异常(因为该客户端没有该JAR,例如包含例外)。
Answers:
这是一个常见问题解答。您可以//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")
squid:S00112在这种情况下是声纳问题ID。您可以在Sonar UI中找到此ID。转到问题明细。查找您要禁止显示警告的问题。在代码的红色问题框中,有一个带有给定问题定义的“规则”链接。单击后,您将在页面顶部看到ID。
@SuppressWarnings("findbugs:UI_INHERITANCE_UNSAFE_GETRESOURCE")
。
Unsupported @SuppressWarnings("squid:S00112")
。您可以配置Eclipse忽略它,但是@SuppressWarnings("uncheckedd")
不会检测到诸如in的错字。
我建议您尝试使用来禁止显示特定警告@SuppressWarnings("squid:S2078")
。
要取消显示多个警告,您可以这样操作 @SuppressWarnings({"squid:S2078", "squid:S2076"})
还有//NOSONAR
一条评论告诉SonarQube忽略特定行的所有错误。
最后,如果您对用户界面拥有适当的权限,则可以直接从用户界面中将标志发布为误报。
我之所以建议禁止使用特定警告,是因为更好的做法是阻止特定问题,而不要使用//NOSONAR
并冒着Sonar问题偶然在您的代码中蔓延的风险。
您可以在常见问题解答中了解更多信息
注意:GáborBakos指向的是现在的404s较早的FAQ。这是我的第一个Google搜索结果,所以我想帮助其他可能有相同问题的人
编辑:16/6/30 SonarQube现在称为SonarLint
如果您想知道如何查找鱿鱼编号。只需单击Sonar消息(例如Remove this method to simply inherit it.
),Sonar问题就会扩大。
左下角将显示鱿鱼编号(例如,squid:S1185
可维护性>可理解性)
所以你可以通过抑制它 @SuppressWarnings("squid:S1185")
我无法在声纳5.6中找到鱿鱼编号,使用此注释也可以:
@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})
squid
用于基于Sonar的Java数据库(SonarAnalyzer Java)。pmd
并且checkstyle
在其他规则存储库中。
@SuppressFBWarnings
(添加以避免与冲突java.lang.SuppressWarnings
)是否也忽略了它。