在checkstyle中如何设置

如题所述

  CheckStyle 配置是通过指定modules 来应用到Java文件的。
  配置文件在net.sf.eclipse.cor.***.jar 里sun_checks.xml sun_checks_eclipse.xml
  在自己配置文件的时候可以参考sun 的规范来定义。

  1.CheckyStyle配置文件的修改:
  Window -> Preferences -> CheckStyle
  New -> External Configuration File -> Name -> Location -> OK
  Set as Default -> OK !
  现在就可以对自己的配置进行修改了。
  2.增加或删除文件中的属性
  2.1 Window -> preferences -> xxx(自己的配置文件)
  在CheckStyle Configer 中可以 Add 或者Remove任意的选项,并修改properties或severity.
  五:
  我的CheckStyle配置:
  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
  <!--
This configuration file was written by the eclipse-cs plugin configuration editor
-->
<!--
Checkstyle-Configuration: abc
Description: none
-->
<module name="Checker">
<property name="severity" value="warning"/>

<!-- module的根节点 -->
<module name="TreeWalker">

<module name="PackageName">
<property name="severity" value="warning"/>
<property name="format" value="^[a-z]+(\.[a-z_][a-z0-9_]*)*$"/>
<message key="name.invalidPattern" value="包名 ''{0}''要匹配 ''{1}''的格式(所有字母全部小写)."/>
</module>
<module name="TypeName">
<property name="severity" value="warning"/>
<message key="name.invalidPattern" value="名字 ''{0}'' 要符合 ''{1}''的格式(建议每个单词的首字母大写)."/>
</module>
<module name="MethodName">
<property name="severity" value="warning"/>
<property name="format" value="^[a-z][a-zA-Z]*$"/>
<message key="name.invalidPattern" value="方法名 ''{0}'' 必须要满足 ''{1}''的格式,建议除首单词外每个单词的首字母大写."/>
<message key="method.name.equals.class.name" value="方法名 ''{0}'' 不能等于类名."/>
</module>
<module name="ParameterName">
<property name="severity" value="warning"/>
<message key="name.invalidPattern" value="变量 ''{0}''要匹配''{1}''的格式,建议除首单词外的每个单词的首字母大写."/>
</module>
<module name="MemberName">
<property name="severity" value="warning"/>
<message key="name.invalidPattern" value="变量 ''{0}'' 要匹配''{1}''的格式(建议除首单词外的单词的首字母小写)."/>
</module>
<module name="ConstantName">
<property name="severity" value="warning"/>
<message key="name.invalidPattern" value="常量 ''{0}'' 要匹配''{1}''的格式(字母全部大写可以包含_)."/>
</module>
<module name="LocalFinalVariableName">
<property name="severity" value="warning"/>
<message key="name.invalidPattern" value="局部final变量 ''{0}'' 要匹配''{1}''的格式(建议除首单词外的单词的首字母大写)."/>
</module>
<module name="LocalVariableName">
<property name="severity" value="warning"/>
<property name="tokens" value="PARAMETER_DEF,VARIABLE_DEF"/>
<message key="name.invalidPattern" value="局部变量 ''{0}'' 要匹配''{1}''的格式(建议除首单词外的单词的首字母大写)."/>
</module>
<module name="StaticVariableName">
<message key="name.invalidPattern" value="静态非final变量 ''{0}'' 要匹配''{1}''的格式(建议除首单词外的单词的首字母大写)."/>
</module>
<module name="MethodLength">
<property name="severity" value="warning"/>
<property name="max" value="80"/>
<property name="tokens" value="CTOR_DEF,METHOD_DEF"/>
<message key="maxLen.method" value="方法大小不可以超过80行。"/>
</module>
<module name="ParameterNumber">
<property name="severity" value="warning"/>
<property name="tokens" value="CTOR_DEF,METHOD_DEF"/>
<message key="maxParam" value="方法参数个数不能超过7个。"/>
</module>
<module name="LineLength">
<property name="severity" value="warning"/>
<message key="maxLineLen" value="每一行的最大长度为80个字符。"/>
</module>
<module name="CyclomaticComplexity">
<property name="severity" value="warning"/>
<property name="max" value="4"/>
<message key="cyclomaticComplexity" value="方法内嵌套不能超过4级。"/>
</module>
<module name="BooleanExpressionComplexity">
<property name="severity" value="warning"/>
<property name="max" value="7"/>
<property name="tokens" value="BXOR,BAND,LAND,BOR,LOR"/>
<message key="booleanExpressionComplexity" value="布尔表达式的复杂度不能超过7."/>
</module>
<module name="ArrayTypeStyle">
<property name="severity" value="warning"/>
<message key="array.type.style" value="数组定义要采取String [] args这种方式。"/>
</module>
<module name="Indentation">
<property name="severity" value="warning"/>
<message key="indentation.error" value="你缩进了{1}个空格,正确应该缩进 {2}个空格。"/>
<message key="indentation.child.error" value="你缩进了{1}个空格,正确应该缩进 {2}个空格。"/>
</module>
<module name="AvoidStarImport">
<property name="severity" value="warning"/>
<message key="import.avoidStar" value="避免引用包时使用*号."/>
</module>
<module name="IllegalImport">
<message key="import.illegal" value="{0}为非法包."/>
</module>
<module name="RedundantImport">
<property name="severity" value="warning"/>
<message key="import.same" value="引入了同一个包中的类- {0}。"/>
<message key="import.duplicate" value="在第{0,number,integer}行已经引入了此包- {1}。"/>
<message key="import.lang" value="{0},可以去掉。"/>
</module>
<module name="FinalClass">
<property name="severity" value="warning"/>
<message key="final.class" value="类{0}要声明是final类,或者删除其私有构造函数."/>
</module>
<module name="InterfaceIsType">
<property name="severity" value="warning"/>
</module>
<module name="HideUtilityClassConstructor">
<property name="severity" value="warning"/>
<message key="hide.utility.class" value="实用类(只包含静态属性和静态方法)不应该有一个公共的或者默认构造函数。"/>
</module>
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-07
属性
说明
basedir
代码所在的位置
AbstractClassName
format: 定义抽象类的命名规则
PackageName
format: 定义包名的命名规则
TypeName
format: 定义类和接口的命名规则
tokens:
定义规则适用的类型,例如:CLASS_DEF表示类,INTERFACE_DEF 表示接口
ParameterName
format: 定义参数名的命名规则
ParameterNumber
max: 定义最多有多少个参数
tokens: 定义检查的类型
StaticVariableName
format: 定义静态变量的命名规则
MethodName
format: 定义方法名的命名规则
LeftCurly
option: 定义左大括号'{'显示位置,eol在同一行显示,nl在下一行显示
maxLineLength:
大括号'{'所在行行最多容纳的字符数
tokens:
该属性适用的类型,例:CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEF
LineLength
max: 定义一行所能容许的字符数
ignorePattern: 定义可以忽略的格式
MethodLength
检查方法的行数
max: 最多容许的行数
countEmpty: 是否计算空行
tokens:
定义检查的类型
RightCurly
option: 右大括号是否单独一行显示
tokens: 定义检查的类型
PackageHtml
检查对每一个包是否生成了package.html文件
fileExtensions:
指定要检查的文件的类型,如果只包含java文件,就不必指定
JavadocType
检查类或者接口的javadoc注释
authorFormat:
检查author标签的格式
versionFormat: 检查version标签的格式
scope:
可以检查的类的范围,例如:public只能检查public修饰的类,private可以检查所有的类
excludeScope:
不能检查的类的范围,例如:public,public的类将不被检查,但访问权限小于public的类仍然会检查,其他的权限以此类推
tokens:
该属性适用的类型,例如:CLASS_DEF,INTERFACE_DEF
JavadocMethod
检查方法的javadoc的注释
scope:
可以检查的方法的范围,例如:public只能检查public修饰的方法,private可以检查所有的方法
allowMissingParamTags:
是否忽略对参数注释的检查
allowMissingThrowsTags:
是否忽略对throws注释的检查
allowMissingReturnTag: 是否忽略对return注释的检查
JavadocVariable
检查类变量的注释
scope:
检查变量的范围,例如:public只能检查public修饰的变量,private可以检查所有的变量
JavadocStyle
scope:
excludeScope:
checkFirstSentence:

checkEmptyJavadoc:
checkHtml:
tokens:
LocalVariableName
format: 定义局部变量的命名规则
LocalFinalVariableName
format: 定义局部常量的命名规则
ConstantName
format: 定义全局常量的命名规则
MemberName
format: 定义非静态成员变量的命名规则
applyToPublic:
是否适用于public的成员变量
applyToProtected: 是否适用于protected的成员变量
applyToPackage:
是否适用于package的成员变量
applyToPrivate: 是否适用于private的成员变量
AvoidStarImport
必须导入类的完整路径,即不能使用*导入所需的类
excludes: 定义可以使用*导入的包
ImportOrder
定义导入包的顺序
groups: 定义导入包的顺序,默认以字母顺序导入
ordered:
定义包是否必须按规定的顺序显示
separated: 定义包与包之间是否应添加空白行
caseSensitive: 是否区分包名的大小写
IllegalImport
检查是否从非法的包中导入了类
illegalPkgs: 定义非法的包名称
UnusedImports
检查是否导入的包没有使用
RedundantImport
检查是否导入了不必显示导入的类
EmptyForInitializerPad
检查for语句初始化变量的格式
option:
定义初始化语句中是否使用空格,例如:space表示使用空格,则for(int i = 0; i < 100; i++)就是符合格式要求的,而for(int
i=0; i<100;i++)就不符合要求
EmptyForIteratorPad
检查for iterator语句是否使用空格
option:
定义初始化语句是否使用空格,例如:space表示使用空格,则for(Iterator iterator = List.iterator();
iterator.hasNext(); iterator.next())就是形式合理的,否则就是形式不合理的
ExecutableStatementCount
检查要执行的语句的数目
max: 定义所能容许的语句的最多数目
tokens:
定义可以检查的类型,例如:CTOR_DEF,METHOD_DEF,STATIC_INIT,INSTANCE_INIT
FileLength
max: 定义一个文件所能容许的行数
AnonInnerLength
检查匿名内部类
max: 定义匿名内部类最多容许的行数
MethodParamPad
检查方法参数的格式
allowLineBreaks: 参数是否允许在不同行(注:没有作用)
option:
在参数和括号、参数和标识符之间是否包含空格
OperatorWrap
检查运算符是否在应在同一行
option: 定义运算符的位置,eol在同一行,nl在下一行
tokens:
定义检查的类型
ParenPad
检查左小括号'('后边和右小括号')'前边是否有空格
option:
space表示有空格,nospace表示没有空格
tokens: 定义检查的类型
TypecastParenPad
暂不清楚
TabCharacter
检查源码中是否包含\t
WhitespaceAfter
检查类型后是否包含空格
tokens: 检查的类型
WhitespaceAround
暂不清楚
ModifierOrder
检查修饰符的顺序,默认是
public,protected,private,abstract,static,final,transient,volatile,synchronized,native,strictfp(注:定义不起作用)
RedundantModifier
RedundantModifier
检查是否有多余的修饰符,例如:接口中的方法不必使用public、abstract修饰
tokens:
检查的类型
EmptyBlock
检查是否有空代码块
option: 定义代码块中应该包含的内容,例如:stmt表示语句
tokens: 检查的类型
NeedBraces
检查是否应该使用括号的地方没有加括号
tokens: 定义检查的类型
AvoidNestedBlocks
检查是否有嵌套的代码块
allowInSwitchCase: 定义是否允许switch
case中使用嵌套的代码块
ArrayTrailingComma
检查初始化数祖时,最后一个元素后面是否加了逗号,如果左右大括号都在同一行,则可以不加逗号
AvoidInlineConditionals
检查是否在同一行初始化, 例如:private int Age = nGe==1 ? 100 :
0; 就应该避免
CovariantEquals
暂不清楚
ModifiedControlVariable
检查循环控制变量是否被修改
SimplifyBooleanExpression
检查是否有boolean使用冗余的地方,例如:b == true、b || true,应该简化为
b、b
SimplifyBooleanReturn
检查是否在返回boolean值时是否有使用冗余的地方,例如:

if(valid())
return true;
else
return
false;
应该改为:
return valid();
StringLiteralEquality
检查在判断字符串是否相等时是否使用了正确的形式
EqualsHashCode
检查在重写了equals方法后是否重写了hashCode方法
FinalLocalVariable
检查变量值没有改动的情况下,该变量是否定义成了final
MissingSwitchDefault
检查switch语句是否忘记了default标签
RedundantThrows
检查是否抛出了多余的异常
DefaultComesLast
检查switch中default是否在所有case的后面
MissingCtor
检查类中是否显式定义了构造器
FallThrough
检查switch中case后是否加入了跳出语句,例如:return、break、throw、continue
MultipleStringLiterals
检查一个字符串变量在不改变变量值的情况下或者字符串出现的次数
allowedDuplicates:
定义在类中一个字符串变量在不改变变量值的情况下或者字符串所能使用的最多次数
MultipleVariableDeclarations
检查一次声明多个变量时,变量是否在同一行或者在同一个语句中
RequireThis
检查是否使用了this
checkFields: 是否检查变量引用
checkMethods: 是否检查方法调用
UnnecessaryParentheses
检查是否使用了多余的小括号
VisibilityModifier
检查变量是否对外部可见
packageAllowed:
变量包内成员可以访问
protectedAllowed: 变量是受保护的
publicMemberPattern:
可以公开访问的变量所匹配的命名形式
FinalClass
只有私有构造器的类必须声明为final
InterfaceIsType
检查接口是否只定义了变量而没有定义方法,因为接口应该用来描述一个类型,所以只定义变量而不定义方法是不恰当的
allowMarkerInterfaces:
是否检查空接口
HideUtilityClassConstructor
只定义了静态方法的类不应该定义一个公有的构造器
DesignForExtension
检查类是否被设计为可扩展的,如果是,则方法应该abstract、final或者是空的
ThrowsCount
检查抛出异常的数量
max: 定义抛出异常的最大数目
StrictDuplicateCode
检查类中是否有代码复制的问题
min: 允许代码重复的最小行数
charset:
文件所用的字符集
BooleanExpressionComplexity
max: 布尔运算符在一条语句中允许出现的最大数目
GenericIllegalRegexp
检查代码中是否有不合适的引用形式或者字符
format:
定义检查所匹配的类型
ignoreCase: 是否区分大小写
ignoreComments: 是否忽略注释
message:
出现问题应该显示给用户的信息
NewlineAtEndOfFile
检查文件是否以一个新行结束
lineSeparator: 行分隔符的类型,windows是crlf
UncommentedMain
检查是否有没有被注掉或者删除的main方法
excludedClasses:
定义可以带main方法的类所匹配的名字形式
UpperEll
检查初始化长整型变量时,数字後是加了大写字母'L'而不是小写字母'l'
ArrayTypeStyle
检查再定义数组时,采用java风格还是c风格,例如:int[] num是java风格,int
num[]是c风格
javaStyle: 定义是否采用java风格定义数组
FinalParameters
检查参数是否是常量
tokens: 定义检查的类型
Indentation
检查代码的缩进是否符合要求
basicOffset:
定义代码体相对于所属的代码体的缩进量
braceAdjustment: 定义括号的缩进量
caseIndent: 定义case的缩进量
RequiredRegexp
检查文件中是否存在相应的文字
format: 定义所匹配的形式
usage.OneMethodPrivateField
检查是否只有一个方法访问了私有变量
ignoreFormat:
定义可以忽略的变量所匹配的命名形式
usage.UnusedLocalVariable
检查是否有命名後没有使用的变量
ignoreFormat:
定义可以忽略的变量所匹配的命名形式
usage.UnusedParameter
检查是否有没有使用的参数
ignoreFormat:
定义可以忽略的变量所匹配的命名形式
ignoreCatch: 是否忽略catch中的参数
ignoreNonLocal: 是否忽略非本地的变量
usage.UnusedPrivateField
检查是否存在未被使用的私有成员变量
ignoreFormat:
定义可以忽略的变量所匹配的命名形式
usage.UnusedPrivateMethod
检查是否存在未被使用的私有方法
ignoreFormat:
定义可以忽略的变量所匹配的命名形式本回答被提问者和网友采纳

在checkstyle中如何设置
1.CheckyStyle配置文件的修改:Window -> Preferences -> CheckStyle New -> External Configuration File -> Name -> Location -> OK Set as Default -> OK !现在就可以对自己的配置进行修改了。2.增加或删除文件中的属性 2.1 Window -> preferences -> xxx(自己的配置文件)在CheckStyle Confige...

自从用了这款 IDEA 神器,领导都夸我代码写得好!
1. **注解问题**:检查代码中是否存在缺失或不完整的注解。只需在检查结果中定位到问题所在,确保注解的完整性和正确性。2. **字符占位**:根据个人偏好设置代码风格后,使用右击选项解决字符占位问题。确保代码的美观性和一致性。3. **格式问题**:对于代码命名和格式化的问题,遵循CheckStyle的规范要...

eclipse中怎么自定义注释
1、Eclipse菜单栏上选择 Window -> Preferences -> Checkstyle,进入如下设置界面:2、在Global Check Configurations框中,列出可以选择的检查配置(Check Configuration),Default栏标记为对勾的默认配置。如果想自己配置检查选择,可以点击“New...”按钮新建一个配置,进入如下Check Configuration界面:3、检...

如何在maven中pom设置checkstyle报告路径
maven配置pom文件添加PMD检查,添加checkStyle检查,JDepend等检查功能 加入PMD检查, 以下代码如果在reporting节点中加入则在mvn site中执行,如果在build节点中加入,则在build的时候自动运行检查。

做静态代码分析都是用那个软件的?
开发人员可通过在 Problems 视图中查看错误或警告详细信息。 图1. 使用 Checkstyle 进行编码风格检查 此外,Checkstyle 支持用户根据需求自定义代码检查规范,在下图 2 中的配置面板中,用户可以在已有检查规范如命名约定,Javadoc,块,类设计等方面的基础上添加或删除自定义检查规范。 图2. 使用 Checkstyle 添加自定义代码...

分享一波Java顶级开发者必备的Jetbrains Idea插件和常用设置,学会...
2. Key Promoter X快捷键提示插件:每次操作后,右下角弹窗提示快捷键,快速熟悉操作。3. CodeGlance显示代码缩略图插件:适合代码量大的情况,方便查看。4. Lombok简化代码插件:自动处理实体类中的get\/set\/构造\/toString\/hashCode等方法,减少重复代码。5. Alibaba Java Coding Guidelines代码规范检查插件...

IntelliJ IDEA 酷炫插件推荐
1. **插件安装与管理**:首先,打开 IntelliJ IDEA 设置文件,选择“Plugins”选项,轻松安装JetBrains插件、第三方插件或已下载的本地插件包。更多详细信息请查阅关于设置的文章。2. **激活Power Mode II**:Power Mode II 是一款将 Atom 插件“activate-power-mode”移植到 IntelliJ IDEA 的工具,它...

业务代码如何才能不再写出大串的if\/else?
在CC判定中,循环和选择语句占主要地位。CC可使用工具检查,如Checkstyle,可限制最大的圈复杂度,当圈复杂度大于设定阈值,就报错。重复 Switch 实际支付的价格会根据用户在系统中的用户级别有所差异,级别越高,折扣越高。两个函数里出现了类似的代码,其中最类似部分就是 switch,都据用户级别判断。这...

IDEA操作手册之安装&插件
IDEA的插件功能丰富,如PMD、FindBugs、CheckStyle等,可以在官网的插件中心http:\/\/plugins.jetbrains.com\/找到。以PMD为例,通过Settings -> Plugins -> Browse Repositories安装并配置规则。FindBugs同样在插件中心安装,保持默认设置后,可以在Project导航视图中对代码进行分析。此外,GsonFormat用于json转换,...

DEV 控件gridcontrol中gridview的gridcolumn我用checkbox控件运行点击...
edit.NullStyle = DevExpress.XtraEditors.Controls.StyleIndeterminate.Unchecked;edit.CheckStyle = DevExpress.XtraEditors.Controls.CheckStyles.Standard; \/\/这就是设置你说的那个的 var col = new BandedGridColumn { FieldName = "checkBox", Caption = " ", Width = 50, Visible = true, ...

相似回答