0acc564104
Change-Id: Ie1373e93092023caf5e0bcfd6bb88bfb422d5daf Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147921 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Kevin Moore <kevmoo@google.com>
109 lines
3.6 KiB
Markdown
109 lines
3.6 KiB
Markdown
# Analyzer for Dart
|
|
|
|
This package provides a library that performs static analysis
|
|
of Dart code. It is useful for tool integration and embedding.
|
|
|
|
End-users should use the [dartanalyzer][] command-line tool
|
|
to analyze their Dart code.
|
|
|
|
Integrators that want to add Dart support to their editor
|
|
should use the _Dart Analysis Server_.
|
|
The [Analysis Server API Specification][serverapi] is available.
|
|
If you are adding Dart support to an editor or IDE, please let us know
|
|
by emailing our [list][].
|
|
|
|
## Configuring the analyzer
|
|
|
|
Both `dartanalyzer` and Dart Analysis Server can be configured with an
|
|
`analysis_options.yaml` file (using an `.analysis_options` file is deprecated).
|
|
This YAML file can control which files and paths are analyzed,
|
|
which lints are applied, and more.
|
|
|
|
If you are embedding the analyzer library in your project, you are responsible
|
|
for finding the analysis options file, parsing it, and configuring the analyzer.
|
|
|
|
The analysis options file should live at the root of your project (for example,
|
|
next to your `pubspec.yaml`). Different embedders of analyzer, such as
|
|
`dartanalyzer` or Dart Analysis Server, may choose to find the file in various
|
|
different ways. Consult their documentation to learn more.
|
|
|
|
Here is an example file that instructs the analyzer to ignore two files:
|
|
|
|
```yaml
|
|
analyzer:
|
|
exclude:
|
|
- test/_data/p4/lib/lib1.dart
|
|
- test/_data/p5/p5.dart
|
|
- test/_data/bad*.dart
|
|
- test/_brokendata/**
|
|
```
|
|
|
|
Note that you can use globs, as defined by the [glob package][glob].
|
|
|
|
Here is an example file that enables two lint rules:
|
|
|
|
```yaml
|
|
linter:
|
|
rules:
|
|
- camel_case_types
|
|
- empty_constructor_bodies
|
|
```
|
|
|
|
Check out all the available [Dart lint rules][lintrules].
|
|
|
|
You can combine the `analyzer` section and the `linter` section into a single
|
|
configuration. Here is an example:
|
|
|
|
```yaml
|
|
analyzer:
|
|
exclude:
|
|
- test/_data/p4/lib/lib1.dart
|
|
linter:
|
|
rules:
|
|
- camel_case_types
|
|
```
|
|
|
|
For more information, see the docs for
|
|
[customizing static analysis][custom_analysis].
|
|
|
|
## Who uses this library?
|
|
|
|
Many tools embed this library, such as:
|
|
|
|
* [dartfmt] - a formatter for Dart code
|
|
* [dartdoc] - a documentation generator for Dart code
|
|
* [Dart Analysis Server][analysis_sever] - a stateful server that supports IDEs and editors
|
|
|
|
## Support
|
|
|
|
Post issues and feature requests at https://github.com/dart-lang/sdk/issues
|
|
|
|
Questions and discussions are welcome at the
|
|
[Dart Analyzer Discussion Group][list].
|
|
|
|
## Background
|
|
|
|
The APIs in this package were originally machine generated by a translator and were
|
|
based on an earlier Java implementation. Several of the API's still look like their Java
|
|
predecessors rather than clean Dart APIs.
|
|
|
|
In addition, there is currently no clean distinction between public and internal
|
|
APIs. We plan to address this issue but doing so will, unfortunately, require a
|
|
large number of breaking changes. We will try to minimize the pain this causes for
|
|
our clients, but some pain is inevitable.
|
|
|
|
## License
|
|
|
|
See the [LICENSE] file.
|
|
|
|
[serverapi]: https://htmlpreview.github.io/?https://github.com/dart-lang/sdk/blob/master/pkg/analysis_server/doc/api.html
|
|
[dartanalyzer]: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer_cli#dartanalyzer
|
|
[list]: https://groups.google.com/a/dartlang.org/forum/#!forum/analyzer-discuss
|
|
[lintrules]: https://dart-lang.github.io/linter/lints/
|
|
[glob]: https://pub.dev/packages/glob
|
|
[LICENSE]: https://github.com/dart-lang/sdk/blob/master/pkg/analyzer/LICENSE
|
|
[dartfmt]: https://github.com/dart-lang/dart_style
|
|
[dartdoc]: https://github.com/dart-lang/dartdoc
|
|
[analysis_sever]: https://github.com/dart-lang/sdk/tree/master/pkg/analysis_server
|
|
[custom_analysis]: https://dart.dev/guides/language/analysis-options
|