项目总监在管理项目时,会担心技术人员开发代码不规范的问题。如果人员少口头述说一下就好了。但是人员大呢?比如50人的大团队,如果一个一个去说那肯定不可能。所以就需要借助工具checkstyle了。checkstyle的介绍如下:
“CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。” -------来自百度百科
CheckStyle作为检验代码规范的插件,除了可以使用配置默认给定的开发规范,如Sun的,Google的开发规范啊,也可以导入像阿里的开发规范的插件。事实上,每一个公司都存在不同的开发规范要求,所以大部分公司会给定自己的check规范,一般导入给定的checkstyle.xml文件即可实现。
现成CheckStyle插件使用
下载好检测器插件
可以下载阿里的开发规范,楼主一直用,感觉良好,安利一波~
启用插件
自定义CheckStyle规则
编写checkstyle.xml文件(里面配置相关的代码规则)
示例:
<?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">
<module name="NewlineAtEndOfFile"/>
<module name="RegexpSingleline">
<property name="format" value="printStackTrace"/>
<property name="message" value="Prohibit invoking printStackTrace in source code !"/>
</module>
<module name="TreeWalker">
<module name="AvoidStarImport">
<property name="excludes" value="java.io,java.net,java.lang.Math"/>
<property name="allowClassImports" value="false"/>
<property name="allowStaticMemberImports" value="true"/>
</module>
<module name="IllegalImport"/>
<module name="RedundantImport"/>
<module name="UnusedImports"/>
<module name="JavadocType">
<property name="allowUnknownTags" value="true"/>
<property name="allowMissingParamTags" value="true"/>
<message key="javadoc.missing" value="Class Comments: Missing Javadoc Comments"/>
</module>
<module name="LocalFinalVariableName"/>
<module name="LocalVariableName"/>
<module name="PackageName">
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" />
</module>
<module name="StaticVariableName"/>
<module name="TypeName"/>
<module name="MemberName"/>
<module name="MethodName"/>
<module name="ParameterName "/>
<module name="ConstantName"/>
<module name="ArrayTypeStyle"/>
<module name="UpperEll"/>
<module name="LineLength">
<property name="max" value="200"/>
</module>
<module name="MethodLength">
<property name="tokens" value="METHOD_DEF"/>
<property name="max" value="150"/>
</module>
<module name="ParameterNumber">
<property name="max" value="5"/>
<property name="ignoreOverriddenMethods" value="true"/>
<property name="tokens" value="METHOD_DEF"/>
</module>
<module name="MethodParamPad"/>
<module name="TypecastParenPad"/>
<module name="NoWhitespaceAfter"/>
<module name="NoWhitespaceBefore"/>
<module name="OperatorWrap"/>
<module name="ParenPad"/>
<module name="WhitespaceAfter"/>
<module name="WhitespaceAround"/>
<module name="ModifierOrder"/>
<module name="RedundantModifier"/>
<module name="AvoidNestedBlocks"/>
<module name="EmptyBlock"/>
<module name="LeftCurly"/>
<module name="NeedBraces"/>
<module name="RightCurly"/>
<module name="EmptyStatement"/>
<module name="EqualsHashCode"/>
<module name="IllegalInstantiation"/>
<module name="InnerAssignment"/>
<module name="MagicNumber">
<property name="ignoreNumbers" value="0, 1, 2"/>
<property name="ignoreAnnotation" value="true"/>
<property name="ignoreHashCodeMethod" value="true"/>
<property name="ignoreFieldDeclaration" value="true"/>
</module>
<module name="MissingSwitchDefault"/>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="FinalClass"/>
<module name="InterfaceIsType"/>
<module name="VisibilityModifier">
<property name="packageAllowed" value="true"/>
<property name="protectedAllowed" value="true"/>
</module>
<module name="StringLiteralEquality"/>
<module name="NestedForDepth">
<property name="max" value="3"/>
</module>
<module name="NestedIfDepth">
<property name="max" value="4"/>
</module>
<module name="UncommentedMain">
<property name="excludedClasses" value=".*Application$"/>
</module>
<module name="Regexp">
<property name="format" value="System\.out\.println"/>
<property name="illegalPattern" value="true"/>
</module>
<module name="ReturnCount">
<property name="max" value="4"/>
</module>
<module name="NestedTryDepth ">
<property name="max" value="4"/>
</module>
<module name="SuperFinalize"/>
<module name="SuperClone"/>
</module>
</module>
这个
name
属性是已经写好的 Checkstyle 或 FindBugs 等静态代码分析工具预定义模块的名称。在使用静态代码分析工具时,可以根据具体的需求选择预定义模块,也可以自定义一些规则进行检查。这些模块都有一个唯一的名称,例如
PackageName
、JavadocType
、LocalVariableName
等。通过在配置文件中使用这些模块的名称,静态代码分析工具就可以知道需要执行哪些规则,以及需要对哪些部分进行检查。
开发者可以根据具体的需求进行配置,包括启用或禁用某些模块、修改默认规则等。这样可以保证代码的风格和质量符合团队或项目的要求。
编写checkstyle_suppression.xml文件(里面配置相关的代码规则)
checkstyle_suppression.xml
是 Checkstyle 工具用于指定需要被忽略或禁用的代码规则的配置文件。有时候,在特定的情况下,我们可能希望忽略某些规则,或者禁用某些规则的检查。这可以通过在
checkstyle_suppression.xml
文件中进行配置来实现。在这个 XML 配置文件中,可以指定需要忽略的代码规则的名称、文件、类、方法等信息。这样,当 Checkstyle 运行时,它会读取这个配置文件,并根据配置来决定是否忽略或禁用某些规则的检查。
示例:
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
</suppressions>
在
<suppressions></suppressions>
标签中,可以根据需要添加或定义压制规则。一个压制规则通常包括要忽略的代码规则的名称、相关代码的位置、理由等信息。压制规则的具体格式和语法可以在DTD文件中找到。
启用本地自定义CheckStyle规则文件
开始C
选择你需要checkstyle的类右击:
点击checkstyle,因为我导入的是阿里巴巴,使用checkstyle的按键被占用了,懒得弄了,阿里蛮好的