前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >checkstyle使用_idea checkstyle

checkstyle使用_idea checkstyle

作者头像
全栈程序员站长
发布于 2022-09-20 08:10:50
发布于 2022-09-20 08:10:50
1.3K0
举报

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

l JavadocPackage

检查每个java package中是否有java注释文件,默认是允许一个package-info.java,也可以通过allowLegacy属性配置允许package.html。

l JavadocType

检查类和接口的javadoc。默认不检查author 和version tags。

l JavadocMethod

检查方法和构造函数的javadoc。默认不检查未使用的异常抛出。

l JavadocVariable

检查变量的javadoc。

l JavadocStyle

检查javadoc的格式。比如:javadoc的第一行是否以句号结束,javadoc除了tags外是否有description,检查javadoc中的html格式。

l WriteTag

输出javadoc中的tag。

Naming Conventions

l AbstractClassName

检查抽象类名。

l ClassTypeParameterName

检查类的Parameter名。

l ConstantName

检查常量名。

l LocalFinalVariableName

检查局部的final类型变量名,包括catch的参数。

l LocalVarableName

检查局部的非final类型的变量名,包括catch的参数。

l MemberName

检查非静态变量。

l MethodName

检查方法名。

l MethodTypeParameterName

检查方法的参数名。

l PackageName

检查包名。

l ParameterName

检查参数名。

l StaticVariableName

检查静态的,非final类型的变量名。

l TypeName

检查类名和接口名。

Imports

l AvoidStarImport

检查是否有使用*进行import。

l AvoidStaticImport

检查是否有静态import。比如是否导入了java.lang包中的内容。

l IllegalImport

检查是否import了违法的包。默认拒绝import所有sun.*包。

l RedundanImport

检查是否有重复的import。

l UnusedImports

检查是否有未使用的import。

l ImportOrder

检查import的分组和顺序。

l ImportControl

控制可import的包。在一个较大的project可限制使用过多的第三方包,通过一个依照http://www.puppycrawl.com/dtds/import_control_1_0.dtd的xml文件来指定。

Size Violations

l ExecutableStatementCount

限制可执行代码片段的长度。默认为30。

l FileLength

检查java文件的长度。默认为2000。

l LineLength

检查代码行的长度。默认为80。

l MethodLength

检查方法和构造函数的长度。默认为150。

l AnonInnerLength

检查匿名内部类的长度。默认为20。

l ParameterNumber

检查方法和构造函数的参数个数。默认为7。

Whitespace

l GenericWhitespace

检查<和>周围的空白。

l EmptyForInitializerPad

检查空的初始化位置的空白。比如for循环中的初始化。

l EmptyForIteratorPad

检查空的迭代位置的空白。

l MethodParamPad

检查方法签名之前的空白。

l NoWhitespaceAfter

检查分隔符后的空白。

l NoWhitespaceBefore

检查分隔符前的空白。

l OperatorWrap

检查操作符的空白规则。

l ParenPad

检查圆括号的空白规则。

l TypecaseParenPad

检查强制转型的圆括号的空白规则。

l TabCharacter

检查是否有Tab字符(’”t’)。

l WhitespaceAfter

检查分隔符是否在空白之后。

l WhitespaceAround

检查分隔符周围是否有空白。

ModifierOrder

l ModifierOrder

检查修饰符的顺序是否遵照java语言规范。

l RedundantModifier

检查接口和annotation中是否有重复的修饰符。

Block Checks

l EmptyBlock

检查空的代码块。

l LeftCurly

检查’{’和左边的代码块是否在同一行。

l NeedBraces

检查是否需要大括号。主要是在if,else时的情况。

l RightCurly

检查’}’。

l AvoidNestedBlocks

检查不需要的嵌套’{}’。

Coding

l ArrayTrailingComma

检查数组初始化是否以逗号结束。

l AvoidInlineConditionals

检查inline的条件操作。

l CovariantEquals

检查类是否覆盖了equals(java.lang.Object)。

l DoubleCheckedLocking

检查DCL的问题。

l EmptyStatement

检查空的代码段。

l EqualsAvoidNull

检查一个可能为null的字符串是否在equals()比较的左边。

l EqualsHashCode

检查类是否覆盖了equals()和hashCode()。

l FinalLocalVariable

检查未改变过的局部变量是否声明为final。

l HiddenField

检查局部变量或参数是否隐藏了类中的变量。

l IllegalInstantiation

检查是否使用工厂方法实例化。

l IllegalToken

检查非法的分隔符。

l IllegalTokenText

检查非法的分隔符的下个字符。

l InnerAssignment

检查子表达式中是否有赋值操作。

l MagicNumber

检查是否有“magic numbers”。

l MissingSwitchDefault

检查switch语句是否有default的clause。

l ModifiedControlVariable

检查循环控制的变量是否在代码块中被修改。

l RedundantThrows

检查是否有被重复抛出的异常。

l SimplifyBooleanExpression

检查是否有过度复杂的布尔表达式。

l SimplifyBooleanReturn

检查是否有过于复杂的布尔返回代码段。

l StringLiteralEquality

检查字符串是否有用= =或!=进行操作。

l NestedIfDepth

检查嵌套的层次深度。

l NestedTryDepth

检查try的层次深度。

l NoClone

检查是否覆盖了clone()。

l NoFinalizer

检查是否有定义finalize()。

l SuperClone

检查覆盖的clone()是否有调用super.clone()。

l SuperFinalize

检查覆盖的finalize()是否有调用super.finalize()。

l IllegalCatch

检查是否catch了不能接受的错误。

l IllegalThrows

检查是否抛出了未声明的异常。

l PackageDeclaration

检查类中是否有声明package。

l JUnitTestCase

确保setUp(), tearDown()方法签名的正确性。

l ReturnCount

限制return代码段的数量。

l IllegalType

检查未使用过的类。

l DeclarationOrder

检查类和接口中的声明顺序。

l ParameterAssignment

检查不允许的参数赋值。

l ExplicitInitialization

检查类和对象成员是否初始化为默认值。

l DefaultComesLast

检查default的clause是否在switch代码段的最后。

l MissingCtor

检查类依赖。

l FallThrough

检查switch代码的case中是否缺少break,return,throw和continue。

l MultipleStringLiterals

检查一个文件中是否有多次出现的字符串。

l MultipleVariableDeclarations

检查代码段和代码行中是否有多次变量声明。

l RequireThis

检查代码中是否有“this.”。

l UnnecessaryParentheses

检查是否有使用不需要的圆括号。

Class Design

l VisibilityModifier

检查类成员的可见度。

l FinalClass

检查只有private构造函数的类是否声明为final。

l InterfaceIsType

检查接口是否仅定义类型。

l HideUtilityClassConstructor

检查工具类是否有putblic的构造器。

l DesignForExension

检查类是否为扩展设计。

l MutableException

确保异常是不可变的。

l ThrowsCount

限制抛出异常的数量。

Duplicate Code

l StrictDuplicateCode

严格检查重复代码。

Miscellaneous

l GenericIllegalRegexp

正则表达式的模式检查。

l NewlineAtEndOfFile

检查文件是否以一个空行结束。

l TodoComment

检查TODO:注释。

l Translation

检查property文件中是否有相同的key。

l UncommentedMain

检查是否有未注释的main方法。

l UpperEll

检查long型约束是否有大写的“L”。

l ArrayTypeStyle

检查数组类型定义的样式。

l FinalParameters

检查方法名、构造函数、catch块的参数是否是final的。

l Indentation

检查代码中正确的缩进。

l TrailingComment

确保是否要代码行注释。

l 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

“)” 前面不能有空格

转载自–http://www.blogjava.net/askcuix/archive/2009/02/08/253775.html

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167884.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
IDEA checkStyle
打开IDEA安装路径下的 idea64.exe.vmoptions 末尾处 添加 -Duser.language=en
qubianzhong
2018/09/19
1.6K0
IDEA checkStyle
提高Java代码质量的Eclipse插件之Checkstyle的使用详解
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要但是枯燥的任务中解脱出来。 CheckStyle检验的主要内容  ·Javadoc注释  ·命名约定  ·标题  ·Import语句  ·体积大小  ·空白  ·修饰符  ·块  ·代码问题  ·类设计  ·混合检查(包活一些有用的比如非必须的System.out和printstackTrace) 从上面可以看出,
大闲人柴毛毛
2018/03/09
1.9K0
Checkstyle提示
解决方法:在方法前得注释中添加这样一行:* @throws Exception if has error(异常说明)
麦克劳林
2018/09/11
1.8K0
使用Eclipse插件提高Java编码质量
代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍。也请有代码质量管理经验的朋友提出宝贵的意见。  代码质量所涉及的5个方面:编码标准、代码重复、代码覆盖率、依赖项分析、复杂度分析。这5个方面很大程序上决定了一份代码的质量高低。我们分别来看一下这5方面:  编码标准:这个想必都很清楚,每个公司几乎都有一份编码规范,类命名、包命名、代码风格之类的东西都属于其中
大闲人柴毛毛
2018/03/09
1.8K0
使用Eclipse插件提高Java编码质量
怎样编写高质量的Java代码
代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍。也请有过代码质量相关经验的朋友提出宝贵的意见。 代码质量所涉及的5个方面,编码标准、代码重复、代码覆盖率、依赖项分析、复杂度分析。这5方面很大程序上决定了一份代码的质量高低。我们分别来看一下这5方面: 编码标准:这个想必都很清楚,每个公司几乎都有一份编码规范,类命名、包命名、代码风格之类的东西都属于其中。 代码重复:顾名思义就
用户1257393
2018/03/21
1.3K0
怎样编写高质量的Java代码
Java编程风格
Java编程的风格介绍,主要参考乐google的java code style。对模糊部分作出了明确的选择。
白凡
2018/08/07
2.2K0
Google Java 编程风格指南
这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。
芋道源码
2019/05/13
1.2K0
Java 编程风格军规,看这一篇就够了
这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。
框架师
2019/09/19
1K0
Java 编程风格军规,看这一篇就够了
Google Java编程风格规范(2020年4月原版翻译)
这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。
acc8226
2022/05/17
1.2K0
Google Java编程风格指南
这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则,我们才认为它符合Google的Java编程风格。
Abalone
2022/07/14
1.1K0
Javapoet源码解析
github:https://github.com/square/javapoet
yuanyuan
2019/09/02
9400
最全面的 Android 编码规范指南
这份文档参考了 Google Java 编程风格规范和 Google 官方 Android 编码风格规范。该文档仅供参考,只要形成一个统一的风格,见量知其意就可。
哲洛不闹
2018/09/18
1.9K0
最全面的 Android 编码规范指南
Proguard 常用规则
为了决定哪些代码要被保留哪些代码要出丢弃和混淆,必须指定入口点。这些入口点通常是 main方法,activity,service等。
佛系编码
2019/12/11
1.9K0
Android代码规范利器: Checkstyle
程序代码向来都不仅仅是用来运行的,写的一手好代码,易读,可维护应该是每个程序员所追求的。
技术小黑屋
2018/09/05
1.6K0
Android代码规范利器: Checkstyle
Java中的屠龙之术(二):如何方便快捷地生成.class文件
在之前的“Java中的屠龙之术:如何修改语法树”中,我们详细介绍了如何使用Javac源码提供的工具类来修改语法树。
程序员黄小斜
2021/12/14
7970
使用checkstyle来规范你的项目
自从做了程序员,关于格式化的讨论就不曾中断过,到底什么才是正确的,什么才是错误的,到现在也没有完整的定论。但随着时间发展,渐渐衍生出一套规范出来。没有什么绝对的正确和错误,关键在于规范的定义。最出名的就是google style guide. Checkstyle就是以这种风格开发出的一个自动化插件,来辅助判断代码格式是否满足规范。
Ryan-Miao
2018/08/01
2.2K0
Java的三种注释
包含在“/*”和“*/”之间,能注释很多行的内容。为了可读性比较好,一般首行和尾行不写注释信息(这样也比较美观好看),如图所示。
全栈程序员站长
2022/09/08
9110
Java的三种注释
Google checkstyle实战
CheckStyle检查代码是否符合制定的规范。CheckStyle检查是基于源码的,无需编译,执行速度快。
johnny666
2024/09/15
1790
一文读懂 ESLint配置
博主看来很多网络上的视频教程,发现对ESLint配置的介绍是比较少的。但ESLint是很有用的,一个项目是否健全,多人开发一个项目时,能否实现代码风格一致,ESLint在这个过程中是不可替代的。今天就来详细介绍ESLint配置规则,与推荐一些基础的配置。
Qiuner
2024/08/06
5100
一文读懂 ESLint配置
Java枚举和注解
对于季节而已,他的对象(具体值),是固定的四个,不会有更多。一般的类设计类的思路,不能体现季节是固定的四个对象。采用枚举类。
timerring
2023/04/21
4490
Java枚举和注解
相关推荐
IDEA checkStyle
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档