前往小程序,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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
技术趣味史-Java语言的身世
时间回到 1990 年 12 月,一个叫做 帕特里克·诺顿 的大佬被他公司 Sun 开发的 C++ 和 C语言编译器搞得头大,主要是因为当时 C语言 对一些硬件和系统的支持性并不好,导致一些 API (函数) 特别难用。在这之后,他又和公司另外几位大佬开展一个名为 Green 的计划(之前被称为 Stealth 计划),其中一位大佬就是被称为 “Java 之父” 的 詹姆斯·高斯林。几个大佬高瞻远瞩,觉得未来是智能电器时代,所以决定开展用于电器领域的技术研究。
Wizey
2018/12/17
5900
技术趣味史-Java语言的身世
Cobalt Strike已死?如何真正意义上的入门免杀
本文章以原生的cs为基础进行免杀来进行简单的闲谈和讲解,内容版本从 cs4.5-cs4.9.1。
乌鸦安全
2024/03/15
3.7K0
Cobalt Strike已死?如何真正意义上的入门免杀
二次开发CobaltStrike
默认的CobaltStrike内存在多处流量特征,在马儿与服务端建立连接时进行流量交互.此间存在多处可疑特征已被各大杀软记录在册 如:卡巴斯基,诺顿,迈克菲等,但国内杀软并无此功能. 所以在客户端进行免杀的同时服务端在流量交互方面也需要特征去除,才产生了二次开发后CobaltStrike. 此次二开为CobaltStrike4.1版本.
天钧
2021/04/26
1.8K0
二次开发CobaltStrike
Petya勒索蠕虫完全分析报告
目录 第一章 前言 第二章 Petya老样本简介 第三章 Petya新样本详细介绍 第四章 Petya勒索蠕虫感染传播趋势分析 第五章 Petya横向移动及传播技术分析 1. 提升权限,设置执行标记 2. MBR修改 3. 设置重启计划任务 4. 遍历IP 5. 释放并运行资源 6. 枚举网络资源 7. 使用永恒之蓝漏洞攻击 8. 文件加密 9. 清除日志并重启 第六章 Petya勒索加密技术分析 1. 篡改MBR 2. 加密文件 第七章 Petya勒索杀毒软件攻防分析 第八章 总结 第一章 前言 2017
FB客服
2018/02/28
1.2K0
Petya勒索蠕虫完全分析报告
新型Android恶意软件可对手机造成物理损坏
由于最近加密货币价格大幅上涨,无论是黑客还是网站管理员都在越来越多地使用基于JavaScript的挖矿脚本,通过利用访客PC的CPU能力来挖掘比特币或其他加密货币。 就在上周,AdGuard的研究人员发现,一些流行的视频流站点,包括openload,Streamango,Rapidvideo和OnlineVideoConverter都利用了访客的CPU来挖掘Monero加密货币。 现在,俄罗斯网络安全公司卡巴斯基实验室的研究人员发现了一个潜伏在假冒反病毒和色情应用中的新型Android恶意软件,它能够执
FB客服
2018/02/26
9100
新型Android恶意软件可对手机造成物理损坏
第三讲 直流电路常用定理
电路的一般分析方法,功能强大,适用于对一个复杂电路的全域分析,但是人工解方程、工作量超乎想象。不过有时候我们并不需要对一个电路做全域分析。这里介绍直流电路中的几个常用的定理,使用这些定理可以简化电路分析,特别是对于一个复杂电路中局部电路或个别支路的分析,非常有效。因为是初学,虽然讲的是直流电路,当然这些定理也可推广到交流电路。
华东子
2024/11/12
1550
第三讲 直流电路常用定理
​国内优秀公共 DNS 服务
诺顿以其出色的防病毒,互联网安全服务和产品而闻名。他们的 DNS 服务器也不会令人失望。
用户8418197
2021/12/26
12.6K0
优思学院|平衡计分卡是什么?
平衡计分卡(Balanced ScoreCard, BSC)是一种管理系统,它为内部业务流程和外部结果提供反馈,以持续改进战略绩效和结果。通过整合内部流程和外部结果的衡量指标,平衡计分卡支持在战略绩效和结果水平上的持续改进。
用户2865703
2023/03/22
4720
优思学院|平衡计分卡是什么?
原来用户隐私是这样被泄露:超八成搜索网站将信息出售
互联网时代给用户带来了极大地便利,但也让个人隐私信息无处躲藏。打开电商购物平台,APP的精准推荐总是让人感到不安;打开搜索平台,跳出的智能搜索记录着浏览行为;打开娱乐软件,推荐算法让用户逐渐沉迷其中......
FB客服
2022/11/14
3750
原来用户隐私是这样被泄露:超八成搜索网站将信息出售
九大减小数据泄密负面影响方法
数据泄密是公司企业最担心的问题,也是不得不面临的严峻现实。但是除了准备好一项数据泄密响应计划外,IT部门怎样才能最有效地预防和缓解数据泄密事件呢?不妨看看下面九个方法。   1. 落实一项到位的信息安
安恒信息
2018/04/09
6610
科技爱好者周刊:第 95 期
本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐你的项目。
ruanyf
2020/02/25
8080
这次,我被粉丝给喷了。。。
推荐阅读: 《定了,安排!最后倒计时 3 天!》 《我上班没有被卷死,没想到自由职业反而被卷死了。。。》 1 揭秘被喷 是这样子的,我这段时间不是都在B站更新视频么,昨天刚好发布了一个:揭秘培训机构 6 大坑人套路的视频。 然后呢。 这位读者可能看到了,应该是非常不认可我的观点,于是把视频转发到了我的读者群里面。 昨晚已经23点了,在群里噼里啪啦对我批判了一番,然后自己就退群了,完全不给解释的机会。 其实我觉得视频内容还行吧,只是说了一下线下培训机构现状,并没有否定培训机构的价值。 并且呀。 我也是从培
纯洁的微笑
2022/03/04
2340
无需免杀获取域控hash小技巧
对mimikatz进行免杀后抓取出网机器中的明文及Hash信息,恰好域管曾登录过这台机器,利用抓取到的域管信息去连接域控机器。
小生观察室
2021/09/17
8740
无需免杀获取域控hash小技巧
谷歌系进军网络安全:字母表开出第13家子公司,名叫编年史
谷歌母公司Alphabet(字母表)成立了旗下第13个子公司:Chronicle LLC(编年史)。 1月24日,Alphabet宣布了这项消息。Chronicle是一家网络安全公司,致力于用人工智能(AI)改善企业的网络安全。 据路透社1月25日报道,Chronicle会向财富杂志500强公司销售网络安全软件。此举意味着,谷歌母公司即将成为企业计算机市场中强有力的竞争对手。 上述报道中介绍,Chronicle基于这样一种假定:利用人工智能,机器学习软件能够筛选和分析大量数据,比传统方法更快、更精准地检
企鹅号小编
2018/02/02
5400
谷歌系进军网络安全:字母表开出第13家子公司,名叫编年史
Java 之父 Jame:差点把 Java 命名成了 Silk(丝绸)
Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关:如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans(对象豆)等等。SUN和JAVA的标识也正是一杯正冒着热气的咖啡。
纯洁的微笑
2019/05/06
5620
Java 之父 Jame:差点把 Java 命名成了 Silk(丝绸)
怎么完全卸载赛门铁克_Symantec卸载方法,赛门铁克卸载「建议收藏」
1、首先在服务里面设置所有Symantec开头的系统服务为禁止(控制面板-管理工具-服务),重启后在命令行运行:smc -stop;(stop需要密码就关掉先)
全栈程序员站长
2022/08/10
13.6K1
一文辨析 Java、JSP、JavaScript
Java 是印度尼西亚“爪哇岛”的英文名,因气候环境,地理位置等因素盛产咖啡而闻名。Java 语言中的许多命名都与其有关:如JavaBeans。所以 Sun 和 Java 的 Logo 是个非常形象的图标—冒热气儿的咖啡
攻城狮杰森
2022/06/03
4060
一文辨析 Java、JSP、JavaScript
解决ccSvcHst.exe CPU占用超50%的问题,及其缘由
无意中发现任务管理器中一个非常奇特的进程,迅速吃掉了我50%的cpu资源,并且是持续性的,于是上google一番查找,终于有了新的发现。
全栈程序员站长
2022/07/09
1.3K0
怎么完全卸载赛门铁克_如何干净彻底卸载诺顿?
诺顿有那么难卸载吗?我来教你如何彻底卸载诺顿! 本方法跟重装的新系统差不多,没痕迹!
全栈程序员站长
2022/09/06
3.6K0
实战 | 记一次Bypass国外杀毒的主机渗透经历
这个好,直接jboss,一般可先尝试弱口令后台部署war包,后门文件进行压缩,改名为“.war”:
HACK学习
2021/06/24
2.2K0
实战 | 记一次Bypass国外杀毒的主机渗透经历
推荐阅读
相关推荐
技术趣味史-Java语言的身世
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档