我想定义一个Sonar规则,避免接口中指定的方法名称长度大于25,同时如果在接口中定义方法,则必须以“run”开头。我一直试图弄清楚如何去做,但我不知道该怎么做。我认为它应该是一个checkstyle规则,但我不知道如何定义它。
有人可以帮我定义吗?
非常感谢你。
答案 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
后缀)时才有效。如果您没有这样的命名约定,那么您必须:
如果您有接口的命名约定,则可以像这样配置抑制过滤器:
<!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>