写点什么

Jenkins 集成 Android 代码检查

  • 2022 年 9 月 01 日
    北京
  • 本文字数:1056 字

    阅读完需:约 3 分钟

Android lint 是一个静态代码分析工具,通过 lint 工具,你可以不用边运行边调试,或者通过单元测试进行代码检查,可以检测代码中不规范、不和要求的问题,解决一些潜在的 bug。lint 工具可以在命令行上使用,也可以在 Android studio 中使用。是 sdk 自带的一种静态分析工具,在 sdk 目录的 tools 目录下面的 bin 可以找到 lint 工具。可以直接在 Android stuido 中调用,也可以通过命令行./gradlew lint 执行,当然也可以集成到 jenkins 中,每次编译的时候都执行代码。

Lint 会根据预先配置的检测标准检查我们 Android 项目的源文件,发现潜在的 bug 或者可以优化的地方,主要针对几个方面:

Correctness:不够完美的编码,比如硬编码、使用过时 API 等;

Performance:对性能有影响的编码,比如:静态引用,循环引用等;

Internationalization:国际化,直接使用汉字,没有使用资源引用等

Security:不安全的编码,比如在 WebView 中允许使用 JavaScriptInterface

Lint 规则文件 lint.xml 可以自定义修改检查标准,可以使用默认的规则,也可以自定义一些特定条件的规则


上面提到了代码检查可以集成到 jenkins 中,只需要在构建过程中添加类似如下步骤即

在执行构建时,就会自动检查 android_sdk_refactor_as 工程下所有的 Android 代码,生成 lint-results.xml 结果文件。生成结果文件通过 Android Lint Plugin 发布出去,这样就可以直观的看到检查报告。


生成类似结构的报告后可以进行简单的分析了,如下面问题:

第一眼看到 High Priority 就有 37 个,不必惊慌去掉重复调用的影响后就会少一半了。再由于静态代码的存在误判行为,结合上下文环境,又会减少一些。如上面这个问题,很明显是由于项目配置的支持最小 SDK 版本是 14,可是工程中却使用了 SDK 必须大于 19 才能使用的 api,当工程运行在低版本的手机时,就很容易发生各种异常。或者出现类似下面异常

当工程试图调用只有用户同意才可以访问的接口时,程序应该做出当用户拒绝操作权限时的相应处理。

集成过程中坑点

开始设想把代码检查放在【构建后操作】来做,这样既不影响打包,也可以做代码检查。但是这样无法发布 lint 测试报告,因为构建后第一个步骤就是发布 lint 测试报告。

由于现在很多项目都是多个工程一起构建,一定要把 gradlew lint 命令写在主工程下面。多个工程,代码检查会生成多个结果文件,但是多个文件不能合并。

有的工程没有忽略 lint 警告,当出现警告后就会停止编译,所以需要把每个检查的工程都配置忽略警告。

更多资料可点击下方

https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=juejin&timestamp=1662022841&author=xueqi

用户头像

社区:ceshiren.com 2022.08.29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
Jenkins 集成 Android 代码检查_android_霍格沃兹-测试_InfoQ写作社区