声纳规则 - 方法名称太长

时间:2014-09-07 17:39:29

标签: java sonarqube checkstyle

我想定义一个Sonar规则,避免接口中指定的方法名称长度大于25,同时如果在接口中定义方法,则必须以“run”开头。我一直试图弄清楚如何去做,但我不知道该怎么做。我认为它应该是一个checkstyle规则,但我不知道如何定义它。

有人可以帮我定义吗?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

这比初看起来更难。当然MethodName检查是要使用的检查,但问题是将检查限制在接口中定义的方法。

MethodName 检查应配置如下:

<module name="MethodName">
    <property name="id" value="methodNameInInterface"/>
    <property name="format" value="^run(?=.{0,22}$)[A-Z][a-zA-Z0-9]*$"/>
</module>

请注意id属性,该属性用于在抑制过滤器配置中标识此规则,因为您将定义其他 MethodName 检查。这很容易。

为了抑制除接口中定义的所有方法的生成警告,您可以使用suppression filter。但这只有在你有接口的命名约定(例如,常见的IF后缀)时才有效。如果您没有这样的命名约定,那么您必须:

  • 实现可以根据文件类型过滤消息的custom filter,或
  • 实现custom check,可能作为 MethodName 的子类,它会添加一个选项来限制对某些类型文件的警告。

如果您有接口的命名约定,则可以像这样配置抑制过滤器:

<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN"
    "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
    <suppress id="methodNameInInterface" files="(?!IF)..\.java$"/>
</suppressions>