lint/pmd/p3c静态代码检查工具的配置与使用

一、工具介绍

1、lint/pmd/p3c工具做检查。

其中,pmd/p3c偏向于java语言本身,lint工具入偏向于android。
(后续会考虑加入C/C++的代码检查。)

工具、规则介绍:
pmd: https://pmd.github.io/ https://pmd.github.io/pmd/pmd_rules_java_design.html
p3c: https://github.com/alibaba/p3c https://github.com/alibaba/p3c/tree/master/p3c-gitbook
lint: 命令行运行:lint show

二、工具使用方法

1、IDE上对应插件的使用。

支持使用的IDE:android studio/Intellij IDEA。
两个工具的使用方法、插件配置类似,全文以android studio为例。

step1. 安装pmdplugin、alibaba Java Coding Guidelines
方法一、IDE => Performances => Plugins => Marketplace
搜索并安装如上pmd/ alibaba两个插件。

lint/pmd/p3c静态代码检查工具的配置与使用_第1张图片

lint/pmd/p3c静态代码检查工具的配置与使用_第2张图片

方法二、手动下载插件,后安装。
pmdplugin: https://plugins.jetbrains.com/plugin/1137-pmdplugin/versions (下载时特别注意选择IDE平台)
alibaba: https://github.com/alibaba/p3c/blob/master/idea-plugin/README_cn.md
推荐使用方法一,特别注意:如果是手动下载安装插件,建议IDE更新到最新版本,下载最新版本的插件。非最新版本IDE,可能会有一些安装使用问题。

step2. 配置插件

LINT
lint:https://developer.android.com/studio/write/lint?hl=zh-CN#manuallyRunInspections
限制只检查指定规则的方法:
1> 在build.gradle里面
apply 'com.android.lib'
apply 'com.android.application'
的项目下进行配置。
1、在build.gradle最后添加

android{
lintOptions{
abortOnError false
//check 'NewApi'
lintConfig file('lint.xml')
}
}
2> 拷贝配置文件lint.xml文件到build.gradle所在目录

step3. 使用插件进行检查

LINT
1> 在 Android 视图中,打开项目并选择此项目以及您要分析的文件夹或文件。
2> 从菜单栏选择 Analyze > Inspect Code。
3> 在 Specify Inspection Scope 对话框中查看设置。

lint/pmd/p3c静态代码检查工具的配置与使用_第3张图片

4> 在 Inspection Profile 中,保留默认的配置文件 (Project Default)。
5> 点击 OK 以运行检查,显示运行 Inspect Code 所生成的 Lint 和其他 IDE 检查结果。

lint/pmd/p3c静态代码检查工具的配置与使用_第4张图片

关于具体的配置定制见 https://developer.android.com/studio/write/lint?hl=zh-CN#manuallyRunInspections
 

PMD
限制只检查指定规则的方法:
1> 配置检查规则: IDE => Performances => Other Settings => PMD

lint/pmd/p3c静态代码检查工具的配置与使用_第5张图片

2> 点击加号添加规则,选择附件中给出的pmd规则

lint/pmd/p3c静态代码检查工具的配置与使用_第6张图片

3> 使用配置的检查规则进行检查: IDE => Run PMD => Custom Rules => highpriority_config
lint/pmd/p3c静态代码检查工具的配置与使用_第7张图片

4> 开始pmd检查,并显示检查的结果。

lint/pmd/p3c静态代码检查工具的配置与使用_第8张图片

 

P3C
未发现可以在plugin中配置指定规则的方法。
1> 检查: IDE => 阿里编码规约 => 编码规约扫描

lint/pmd/p3c静态代码检查工具的配置与使用_第9张图片

特别的,LINT/P3C可以一起选择后进行检查。在build.gradle里面的配置的lintConfig在命令行、IDE检查中均有效。
方法: Analyze => Inspect Code => 打开配置 => 同时选择Ali-Check 和 Android lint。

lint/pmd/p3c静态代码检查工具的配置与使用_第10张图片

lint/pmd/p3c静态代码检查工具的配置与使用_第11张图片

 

2、命令行方法检查(按需查阅)

LINT
限制只检查指定规则的方法:
1> 在build.gradle里面
apply 'com.android.lib'
apply 'com.android.application'
的项目下进行配置。
a. 在build.gradle最后添加

android{
lintOptions{
abortOnError false
//check 'NewApi'
lintConfig file('lint.xml')
}
}


b. 拷贝配置文件lint.xml文件到build.gradle所在目录

lint只会检查包含了AndroidManifest.xml的应用项目
非独立应用lint检查命令:
lint code_dir --config lint.xml --xml result.xml
独立应用lint检查命令:
./gradlew lintRelease [-p project]
结果路径会显示在日志打印中,按settings.gradle 里面的项目来分别生成结果文件。

PMD/P3C
1> 下载源码
https://github.com/pmd/pmd
https://github.com/alibaba/p3c

2> 进入到相应用项目目录进行编译 mvn install
pmd/pmd-java
p3c/p3c-pmd
(若pmd编译有问题,参考https://github.com/xnfreedom/pmd/commit/93ffb8408dd428c05f8294ea5f6dec9ef7b7411f、
https://github.com/xnfreedom/pmd/commit/c32fa0f725c61f2fc7434dc0a400251c7ca9de29解决)

3> pmd工具下载、配置
https://pmd.github.io/
命令行方式运行p3c: https://github.com/alibaba/p3c/issues/50

4> 配置要使用的规则。
pmd:
文件位置:pmd/pmd-java/target/classes/category/java/high_priority_config.xml
内容:

xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">

Rules specific to 1/2 priority






p3c:
文件位置:p3c/p3c-pmd/target/classes/rulesets/java/high_priority_config.xml
内容:

xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.sourceforge.io/ruleset_2_0_0.xsd">

Rules specific to 1/2 priority












注意:
deprecated="true" 是表示在pmd 7.0.0将会不再支持这条规则。
其实不是所有的都需要打上这个tag, 部分规则需要。

5> 命令行运行pmd/p3c检查
pmd:
/Users/mz/tools/pmd/pmd-bin-6.16.0/bin/run.sh pmd -d /Users/mz/Code/apps/FileManager/FileManager -f xml -R /Users/mz/Code/github/pmd/pmd-java/target/classes/category/java/high_priority_config.xml > /Users/mz/Code/apps/FileManager/FileManager/preferdCheckResut/pmd-high_priority_result.xml
p3c:
/Users/mz/tools/pmd/pmd-bin-6.16.0/bin/run.sh pmd -d /Users/mz/Code/apps/FileManager/FileManager -f xml -R /Users/mz/Code/github/p3c/p3c-pmd/target/classes/rulesets/java/high_priority_config.xml > /Users/mz/Code/apps/FileManager/FileManager/preferdCheckResut/p3c-high_priority_result.xml

 

你可能感兴趣的:(android,静态代码检查)