Android Lint
============

Android Lint is a static analysis tool (which despite the name is not
limited to Android, and within Google for example is used to analyze
Java and Kotlin server side code as well as Android and even desktop
software like IDEs.)

Lint's focus is on finding bugs (whether they are related to
correctness, performance, security, internationalization, usability and
so on); it's not a source code style checker.

Available documentation:

* [Lint Features](features.md.html)
* [Recent Changes](changes.md.html)
* Documents for users of lint, in the `usage` folder:
  - [Complete Book](user-guide.md.html), containing all of the below
    documents as chapters, suitable for offline reading
  - [Performance Tuning Tips](usage/performance-tuning.md.html)
  - [How to suppress incidents](usage/suppressing.md.html)
  - [How to use baselines](usage/baselines.md.html)
  - [How to use `lint.xml` files](usage/lintxml.md.html)
  - [Environment variables and properties](usage/variables.md.html)
* Documents for authors of additional lint checks, in the
  `api-guide` folder:
  - [Complete Book](api-guide.md.html), containing all of the below
    documents as chapters, suitable for offline reading
  - [Basics](api-guide/basics.md.html)
  - [A Sample Lint Check](api-guide/example.md.html)
  - [Publishing a Lint check](api-guide/publishing.md.html)
  - [Unit Testing](api-guide/unit-testing.md.html)
  - [Adding Quick Fixes](api-guide/quickfixes.md.html)
  - [Terminology](api-guide/terminology.md.html)
  - [Partial analysis](api-guide/partial-analysis.md.html)
  - [Frequently Asked Questions](api-guide/faq.md.html)
* Documents for lint internals, intended for developers of lint
  itself, in the `internal` folder:
  - [Guidelines](internal/guidelines.md.html)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Documentation History:
* March 2021: Initial version

<!-- Markdeep: --><style class="fallback">body{visibility:hidden;white-space:pre;font-family:monospace}</style><script src="markdeep.min.js" charset="utf-8"></script><script src="https://morgan3d.github.io/markdeep/latest/markdeep.min.js" charset="utf-8"></script><script>window.alreadyProcessedMarkdeep||(document.body.style.visibility="visible")</script>
