Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

* Reporter.report now returns Future

* Added wait for copying resources

* Added ignore `deprecated_member_use`, in future need to rewrite on `resolveFile`
2603aa2

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
bin
 
 
doc
 
 
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Build Status Coverage Status License Pub Version Dart SDK Verison Dart Platform

Dart code metrics

Dart code metrics is a static analysis tool that helps improve code quality. It analyzes code metrics and provides additional rules for dart analyzer. Can be used as a command line tool, analyzer plugin or library.

Reports:

Output formats:

  • Plain terminal
  • GitHub
  • Codeclimate
  • HTML
  • JSON

Usage

Analyzer plugin

A plugin for the Dart analyzer library package providing additional rules from Dart code metrics.

  1. Add dependency to pubspec.yaml

    dev_dependencies:
      dart_code_metrics: ^2.4.0
  2. 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
        lines-of-executable-code: 50
        number-of-arguments: 4
        maximum-nesting: 5
      metrics-exclude:
        - test/**
      rules:
        - newline-before-return
        - no-boolean-literal-compare
        - no-empty-block
        - prefer-trailing-comma
        - prefer-conditional-expressions
        - no-equal-then-else
    

Command line tool

Simple usage

pub global activate dart_code_metrics
metrics lib

Flutter usage

flutter pub global activate dart_code_metrics
flutter pub global run dart_code_metrics:metrics lib

Full usage

Usage: metrics [options...] <directories>
-h, --help                                             Print this usage information.


-r, --reporter=<console>                               The format of the output of the analysis
                                                       [console (default), github, json, html, codeclimate]
    --verbose                                          Additional flag for Console reporter
    --gitlab                                           Additional flag for Code Climate reporter to report in GitLab Code Quality format


    --cyclomatic-complexity=<20>                       Cyclomatic complexity threshold
    --lines-of-executable-code=<50>                    Lines of executable code threshold
    --number-of-arguments=<4>                          Number of arguments threshold
    --number-of-methods=<10>                           Number of methods threshold
    --maximum-nesting=<5>                              Maximum nesting threshold


    --root-folder=<./>                                 Root folder
                                                       (defaults to current directory)
    --ignore-files=<{/**.g.dart,/**.template.dart}>    Filepaths in Glob syntax to be ignored
                                                       (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]

If you want command line tool to check rules, you should add configuration to your analysis_options.yaml as listed in Analyzer plugin usage example.

Library

See example/example.dart

Anti-Patterns

Rules

Rules are grouped by category to help you understand their purpose.

Right now auto-fixes are available through an IDE context menu (ex. VS Code Quick Fix).

Common

Intl specific

Angular specific

Contributing

If you are interested in contributing, please check out the contribution guidelines. Feedback and contributions are welcome!