blob: c98b70ea01425a54996b2a364134271e1837a666 [file] [view]
# [Android Framework Lint Checker](./framework)
Checks written here are going to be executed for modules that opt in to those (e.g. any
`services.XXX` module) and results will be automatically reported on CLs on gerrit.
## How to add new framework lint checks
1. Write your detector with its issues and put it into
`framework/checks/src/main/java/com/google/android/lint`.
2. Add your detector's issues into `AndroidFrameworkIssueRegistry.kt`'s `issues`
field.
3. Write unit tests for your detector in one file and put it into
`framework/checks/test/java/com/google/android/lint`.
4. Done! Your lint checks should be applied in lint report builds for modules that include
`AndroidFrameworkLintChecker`.
## How to run lint against your module
1. Add the following `lint` attribute to the module definition, e.g. `services.autofill`:
```
java_library_static {
name: "services.autofill",
...
lint: {
extra_check_modules: ["AndroidFrameworkLintChecker"],
},
}
```
2. Run the following command to verify that the report is being correctly built:
```
m services-autofill-lint
```
Replace `services-autofil` with your module's name. After you run the command, the
lint report can be found in the soong intermediates path corresponding to your
module , i.e.
`out/soong/.intermediates/frameworks/base/services/autofill/services.autofill/android_common/lint/lint-report.html`.
3. Now lint issues should appear on gerrit!
**Notes:**
- Lint report will not be produced if you just build the module, i.e. `m services.autofill` will not
build the lint report.
- If you want to build lint reports for more than 1 module and they include a common module in their
`defaults` field, e.g. `platform_service_defaults`, you can add the `lint` property to that common
module instead of adding it in every module.
- If you want to run a single lint type, use the `ANDROID_LINT_CHECK`
environment variable with the id of the lint. For example:
`ANDROID_LINT_CHECK=UnusedTokenOfOriginalCallingIdentity m out/[...]/lint-report.html`
There are more notes and instructions available in the `//platform/tools/lint_checks` repo.