最近在搞代码规范的问题,有了规范自然要有检查是否符合规范的措施,于是自然了解到了 checkstyle 。

官网地址:https://checkstyle.org/

插件使用

在AndroidStudio中直接搜索上面红框标注的插件并安装重启Studio即可。安装完后在设置页面可以对插件进行一些配置,如下:

插件使用比较简单,关键在于定义自己的checkstyle文件,下面附上一份自己根据google checkstyle更改的版本。

<module name="Checker"><!--字符集编码--><property name="charset" value="UTF-8" /><!--违规级别--><property name="severity" value="warning" /><!--可接受的文件扩展名--><property name="fileExtensions" value="java, properties, xml" /><!--检查文件是否包含制表符--><module name="FileTabCharacter"><property name="eachLine" value="true" /></module><!--检查Java源文件并定义一些适用于检查此类文件的一些属性--><module name="TreeWalker"><!--检查外部类型名称和文件名是否匹配,例如,类Foo必须位于名为Foo.java的文件中--><module name="OuterTypeFilename" /><!--检查不合规的文本--><module name="IllegalTokenText"><property name="tokens" value="STRING_LITERAL, CHAR_LITERAL" /><property name="format"value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)" /><property name="message"value="Consider using special escape sequence instead of octal value or Unicode escaped value." /></module><!--限制使用Unicode转义--><module name="AvoidEscapedUnicodeCharacters"><property name="allowEscapesForControlCharacters" value="true" /><property name="allowByTailComment" value="true" /><property name="allowNonPrintableEscapes" value="true" /></module><!--检查行长度--><module name="LineLength"><property name="max" value="200" /><!--mine--><!--可以忽略检查的行--><property name="ignorePattern"value="^package.*|^import.*|a href|href|http://|https://|ftp://" /></module><!--检查使用*表示的import语句--><module name="AvoidStarImport" /><!--检查每个顶级类,接口或枚举是否驻留在自己的源文件中--><module name="OneTopLevelClass" /><!--检查所选语句是否不是换行的--><module name="NoLineWrap" /><!--检查空块但不验证顺序块--><module name="EmptyBlock"><property name="option" value="TEXT" /><property name="tokens"value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH" /></module><!--检查代码块周围的大括号--><module name="NeedBraces"><!--允许没有大括号的单行语句--><property name="allowSingleLineStatement" value="true" /><!--mine--></module><!--检查代码块的左花括号('{')的位置--><module name="LeftCurly" /><!--检查右花括号的位置('}')--><module name="RightCurly"><property name="id" value="RightCurlySame" /><property name="tokens"value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_DO" /></module><module name="RightCurly"><property name="id" value="RightCurlyAlone" /><property name="option" value="alone" /><property name="tokens"value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT, INSTANCE_INIT" /></module><!--检查令牌是否被空格包围--><module name="WhitespaceAround"><property name="allowEmptyConstructors" value="true" /><property name="allowEmptyMethods" value="true" /><property name="allowEmptyTypes" value="true" /><property name="allowEmptyLoops" value="true" /><message key="ws.notFollowed"value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)" /><message key="ws.notPreceded"value="WhitespaceAround: ''{0}'' is not preceded with whitespace." /></module><!--检查每行只有一个语句--><module name="OneStatementPerLine" /><!--检查每个变量声明是否在它自己的语句中并且在它自己的行中--><module name="MultipleVariableDeclarations" /><!--检查数组类型定义的样式--><module name="ArrayTypeStyle" /><!--检查switch语句是否具有“default”子句--><module name="MissingSwitchDefault" /><!--检查switch语句--><module name="FallThrough" /><!--检查常量是否用大写定义--><module name="UpperEll" /><!--检查修饰符是否符合Java建议--><module name="ModifierOrder" /><!--检查空行分隔符--><module name="EmptyLineSeparator"><!--字段之间不允许空行--><property name="allowNoEmptyLineBetweenFields" value="true" /></module><!--检查使用分隔符的换行--><module name="SeparatorWrap"><property name="id" value="SeparatorWrapDot" /><property name="tokens" value="DOT" /><property name="option" value="nl" /></module><module name="SeparatorWrap"><property name="id" value="SeparatorWrapComma" /><property name="tokens" value="COMMA" /><property name="option" value="EOL" /></module><module name="SeparatorWrap"><!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/258 --><property name="id" value="SeparatorWrapEllipsis" /><property name="tokens" value="ELLIPSIS" /><property name="option" value="EOL" /></module><module name="SeparatorWrap"><!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/259 --><property name="id" value="SeparatorWrapArrayDeclarator" /><property name="tokens" value="ARRAY_DECLARATOR" /><property name="option" value="EOL" /></module><module name="SeparatorWrap"><property name="id" value="SeparatorWrapMethodRef" /><property name="tokens" value="METHOD_REF" /><property name="option" value="nl" /></module><!--检查包名称是否符合format属性指定的格式--><module name="PackageName"><property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" /><message key="name.invalidPattern"value="Package name ''{0}'' must match pattern ''{1}''." /></module><!--检查类型名称是否符合format属性指定的格式--><module name="TypeName"><message key="name.invalidPattern"value="Type name ''{0}'' must match pattern ''{1}''." /></module><!--检查实例变量名称是否符合format属性指定的格式--><module name="MemberName"><property name="format" value="^[a-z][a-zA-Z0-9]*$" /><!--mine--><message key="name.invalidPattern"value="Member name ''{0}'' must match pattern ''{1}''." /></module><!--检查参数名称是否符合format属性指定的格式--><module name="ParameterName"><property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" /><message key="name.invalidPattern"value="Parameter name ''{0}'' must match pattern ''{1}''." /></module><!--检查以验证lambda参数名称--><module name="LambdaParameterName"><property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" /><message key="name.invalidPattern"value="Lambda parameter name ''{0}'' must match pattern ''{1}''." /></module><!--检查catch参数名称是否符合format属性指定的格式--><module name="CatchParameterName"><property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" /><message key="name.invalidPattern"value="Catch parameter name ''{0}'' must match pattern ''{1}''." /></module><!--检查本地、非final变量名称是否符合format属性指定的格式--><module name="LocalVariableName"><property name="tokens" value="VARIABLE_DEF" /><property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$" /><message key="name.invalidPattern"value="Local variable name ''{0}'' must match pattern ''{1}''." /></module><!--检查类类型参数名称是否符合format属性指定的格式--><module name="ClassTypeParameterName"><property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" /><message key="name.invalidPattern"value="Class type name ''{0}'' must match pattern ''{1}''." /></module><!--检查方法类型参数名称是否符合format属性指定的格式--><module name="MethodTypeParameterName"><property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" /><message key="name.invalidPattern"value="Method type name ''{0}'' must match pattern ''{1}''." /></module><!--检查接口类型参数名称是否符合format属性指定的格式--><module name="InterfaceTypeParameterName"><property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)" /><message key="name.invalidPattern"value="Interface type name ''{0}'' must match pattern ''{1}''." /></module><!--验证类中没有定义finalize()方法--><module name="NoFinalizer" /><module name="GenericWhitespace"><message key="ws.followed"value="GenericWhitespace ''{0}'' is followed by whitespace." /><message key="ws.preceded"value="GenericWhitespace ''{0}'' is preceded with whitespace." /><message key="ws.illegalFollow"value="GenericWhitespace ''{0}'' should followed by whitespace." /><message key="ws.notPreceded"value="GenericWhitespace ''{0}'' is not preceded with whitespace." /></module><!--检查Java代码的正确缩进--><module name="Indentation"><!--换行默认缩进字符数--><property name="basicOffset" value="4" /><!--mine--><!--在下一行时,大括号应缩进多远--><property name="braceAdjustment" value="0" /><property name="caseIndent" value="4" /><!--mine--><property name="throwsIndent" value="4" /><property name="lineWrappingIndentation" value="4" /><property name="arrayInitIndent" value="4" /><!--mine--></module><!--检查连续大写字母的长度--><module name="AbbreviationAsWordInName"><property name="ignoreFinal" value="false" /><property name="allowedAbbreviationLength" value="3" /><!--mine--></module><!--检查重载方法是否组合在一起--><module name="OverloadMethodsDeclarationOrder" /><!--检查变量声明与其首次使用之间的距离--><module name="VariableDeclarationUsageDistance" /><!--检查导入声明组是否按用户指定的顺序显示--><module name="CustomImportOrder"><!--是否按字母顺序导包--><property name="sortImportsInGroupAlphabetically" value="false" /><!--mine--><property name="separateLineBetweenGroups" value="true" /><property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE" /></module><!--检查方法名称和左括号之间的空格--><module name="MethodParamPad" /><!--检查tokens指定的字符前面是否有空格--><module name="NoWhitespaceBefore"><property name="tokens"value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF" /><property name="allowLineBreaks" value="true" /></module><!--检查左括号后和右括号前是否需要空格--><module name="ParenPad" /><!--检查运算符上换行的策略--><module name="OperatorWrap"><property name="option" value="NL" /><property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR,LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF " /></module><!--检查语言元素上注释的位置--><module name="AnnotationLocation"><property name="id" value="AnnotationLocationMostCases" /><property name="tokens"value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF" /></module><module name="AnnotationLocation"><property name="id" value="AnnotationLocationVariables" /><property name="tokens" value="VARIABLE_DEF" /><property name="allowSamelineMultipleAnnotations" value="true" /></module><!--检查@子句后面的描述是否为空--><module name="NonEmptyAtclauseDescription" /><!--检查@子句的缩进--><module name="JavadocTagContinuationIndentation" /><!--检查Javadoc摘要语句是否包含不建议使用的短语--><module name="SummaryJavadoc"><property name="forbiddenSummaryFragments"value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )" /><!--指定第一个javadoc句末尾的结束符--><property name="period" value="" /><!--mine--></module><!--检查Javadoc段落--><module name="JavadocParagraph" /><!--检查@子句的顺序--><module name="AtclauseOrder"><property name="tagOrder" value="@param, @return, @throws, @deprecated" /><property name="target"value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" /></module><!--检查方法或构造函数的Javadoc--><module name="JavadocMethod"><property name="allowMissingJavadoc" value="true" /><!--mine--><property name="scope" value="public" /><property name="allowMissingParamTags" value="true" /><property name="allowMissingThrowsTags" value="true" /><property name="allowMissingReturnTag" value="true" /><property name="minLineCount" value="2" /><property name="allowedAnnotations" value="Override, Test" /><property name="allowThrowsTagsForSubclasses" value="true" /></module><!--检查方法名称是否符合format属性指定的格式--><module name="MethodName"><property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$" /><message key="name.invalidPattern"value="Method name ''{0}'' must match pattern ''{1}''." /></module><!--检查JavaDoc块是否可以放在一行中,并且不包含@子句--><module name="SingleLineJavadoc"><property name="ignoreInlineTags" value="false" /></module><!--检查空catch块--><module name="EmptyCatchBlock"><property name="exceptionVariableName" value="expected" /></module><!--控制注释和周围代码之间的缩进--><module name="CommentsIndentation" /></module>
</module>

CheckStyle使用总结相关推荐

  1. checkstyle安装使用

    2019独角兽企业重金招聘Python工程师标准>>> checkstyle安装使用 1. 按照安装findbugs的方式按照checkstyle插件 安装过程中的截图如下: 受网速 ...

  2. Docker+Jenkins持续集成环境(3)集成PMD、FindBugs、Checkstyle静态代码检查工具并邮件发送检查结果...

    为了规范代码,我们一般会集成静态代码检测工具,比如PMD.FindBugs.Checkstyle,那么Jenkins如何集成这些检查工具,并把检查结果放到构建邮件里呢? 今天做了调研和实现,过程如下 ...

  3. maven mvn Failed during checkstyle execution

    maven 命令默认强制使用checkstyle, 造成 命令运行失败 并报错: Failed during checkstyle execution 关闭checkstyle,命令如下: mvn [ ...

  4. 如何更好地利用Pmd、Findbugs和CheckStyle分析结果

    这里列出了很多Java静态分析工具,每一种工具关注一个特定的能发挥自己特长的领域,我们可以列举一下: Pmd 它是一个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题: – 可能的bug ...

  5. jenkins插件findbugs+pmd+checkstyle结合sonar与maven(java环境代码质量和代码规范管理)...

    一.下载jdk并安装(最好jdk官网下载解压安装的) 二.下载maven并安装maven 三.安装jenkins及插件 安装checkstyle.pmd.findbugs.maven.sonar等相关 ...

  6. 【checkStyle】ignore some class

    方法一:gradle task checkstyle(type: Checkstyle) {configFile file("${project.rootDir}/library/check ...

  7. CheckStyle, 强制你遵循编码规范

    如今代码静态检查越来越重要,已经成为构建高质量软件的不可或缺的一个验证步骤.如果你使用的是java语言,那么CheckStyle则是一个利器. CheckStyle能够帮助程序员检查代码是否符合制定的 ...

  8. Eclipse插件CheckStyle的安装和使用

    转载自:http://www.cnblogs.com/lanxuezaipiao/p/3202169.html CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员 ...

  9. CheckStyle

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

  10. jenkins+findbugs+checkstyle+PMD静态代码检查(二)

    可以根据自己的需求选中对应的插件进行配置(不一定非要同时配置三个插件) jenkins:持续集成的工具 fundbugs:检测代码静态错误的插件  例如:定义了没有用到的对象,string类型的比较使 ...

最新文章

  1. php的辅助工具下载,PHPTools 工具包(让你的EditPlus可以调试PHP)
  2. 查看dll 的是32位还是64位
  3. mybatis.mapper-locations 配置多个mapper路径
  4. 2019年技术盘点云数据库篇(二):阿里云携手MongoDB率先上线4.2数据库 云上数据库已是大势所趋...
  5. 基于OpenCV实现图像平移
  6. python调用opencv的速度_OpenCV-Python系列之OpenCV性能衡量与优化方法
  7. FRR BGP协议分析8 -- BGP 层3隧道 (2)
  8. SpringBoot水果商城后台管理系统(文末附源码)
  9. 兔子会死怎么办? 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,假如兔子会死
  10. excel中两列如何进行交叉排列组合
  11. 新媒体下旅游目的地营销研究――以安徽省灵璧县为例
  12. 【数字电路基础】时序电路和组合电路的区别、为什么要有触发器
  13. 【AI学习总结】均方误差(Mean Square Error,MSE)与交叉熵(Cross Entropy,CE)损失函数
  14. aix安装bff_AIX程序打包
  15. Kafka手动提交偏移量的作用到底是什么???
  16. 503报错(nacos整合gateway网关)
  17. element ui 基本操作
  18. lordoftheroot
  19. 自动驾驶(六十五)---------ROS学习笔记(1)
  20. springboot项目每次启动的时候都会跳进一个异常解决办法

热门文章

  1. OpenGL OOM的解决方案
  2. vue项目结构php写哪里,Vue项目的创建,以及项目目录结构的分析
  3. oracle 密码过期验证
  4. c++全局变量与静态变量
  5. 《曾国藩传》读书笔记序
  6. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java青年志愿者社团管理36uiu
  7. MariaDB数据库创建用户
  8. Android蓝牙增加自定义按键
  9. 【维生素C语言】第十章 - 指针的进阶(上)
  10. 2015年12月31日播出《芈月传…