Dart Code Metrics
Note: you can find the full documentation on the website
Configuration | Rules | Metrics | Anti-patterns
Dart Code Metrics is a static analysis tool that helps you analyse and improve your code quality.
- Reports code metrics
- Provides additional rules for the dart analyzer
- Checks for anti-patterns
- Checks unused
*.dart
files - Can be used as CLI, analyzer plugin or library
Links
- See CHANGELOG.md for major/breaking updates, and releases for a detailed version history.
- To contribute, please read CONTRIBUTING.md first.
- Please open an issue if anything is missing or unclear in this documentation.
Quick start
Analyzer plugin
A plugin for the Dart analyzer
package providing additional rules from Dart Code Metrics. All issues produced by rules or anti-patterns will be highlighted in IDE.
- Install package as a dev dependency$ dart pub add –dev dart_code_metrics # or for a Flutter package $ flutter pub add –dev dart_code_metricsORadd it manually to
pubspec.yaml
dev_dependencies: dart_code_metrics: ^4.2.0-dev.1and then run$ dart pub get # or for a Flutter package $ flutter pub get - Add configuration to
analysis_options.yaml
analyzer: plugins: – dart_code_metrics dart_code_metrics: anti-patterns: – long-method – long-parameter-list metrics: cyclomatic-complexity: 20 maximum-nesting-level: 5 number-of-parameters: 4 source-lines-of-code: 50 metrics-exclude: – test/** rules: – newline-before-return – no-boolean-literal-compare – no-empty-block – prefer-trailing-comma – prefer-conditional-expressions – no-equal-then-else - Reload IDE to allow the analyzer to discover the plugin
CLI
The package can be used as a command-line tool. It will produce a result in one of the supported formats:
- Console
- GitHub
- Codeclimate
- HTML
- JSON
Usage
Install the package as listed in the Analyzer plugin usage example.
If you want the command-line tool to check rules, you should configure rules
entry in the analysis_options.yaml
first.
dart pub run dart_code_metrics:metrics lib # or for a Flutter package flutter pub run dart_code_metrics:metrics lib
Multi-package repositories usage
If you use Melos, you can add custom command to melos.yaml
.
metrics: run: | melos exec -c 1 --ignore="*example*" -- \ flutter pub run dart_code_metrics:metrics lib description: | Run `dart_code_metrics` in all packages. - Note: you can also rely on your IDEs Dart Analysis / Issues window.
Options
Usage: metrics [arguments…]
-h, –help Print this usage information.
-r, –reporter= The format of the output of the analysis
[console (default), console-verbose, codeclimate, github, gitlab, html, json]
-o, –output-directory= Write HTML output to OUTPUT
(defaults to “metrics”)
--cyclomatic-complexity=<20> Cyclomatic Complexity threshold
--lines-of-code=<100> Lines of Code threshold
--maximum-nesting-level=<5> Maximum Nesting Level threshold
--number-of-methods=<10> Number of Methods threshold
--number-of-parameters=<4> Number of Parameters threshold
--source-lines-of-code=<50> Source lines of Code threshold
--weight-of-class=<0.33> Weight Of a Class threshold
--root-folder=<./> Root folder
(defaults to current directory)
--exclude=<{/**.g.dart,/**.template.dart}> File paths in Glob syntax to be exclude
(defaults to "{/**.g.dart,/**.template.dart}")
--set-exit-on-violation-level=<warning> Set exit code 2 if code violations same or higher level than selected are detected
[noted, warning, alarm]
Troubleshooting
Please read the following guide if the plugin is not working as you’d expect it to work.
Contributing
If you are interested in contributing, please check out the contribution guidelines. Feedback and contributions are welcome!
Contribute to this plugin on GitHub
Provides the list of the opensource Flutter apps collection with GitHub repository.