`
John_Kong19
  • 浏览: 276242 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CheckStyle配置及常见的输出结果

 
阅读更多
     Checkstyle是一款检查java程序代码样式的工具,可以有效的帮助我们检视代码以便更好的遵循代码编写标准,特别适用于小组开发时彼此间的样式规范和统一。Checkstyle提供了高可配置性,以便适用于各种代码规范,所以除了可以使用它提供的sun的代码标准外,你也可以定制自己的标准。我们可以在eclipse中安装checkstyle的插件,来方便我们的使用。
   Checkstyle可以让我们养成书写良好代码风格的习惯,代码的整洁也减少了很多bad smell的产生。使用checkstyle的过程中可能需要经常的调整配置文件,有些check过于严格,可以根据实际情况取消一些代码检查。
Checkstyle的配置
Checkstyle配置是通过指定modules来应用到java文件的。modules是树状结构,以一个名为Checker的module作为root节点,一般的checker都会包括TreeWalker子module。我们可以参照checkstyle中的sun_checks.xml,这是根据sun的java语言规范写的配置。
在xml配置文件中通过module的name属性来区分module,module的Properties可以控制如何去执行这个module,每个property都有一个默认值,所有的check都有一个severity属性,用它来指定check的level。TreeWalker为每个java文件创建一个语法树,在节点之间调用submodules的Checks。


下面来看看standard checks中的一些具体用法。
Javadoc Comments
         JavadocPackage
检查每个java package中是否有java注释文件,默认是允许一个package-info.java,也可以通过allowLegacy属性配置允许package.html。
         JavadocType
检查类和接口的javadoc。默认不检查author 和version tags。
         JavadocMethod
检查方法和构造函数的javadoc。默认不检查未使用的异常抛出。
         JavadocVariable
检查变量的javadoc。
         JavadocStyle
检查javadoc的格式。比如:javadoc的第一行是否以句号结束,javadoc除了tags外是否有description,检查javadoc中的html格式。
         WriteTag
输出javadoc中的tag。
Naming Conventions
        AbstractClassName
检查抽象类名。
         ClassTypeParameterName
检查类的Parameter名。
         ConstantName
检查常量名。
         LocalFinalVariableName
检查局部的final类型变量名,包括catch的参数。
         LocalVarableName
检查局部的非final类型的变量名,包括catch的参数。
         MemberName
检查非静态变量。
         MethodName
检查方法名。
         MethodTypeParameterName
检查方法的参数名。
         PackageName
检查包名。
         ParameterName
检查参数名。
         StaticVariableName
检查静态的,非final类型的变量名。
         TypeName
检查类名和接口名。
Imports
         AvoidStarImport
检查是否有使用*进行import。
         AvoidStaticImport
检查是否有静态import。比如是否导入了java.lang包中的内容。
         IllegalImport
检查是否import了违法的包。默认拒绝import所有sun.*包。
         RedundanImport
检查是否有重复的import。
         UnusedImports
检查是否有未使用的import。
         ImportOrder
检查import的分组和顺序。
         ImportControl
控制可import的包。在一个较大的project可限制使用过多的第三方包,通过一个依照http://www.puppycrawl.com/dtds/import_control_1_0.dtd的xml文件来指定。
Size Violations
         ExecutableStatementCount
限制可执行代码片段的长度。默认为30。
         FileLength
检查java文件的长度。默认为2000。
         LineLength
检查代码行的长度。默认为80。
         MethodLength
检查方法和构造函数的长度。默认为150。
         AnonInnerLength
检查匿名内部类的长度。默认为20。
         ParameterNumber
检查方法和构造函数的参数个数。默认为7。
Whitespace
        GenericWhitespace
检查<和>周围的空白。
         EmptyForInitializerPad
检查空的初始化位置的空白。比如for循环中的初始化。
         EmptyForIteratorPad
检查空的迭代位置的空白。
         MethodParamPad
检查方法签名之前的空白。
         NoWhitespaceAfter
检查分隔符后的空白。
         NoWhitespaceBefore
检查分隔符前的空白。
         OperatorWrap
检查操作符的空白规则。
         ParenPad
检查圆括号的空白规则。
         TypecaseParenPad
检查强制转型的圆括号的空白规则。
         TabCharacter
检查是否有Tab字符(’"t’)。
         WhitespaceAfter
检查分隔符是否在空白之后。
         WhitespaceAround
检查分隔符周围是否有空白。
ModifierOrder
         ModifierOrder
检查修饰符的顺序是否遵照java语言规范。
         RedundantModifier
检查接口和annotation中是否有重复的修饰符。
Block Checks
         EmptyBlock
检查空的代码块。
         LeftCurly
检查’{’和左边的代码块是否在同一行。
         NeedBraces
检查是否需要大括号。主要是在if,else时的情况。
         RightCurly
检查’}’。
         AvoidNestedBlocks
检查不需要的嵌套’{}’。
Coding
         ArrayTrailingComma
检查数组初始化是否以逗号结束。
         AvoidInlineConditionals
检查inline的条件操作。
         CovariantEquals
检查类是否覆盖了equals(java.lang.Object)。
         DoubleCheckedLocking
检查DCL的问题。
         EmptyStatement
检查空的代码段。
         EqualsAvoidNull
检查一个可能为null的字符串是否在equals()比较的左边。
         EqualsHashCode
检查类是否覆盖了equals()和hashCode()。
         FinalLocalVariable
检查未改变过的局部变量是否声明为final。
         HiddenField
检查局部变量或参数是否隐藏了类中的变量。
         IllegalInstantiation
检查是否使用工厂方法实例化。
         IllegalToken
检查非法的分隔符。
         IllegalTokenText
检查非法的分隔符的下个字符。
         InnerAssignment
检查子表达式中是否有赋值操作。
         MagicNumber
检查是否有“magic numbers”。
         MissingSwitchDefault
检查switch语句是否有default的clause。
         ModifiedControlVariable
检查循环控制的变量是否在代码块中被修改。
         RedundantThrows
检查是否有被重复抛出的异常。
         SimplifyBooleanExpression
检查是否有过度复杂的布尔表达式。
         SimplifyBooleanReturn
检查是否有过于复杂的布尔返回代码段。
         StringLiteralEquality
检查字符串是否有用= =或!=进行操作。
         NestedIfDepth
检查嵌套的层次深度。
         NestedTryDepth
检查try的层次深度。
         NoClone
检查是否覆盖了clone()。
         NoFinalizer
检查是否有定义finalize()。
         SuperClone
检查覆盖的clone()是否有调用super.clone()。
         SuperFinalize
检查覆盖的finalize()是否有调用super.finalize()。
         IllegalCatch
检查是否catch了不能接受的错误。
         IllegalThrows
检查是否抛出了未声明的异常。
         PackageDeclaration
检查类中是否有声明package。
         JUnitTestCase
确保setUp(), tearDown()方法签名的正确性。
         ReturnCount
限制return代码段的数量。
         IllegalType
检查未使用过的类。
         DeclarationOrder
检查类和接口中的声明顺序。
         ParameterAssignment
检查不允许的参数赋值。
         ExplicitInitialization
检查类和对象成员是否初始化为默认值。
         DefaultComesLast
检查default的clause是否在switch代码段的最后。
         MissingCtor
检查类依赖。
         FallThrough
检查switch代码的case中是否缺少break,return,throw和continue。
         MultipleStringLiterals
检查一个文件中是否有多次出现的字符串。
         MultipleVariableDeclarations
检查代码段和代码行中是否有多次变量声明。
         RequireThis
检查代码中是否有“this.”。
         UnnecessaryParentheses
检查是否有使用不需要的圆括号。
Class Design
         VisibilityModifier
检查类成员的可见度。
         FinalClass
检查只有private构造函数的类是否声明为final。
         InterfaceIsType
检查接口是否仅定义类型。
         HideUtilityClassConstructor
检查工具类是否有putblic的构造器。
         DesignForExension
检查类是否为扩展设计。
         MutableException
确保异常是不可变的。
         ThrowsCount
限制抛出异常的数量。
Duplicate Code
         StrictDuplicateCode
严格检查重复代码。
Miscellaneous
         GenericIllegalRegexp
正则表达式的模式检查。
         NewlineAtEndOfFile
检查文件是否以一个空行结束。
         TodoComment
检查TODO:注释。
         Translation
检查property文件中是否有相同的key。
         UncommentedMain
检查是否有未注释的main方法。
         UpperEll
检查long型约束是否有大写的“L”。
         ArrayTypeStyle
检查数组类型定义的样式。
         FinalParameters
检查方法名、构造函数、catch块的参数是否是final的。
         Indentation
检查代码中正确的缩进。
         TrailingComment
确保是否要代码行注释。
         RequiredRegexp
确保一个指定的正则表达式的规则已经存在代码中。
Checkstyle常见的错误提示
1.       Type is missing a javadoc commentClass   
缺少类型说明
2.       “{” should be on the previous line
“{” 应该位于前一行
3.       Methods is missing a javadoc comment
方法前面缺少javadoc注释
4.       Expected @throws tag for “Exception”
在注释中希望有@throws的说明
5.       “.” Is preceeded with whitespace “.”
前面不能有空格
6.       “.” Is followed by whitespace“.”
后面不能有空格
7.       “=” is not preceeded with whitespace
“=” 前面缺少空格
8.       “=” is not followed with whitespace   
“=” 后面缺少空格
9.       “}” should be on the same line    
“}” 应该与下条语句位于同一行
10.    Unused @param tag for “unused”
没有参数“unused”,不需注释
11.    Variable “CA” missing javadoc
变量“CA”缺少javadoc注释
12.    Line longer than 80characters   
行长度超过80
13.    Line contains a tab character
行含有”tab” 字符
14.    Redundant “Public” modifier
冗余的“public” modifier
15.    Final modifier out of order with the JSL
suggestionFinal modifier的顺序错误
16.    Avoid using the “.*” form of import
Import格式避免使用“.*”
17.    Redundant import from the same package
从同一个包中Import内容
18.    Unused import-java.util.list
Import进来的java.util.list没有被使用
19.    Duplicate import to line 13
重复Import同一个内容
20.    Import from illegal package
从非法包中 Import内容
21.    “while” construct must use “{}”
“while” 语句缺少“{}”
22.    Variable “sTest1” must be private and have accessor method
变量“sTest1”应该是private的,并且有调用它的方法
23.    Variable “ABC” must match pattern “^[a-z][a-zA-Z0-9]*$”      
变量“ABC”不符合命名规则“^[a-z][a-zA-Z0-9]*$”
24.    “(” is followed by whitespace    
“(” 后面不能有空格
25.    “)” is proceeded by whitespace
“)” 前面不能有空格

分享到:
评论

相关推荐

    myeclipse整合checkstyle详细文档

    在项目上右键点击,选择“Properties” &gt; “Checkstyle” &gt; “Local Check Configurations”,创建新的配置或选择已有的配置应用到项目。 4. **运行Checkstyle检查** 配置完成后,每次保存代码时,MyEclipse会...

    Checkstyle 使用手册 以及常用方法

    此外,Checkstyle的输出结果通常包括文件、行号、错误类型和修复建议,方便开发人员快速定位和修复问题。 总的来说,Checkstyle是提高代码质量和一致性的重要工具。通过学习和熟练掌握Checkstyle的使用,开发者可以...

    编码规范化插件checkStyle

    - **config**:指定Checkstyle配置文件的路径。 - **fileset**:指定要检查的源文件集合。 ##### 5.5 可以嵌套的ant元素 - `&lt;fileset&gt;`:用于指定要检查的文件集合。 - `&lt;formatter&gt;`:定义报告的输出格式。 ####...

    CheckStyle缺失组件.rar

    这些Xalan组件在CheckStyle中可能扮演着辅助角色,例如,当CheckStyle需要解析XML配置文件或生成报告时,Xalan可以提供必要的XML处理能力。由于CheckStyle本身并不包含内置的XML处理功能,所以可能需要像Xalan这样的...

    checkstyle:具有Apache代码格式样式的Maven Checkstyle验证程序插件

    Apache代码格式样式是Checkstyle中一种常见的代码风格标准,它遵循了Apache软件基金会的代码编写指南。 Maven Checkstyle 插件是将 Checkstyle 集成到 Maven 构建过程中的方式。Maven 是一个广泛使用的项目管理和...

    Eclipse标准化配置文档.docx

    "Eclipse[built-in]-ueionline.xml"文件名看起来不太常见,可能是由于拼写错误或者命名约定。通常,Eclipse的配置文件不会包含"built-in"这样的词汇,但假设这是一个定制的配置文件,它可能包含了Eclipse内置编辑器...

    IDEA setting配置

    "options"包含了更多高级设置,涵盖了编译器、运行/调试、编译器输出路径、JVM参数等。这些设置可以按需调整,以优化IDEA的性能和兼容性。 七、Colors & Fonts "colors"决定了IDEA的界面颜色主题和代码高亮颜色。...

    findbugs安装及使用手册

    这个安装及使用手册将帮助开发人员在编码阶段就能发现并修复问题,从而提高代码质量和可维护性。 1. **FindBugs简介** FindBugs通过分析字节码而非源代码来工作,它可以检测出许多常见的编程错误,如空指针异常、...

    gradle4.4下载

    通过Gradle,你可以轻松配置Checkstyle任务,确保代码质量。 在构建过程中,Gradle 4.4提供了丰富的插件生态系统,允许开发者执行单元测试、集成测试,并生成覆盖率报告。JaCoCo是一个常见的覆盖率工具,与Gradle...

    自己整理的maven

    - 清洁生命周期:清理项目的构建输出,包括预清理(pre-clean)、清理(clean)和后清理(post-clean)。 - 默认生命周期:涵盖了从验证(validate)到部署(deploy)的全过程,其中包括初始化(initialize)、编译(compile)、...

    25个让Java程序员更高效的Eclipse插件

    2. Checkstyle:Checkstyle插件能够确保Java代码的风格一致性,按照预先设定好的编码规范进行检查。它可以帮助团队维护统一的代码风格,有助于提高代码可读性和团队协作效率。 3. ECLemma:ECLemma是一个免费工具,...

    阿里巴巴Java编码规范

    - 类、接口和方法上方需有简短的中文注释,说明其功能、使用场景及注意事项。 - 注释应保持更新,避免出现过时的信息。 - 避免过度注释,代码的清晰度应优先于注释。 3. **代码结构**: - 类的长度应适中,避免...

    java编码总结1

    3. **IO流与编码**:在处理输入输出流时,必须明确指定编码,否则可能会导致乱码。例如,读写文件、网络数据传输等场景,使用`InputStreamReader`和`OutputStreamWriter`配合指定编码可以避免问题。 4. **String与...

    sv.zip svn 服务器个人常用脚本

    5. **代码审核**:如果想要在提交前检查代码,脚本可以集成代码质量检查工具,如`checkstyle`或`lint`,确保代码符合编码规范。 6. **触发构建**:当新的提交发生时,脚本可以触发持续集成(CI)系统的构建,实现...

    JAVA 软件开发 Eclipse 中文教程 完美版

    6. **插件扩展**:Eclipse拥有丰富的插件生态系统,如Mylyn用于任务管理,Subversive或Git用于版本控制,PMD和Checkstyle用于代码质量检查等,这些插件能进一步提升开发效率。 **Java编程基础** 1. **语法基础**:...

    studio常用插件

    6. **Checkstyle**: 代码风格统一对于团队协作至关重要,Checkstyle插件可以检查代码风格,确保代码符合设定的规范。 7. **FindBugs**: FindBugs能检测出潜在的代码错误,帮助开发者在早期阶段发现并修复问题,提高...

    587104662889319dormitoryms-eclipse1.zip

    由于标签为空,我们无法获取更多上下文信息,因此我将根据一般Eclipse项目的特点和常见的开发实践来讲解相关知识点。 1. **Eclipse IDE**: Eclipse是一款开源的集成开发环境(IDE),广泛用于Java应用程序的开发,...

    IDEA中Gradle学习指南.pdf

    常见的控制命令有`gradle build`、`gradle clean`、`gradle test`等。 #### 四、整合JUnit5 要使用JUnit5进行单元测试,首先需要在`build.gradle`文件中添加JUnit5的依赖。然后,在测试代码中编写测试用例并使用...

    ESIGELEC_JEE_JavaClassValidator:这个项目的主要问题是运行java代码,如果有人就输出错误

    1. **错误检测器**:这是一个用于检查Java类的工具,它可能扫描代码以查找常见的编程错误,如未初始化的变量、不正确的异常处理、非法的类型转换等。 2. **单元测试框架**:项目可能集成了JUnit或TestNG这样的单元...

Global site tag (gtag.js) - Google Analytics