AOSP开发中启用静态代码分析及配置检查规则的方法咨询
AOSP构建流程中代码风格检查与静态分析的集成方案
一、AOSP已内置原生支持
AOSP的构建体系本身就集成了代码格式化、风格检查和静态分析工具,无需额外引入第三方工具即可满足开发阶段的代码质量管控需求。
二、核心内置工具的使用方式
1. 代码格式化:clang-format & google-java-format
- C/C++代码:默认使用
clang-format,在模块的Android.bp或Android.mk中配置后,构建时会自动执行检查/格式化:
手动批量格式化可执行:cc_library { name: "libexample", srcs: ["src/*.cpp"], // 开启自动检查与格式化 clang_format: true, }make clang-format - Java/Kotlin代码:使用AOSP内置的
google-java-format,可直接在源码目录执行工具命令对指定文件格式化,也可通过模块配置集成到构建流程。
2. 静态分析:Android Lint & clang-tidy
- Android Lint:针对Java/Kotlin/XML的静态分析工具,构建应用模块时默认自动运行。手动触发可执行:
# 全局执行lint检查 make lint # 仅检查当前模块 mm lint - clang-tidy:针对C/C++的静态分析工具,集成在clang工具链中,需在模块
Android.bp中启用:cc_library { name: "libexample", srcs: ["src/*.cpp"], clang_tidy: true, }
三、检查规则的自定义配置
1. clang-format规则
- 全局规则由AOSP根目录的
.clang-format文件定义; - 模块级可在自身目录创建
.clang-format文件,优先级高于全局规则,实现个性化风格定义。
2. Android Lint规则
- 全局规则位于
build/make/core/lint/lint.xml; - 模块级可在目录下创建
lint.xml,自定义规则的启用、禁用或级别:<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- 将未使用资源设为警告级别 --> <issue id="UnusedResources" severity="warning" /> <!-- 将硬编码文本设为错误级别,强制修复 --> <issue id="HardcodedText" severity="error" /> <!-- 禁用翻译缺失检查 --> <issue id="MissingTranslation" disable="true" /> </lint>
3. clang-tidy规则
- 全局配置在
build/soong/cc/config/clang_tidy.config; - 模块级可通过
clang_tidy_flags调整规则,示例:cc_library { name: "libexample", srcs: ["src/*.cpp"], clang_tidy: true, // 仅启用clang分析器和misc类规则 clang_tidy_flags: ["-checks=-*,clang-analyzer-*,misc-*"], }
四、强制检查中断构建(可选)
如果需要确保代码检查不通过时终止构建,可做以下配置:
- clang-format:设置
clang_format_fix: false(仅检查不自动修复),配合构建脚本确保检查失败时中断; - Android Lint:在模块
Android.bp中添加:android_library { name: "example-lib", // ...其他配置 lint_options: { abortOnError: true, }, } - clang-tidy:启用后默认会在检查到错误时中断构建,可通过
clang_tidy_flags调整规则的错误级别。
内容的提问来源于stack exchange,提问作者Jian Guo
相关产品推荐
相关产品推荐

