Android代码规范检查配置
Android代码规范检查分为Java、kotlin语言代码检查两部分配置。
1)对于Java代码,我们采用checkstyle插件来做代码规范检查。代码规范模版,我们采用阿里的Android代码规范。
2)对于Kotlin代码,我们采用detekt插件来做代码规范检查。代码规范模版,我们在detekt自带模版的基础上进行调整。
一.CheckStyle配置
1.安装插件
command +逗号 快捷键,弹出以下界面,输入 checkStyle-IDEA,点击install, 安装好重启Android studio。
2.配置checkStyle文件
1)command +逗号 快捷键,在弹出的界面,选择Tool→CheckStyle, 点击下图的加号。
2)导入checkstyle.xml(如果没有checkstyle.xml文件,请先复制并保存附件1的内容),如下图所示。
导入成功之后,点击Finish按钮。
3.选中配置的checkStyle
4.运行checkStyle:可以单个类检查,也可以整个module或工程检查。
二.Detekt配置
1.安装插件
command +逗号 快捷键,弹出以下界面,输入 detekt,点击install, 安装好重启Android studio。
2.配置detekt文件
1)command +逗号 快捷键,在弹出的界面,选择Tool→detekt, 打开前3项配置,并在Configuration File这里选择detekt.yml文件。如果没有detekt.yml文件,请先复制并保存附件2的内容。
2)点击OK。到此,detekt插件已经安装好,detekt会自动检查kotlin源文件中不符合规范的代码。
3.打开任意一个kotlin源代码文件,可以看到自动标记出不符合规范的代码(黄色部分代码)。
三.附件
1.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"/>
<!-- 文件长度不超过1500行 -->
<module name="FileLength">
<property name="max" value="1500"/>
</module>
<!-- 每个java文件一个语法树 -->
<module name="TreeWalker">
<!-- import检查-->
<!-- 避免使用* -->
<module name="AvoidStarImport">
<property name="excludes" value="java.io,java.net,java.lang.Math"/>
<!-- 实例;import java.util.*;.-->
<property name="allowClassImports" value="false"/>
<!-- 实例 ;import static org.junit.Assert.*;-->
<property name="allowStaticMemberImports" value="true"/>
</module>
<!-- 检查是否从非法的包中导入了类 -->
<module name="IllegalImport"/>
<!-- 检查是否导入了多余的包 -->
<module name="RedundantImport"/>
<!-- 没用的import检查,比如:1.没有被用到2.重复的3.import java.lang的4.import 与该类在同一个package的 -->
<module name="UnusedImports" />
<!-- 注释检查 -->
<!-- 检查方法和构造函数的javadoc -->
<module name="JavadocType">
<property name="allowUnknownTags" value="true"/>
<message key="javadoc.missing" value="类注释:缺少Javadoc注释。"/>
</module>
<module name="JavadocMethod">
<property name="tokens" value="METHOD_DEF" />
<!--允许get set 方法没有注释-->
<!-- <property name="allowMissingPropertyJavadoc" value="true"/>-->
<message key="javadoc.missing" value="方法注释:缺少Javadoc注释。"/>
</module>
<!-- 命名检查 -->
<!-- 局部的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" />
<!-- 定义检查 -->
<!-- 检查数组类型定义的样