CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。

idea版(版本:2018.2)

在idea中集成CheckStyle

File->Setting->Plugins至下图界面,搜索CheckStyle-IDEA,点击安装。

在idea中使用CheckStyle

第一步,使CheckStyle在idea中生效

settings->Editor->Inspections

第二步,添加配置文件,即为CheckStyle配置检测的规范,设定需要的代码规范

以下是配置文件的一个样本:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC"-//Puppy Crawl//DTD Check Configuration 1.3//EN""http://www.puppycrawl.com/dtds/configuration_1_3.dtd"><module name="Checker"><!--If you set the basedir property below, then all reported filenames will be relative to the specified directory. See
http://checkstyle.sourceforge.net/5.x/config.html#Checker<property name="basedir" value="${basedir}"/>--><!-- 检查每个包中是否有java注释文件,默认有package-info.java --><!-- <module name="JavadocPackage"/> --><!-- 检查文件是否以一个空行结束 --><module name="NewlineAtEndOfFile"/><!-- 检查property文件中是否有相同的key --><module name="Translation"/><!-- 文件长度不超过1500行 --><module name="FileLength"><property name="max" value="1500"/></module><!-- 检查文件中是否含有'\t' --><module name="FileTabCharacter"/><!-- Miscellaneous other checks. --><module name="RegexpSingleline"><property name="format" value="\s+$"/><property name="minimum" value="0"/><property name="maximum" value="0"/><property name="message" value="Line has trailing spaces."/></module><!-- 每个java文件一个语法树 --><module name="TreeWalker"><!-- 注释检查 --><!-- 检查方法和构造函数的javadoc --><module name="JavadocMethod"><property name="tokens" value="METHOD_DEF" /></module><!-- 检查类和接口的javadoc。默认不检查author和version tags --><module name="JavadocType"/><!-- 检查变量的javadoc --><module name="JavadocVariable"/><!-- 检查javadoc的格式 --><module name="JavadocStyle"><property name="checkFirstSentence" value="false"/></module><!-- 检查TODO:注释 --><module name="TodoComment"/><!-- 命名检查 --><!-- 局部的final变量,包括catch中的参数的检查 --><module name="LocalFinalVariableName" /><!-- 局部的非final型的变量,包括catch中的参数的检查 --><module name="LocalVariableName" /><!-- 包名的检查(只允许小写字母),默认^[a-z]+(\.[a-zA-Z_][a-zA-Z_0-9_]*)*$ --><module name="PackageName"><property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" /><message key="name.invalidPattern" value="包名 ''{0}'' 要符合 ''{1}''格式."/></module><!-- 仅仅是static型的变量(不包括static final型)的检查 --><module name="StaticVariableName" /><!-- Class或Interface名检查,默认^[A-Z][a-zA-Z0-9]*$--><module name="TypeName"><property name="severity" value="warning"/><message key="name.invalidPattern" value="名称 ''{0}'' 要符合 ''{1}''格式."/></module><!-- 非static型变量的检查 --><module name="MemberName" /><!-- 方法名的检查 --><module name="MethodName" /><!-- 方法的参数名 --><module name="ParameterName " /><!-- 常量名的检查(只允许大写),默认^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$ --><module name="ConstantName" /><!-- 定义检查 --><!-- 检查数组类型定义的样式 --><module name="ArrayTypeStyle"/><!-- 检查方法名、构造函数、catch块的参数是否是final的 --><!-- <module name="FinalParameters"/> --><!-- 检查long型定义是否有大写的“L” --><module name="UpperEll"/><!-- Checks for Headers                                --><!-- See http://checkstyle.sf.net/config_header.html   --><!-- <module name="Header">                            --><!-- The follow property value demonstrates the ability     --><!-- to have access to ANT properties. In this case it uses --><!-- the ${basedir} property to allow Checkstyle to be run  --><!-- from any directory within a project. See property      --><!-- expansion,                                             --><!-- http://checkstyle.sf.net/config.html#properties        --><!-- <property                                              --><!--     name="headerFile"                                  --><!--     value="${basedir}/java.header"/>                   --><!-- </module> --><!-- Following interprets the header file as regular expressions. --><!-- <module name="RegexpHeader"/>                                --><!-- import检查--><!-- 避免使用* --><module name="AvoidStarImport"/><!-- 检查是否从非法的包中导入了类 --><module name="IllegalImport"/><!-- 检查是否导入了多余的包 --><module name="RedundantImport"/><!-- 没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的 --><module name="UnusedImports" /><!-- 长度检查 --><!-- 每行不超过150个字符 --><module name="LineLength"><property name="max" value="150" /></module><!-- 方法不超过150行 --><module name="MethodLength"><property name="tokens" value="METHOD_DEF" /><property name="max" value="150" /></module><!-- 方法的参数个数不超过5个。 并且不对构造方法进行检查--><module name="ParameterNumber"><property name="max" value="10" /><property name="ignoreOverriddenMethods" value="true"/><property name="tokens" value="METHOD_DEF" /></module><!-- 空格检查--><!-- 方法名后跟左圆括号"(" --><module name="MethodParamPad" /><!-- 在类型转换时,不允许左圆括号右边有空格,也不允许与右圆括号左边有空格 --><module name="TypecastParenPad" /><!-- Iterator --><!-- <module name="EmptyForIteratorPad"/> --><!-- 检查尖括号 --><!-- <module name="GenericWhitespace"/> --><!-- 检查在某个特定关键字之后应保留空格 --><module name="NoWhitespaceAfter"/><!-- 检查在某个特定关键字之前应保留空格 --><module name="NoWhitespaceBefore"/><!-- 操作符换行策略检查 --><module name="OperatorWrap"/><!-- 圆括号空白 --><module name="ParenPad"/><!-- 检查分隔符是否在空白之后 --><module name="WhitespaceAfter"/><!-- 检查分隔符周围是否有空白 --><module name="WhitespaceAround"/><!-- 修饰符检查 --><!-- 检查修饰符的顺序是否遵照java语言规范,默认public、protected、private、abstract、static、final、transient、volatile、synchronized、native、strictfp --><module name="ModifierOrder"/><!-- 检查接口和annotation中是否有多余修饰符,如接口方法不必使用public --><module name="RedundantModifier"/><!-- 代码块检查 --><!-- 检查是否有嵌套代码块 --><module name="AvoidNestedBlocks"/><!-- 检查是否有空代码块 --><module name="EmptyBlock"/><!-- 检查左大括号位置 --><module name="LeftCurly"/><!-- 检查代码块是否缺失{} --><module name="NeedBraces"/><!-- 检查右大括号位置 --><module name="RightCurly"/><!-- 代码检查 --><!-- 检查是否在同一行初始化 --><!-- <module name="AvoidInlineConditionals"/> --><!-- 检查空的代码段 --><module name="EmptyStatement"/><!-- 检查在重写了equals方法后是否重写了hashCode方法 --><module name="EqualsHashCode"/><!-- 检查局部变量或参数是否隐藏了类中的变量 --><module name="HiddenField"><property name="tokens" value="VARIABLE_DEF"/></module><!-- 检查是否使用工厂方法实例化 --><module name="IllegalInstantiation"/><!-- 检查子表达式中是否有赋值操作 --><module name="InnerAssignment"/><!-- 检查是否有"魔术"数字 --><module name="MagicNumber"><property name="ignoreNumbers" value="0, 1"/><property name="ignoreAnnotation" value="true"/></module><!-- 检查switch语句是否有default --><module name="MissingSwitchDefault"/><!-- 检查是否有过度复杂的布尔表达式 --><module name="SimplifyBooleanExpression"/><!-- 检查是否有过于复杂的布尔返回代码段 --><module name="SimplifyBooleanReturn"/><!-- 类设计检查 --><!-- 检查类是否为扩展设计l --><!-- <module name="DesignForExtension"/> --><!-- 检查只有private构造函数的类是否声明为final --><module name="FinalClass"/><!-- 检查工具类是否有putblic的构造器 --><module name="HideUtilityClassConstructor"/><!-- 检查接口是否仅定义类型 --><module name="InterfaceIsType"/><!-- 检查类成员的可见度 --><module name="VisibilityModifier"/><!-- 其他检查 --><!-- 文件中使用了System.out.print等<module name="GenericIllegalRegexp"><property name="format" value="System\.out\.print"/></module><module name="GenericIllegalRegexp"><property name="format" value="System\.exit"/></module><module name="GenericIllegalRegexp"><property name="format" value="printStackTrace"/></module>--><!-- 代码质量 --><!-- 圈复杂度<module name="CyclomaticComplexity"><property name="max" value="2"/></module> --></module>
</module>

步骤:首先在本地新建一个XML文件,将上面的代码保存到XML文件中,打开
settings->CheckStyle,如下图,点击+

在弹出的小窗口中选择我们刚才保存到本地的配置文件

点击Next后点击Finsh,完成配置。

  • CheckStyle检验的主要内容
  • Javadoc注释
  • 命名约定
  • 标题
  • Import语句
  • 体积大小
  • 空白
  • 修饰符
  • 代码问题
  • 类设计
  • 混合检查(包括一些有用的比如非必须的System.out和printstackTrace)
第三步,测试我们配置的CheckStyle是否生效

首先,选择我们配置的规则

然后创建一段不怎么符合规范的代码

public class TestCheck {public void Mytest(){System.out.println("这是一个不符合命名规范的方法");}
}

然后右击选择Check Current File

点击之后,我们可以看到,CheckStyle帮我们指出了代码中的不规范

在idea中使用CheckStyle来规范代码相关推荐

  1. idea,配置checkstyle 【提高代码质量,检查代码规范的工具 】Checkstyle,FindBugs,PMD,Jtest

    idea,配置checkstyle [提高代码质量,检查代码规范的工具 ]Checkstyle,FindBugs,PMD,Jtest 2016年12月15日 14:19:02 common_util ...

  2. 再议.Net中null的使用规范

    在上一文中,论述两个.Net Framework对null应用不够合理的例子.大家评论中,给出了不少指导性意见,这里也对.Net中null的使用规范作一下总结. 1. Empty代表瓶子是空的,nul ...

  3. 敲代码就是一把梭_2020必看!开发五年的大佬日常工作中所使用的java代码技巧...

    前言 罗列工作中实际使用的一些代码技巧或者叫工具类;知识无大小,希望大家都有收获 实用技巧 rpc服务出参统一化 什么,出参统一化有什么好说的????? 我不知道你们有没有遇到过多少五花八门的外部服务 ...

  4. Eclipse中的checkstyle插件

    一.Checkstyle工具 Checkstyle是一款检查Java程序源代码样式的工具,它可以有效的帮助我们检视代码以便更好的遵循代码编写标准. 官方地址:http://checkstyle.sou ...

  5. SpringBoot项目中,如何更规范的使用PageHelper分页?

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 作者:臣 ...

  6. 项目中使用粘性布局不起作用_项目中的 Git 使用规范

    祖师爷 Linus 在创造了伟大的 Linux 之后,又创造了应用最广泛的代码管理工具 -- Git,极大地提高了程序员的生产力. 现如今大部分项目都在使用 Git 作为代码管理工具,不论是在代码管理 ...

  7. pagehelper的使用_SpringBoot项目中,如何更规范的使用PageHelper分页?

    SpringBoot项目中,如何更规范的使用PageHelper分页,拉勾IT课小编为大家分解 一. 开发准备 1. 开发工具 • IntelliJ IDEA 2020.2.3 2. 开发环境 • R ...

  8. python代码大全中文注释_零基础小白必看篇:Python代码注释规范代码实例解析操作(收藏)...

    本文内容主要介绍了Python代码注释规范代码实例解析,通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下!!! 一.代码注释介绍 注释就是对代码的解释和说明 ...

  9. python代码_零基础小白必看篇:Python代码注释规范代码实例解析操作(收藏)

    本文内容主要介绍了Python代码注释规范代码实例解析,通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下!!! 一.代码注释介绍 注释就是对代码的解释和说明 ...

最新文章

  1. mysql安全无密码登录_技术分享 | 安全地无密码登录 MySQL
  2. 用Socket 打造跨语言跨操作系统的网络MORPG游戏(三)
  3. cf831D(dp)
  4. ANN:DNN结构演进History—LSTM网络
  5. html 模板中的for循环,Flask模板引擎中的For循环
  6. openssl 生成证书_使用证书和私钥导出P12格式个人证书!
  7. 轻量级.Net Core服务注册工具CodeDi发布啦
  8. 240多个jQuery插件 (转)
  9. java 大小写转换函数_不使用Java中的任何库函数将大写转换为小写
  10. plecs matlab 联合仿真,基于Matlab和PLECS的电力电子仿真实验教学
  11. python cad 二次开发bom_python处理BOM
  12. 阿铭Linux_网站维护学习笔记20190408
  13. matlab已经停止工作,Win7旗舰版运行Matlab提示已停止工作解决措施
  14. css 剪辑图片_[译]用CSS剪切圆形图片
  15. python做事务所审计收费标准_会计师事务所审计收费标准?2019审计报告收费标准...
  16. 在Js和Java自动生成账号的方法
  17. 文献阅读(60)ACL2021-Attention Calibration for Transformer in Neural Machine Translation
  18. 多态的综合练习(Java)
  19. quartz的使用(一)
  20. java picked up,抑制“Picked up _JAVA_OPTIONS”信息

热门文章

  1. OLED电视出现烧屏问题 LG电子被判赔偿消费者16万澳元
  2. 拼多多董事会变更:董事6人变5人 张震不再出任
  3. 甲骨文中国疯狂裁员 招聘网站上线“甲骨文人才专场”
  4. 外媒晒一加7 Pro相机实拍样张:不惧极速F1赛车
  5. 小米8大幅降价促销 性价比十足!
  6. 这款App因涉嫌传销被罚7456万:会员层级达51级 收取佣金4.5亿
  7. 《流浪地球》内地票房超《红海行动》北美上映11天成绩不俗
  8. 雷军微博“导购”小米8 SE:名副其实的小屏旗舰!
  9. 程序员离职后12天,被前领导命令回去讲清代码?小伙直接说收费
  10. windows linux复制文件夹命令,ubuntu下复制目录和文件的指令以及和windows下的copy方式...