概述
Android Lint是Google提供给Android开发者的静态代码检查工具。使用Lint对Android工程代码进行扫描和检查,可以发现代码潜在的问题,提醒程序员及早修正。
为什么要自定义我们在实际使用Lint中遇到了以下问题:
- 原生Lint无法满足我们团队特有的需求,例如:编码规范。
- 原生Lint存在一些检测缺陷或者缺少一些我们认为有必要的检测。
- 对于正式发布包来说,debug和verbose的日志会自动不显示。
基于上面的考虑,我们开始调研并开发自定义Lint。开发中我们希望开发者使用RoboGuice的Ln替代Log/System.out.println。
相比原生的lint,Ln具有以下优势:
- 拥有更多的有用信息,包括应用程序名字、日志的文件和行信息、时间戳、线程等。
- 由于使用了可变参数,禁用后日志的性能比Log高。因为最冗长的日志往往都是debug或verbose日志,这可以稍微提高一些性能。
- 可以覆盖日志的写入位置和格式。
示例代码:
首先需要配置gradle。
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.tools.lint:lint-api:24.5.0'
compile 'com.android.tools.lint:lint-checks:24.5.0'
}
注:lint-api: 官方给出的API,API并不是最终版,官方提醒随时有可能会更改API接口。
创建Detector。 Detector负责扫描代码,发现问题并报告。
/**
* 避免使用Log / System.out.println ,提醒使用Ln
* https://github.com/roboguice/roboguice/wiki/Logging-via-Ln
*/
public class LogDetector extends Detector implements Detector.JavaScanner{
public static final Issue ISSUE = Issue.create(
"LogUse",
"避免使用Log/System.out.println",
"使用Ln,防止在正式包打印log",
Category.SECURITY, 5, Severity.ERROR,
new Implementation(LogDetector.class, Scope.JAVA_FILE_SCOPE));
@Override
public List
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?