Skip to content

getBoolean/custom_lints_template

Repository files navigation

Custom Lints Template

custom_lints_template is a developer tool, designed to help stop common issue and simplify repetetive tasks. It adds various warnings with quick fixes and refactoring options.

Template Usage Checklist

  1. Replace all usages of custom_lints_template with your package name.
  2. Rename custom_lints_template.dart to <package-name>.dart.
  3. Update pubspec.yaml with your package repository and issues links.
  4. Run dart run build_runner build -d to generate the new dart_mappable classes.
  5. Read the Contributing Guide.
  6. Delete this section from the README.

Table of Contents

Usage

Installing custom_lints_template

custom_lints_template is implemented using custom_lint. As such, it uses custom_lint's installation logic.
Long story short:

  • Add both custom_lints_template and custom_lint to your pubspec.yaml:

    dev_dependencies:
      custom_lint:
      custom_lints_template:
  • Enable custom_lint's plugin in your analysis_options.yaml:

    analyzer:
      plugins:
        - custom_lint

Enabling/disabling lints

By default when installing custom_lints_template, most of the lints will be enabled. To change this, you have a few options.

Disable one specific rule

You may dislike one of the various lint rules offered by custom_lints_template. In that event, you can explicitly disable this lint rule for your project by modifying the analysis_options.yaml

analyzer:
  plugins:
    - custom_lint

custom_lint:
  rules:
    # Explicitly disable one lint rule
    - avoid_hardcoded_strings: false

Note that you can both enable and disable lint rules at once. This can be useful if your analysis_options.yaml includes another one:

include: path/to/another/analysis_options.yaml
analyzer:
  plugins:
    - custom_lint

custom_lint:
  rules:
    # Enable one rule
    - avoid_hardcoded_strings
    # Disable another
    - custom_lint_example: false

Disable all lints by default

Instead of having all lints on by default and manually disabling lints of your choice, you can switch to the opposite logic:
Have lints off by default, and manually enable lints.

This can be done in your analysis_options.yaml with the following:

analyzer:
  plugins:
    - custom_lint

custom_lint:
  # Forcibly disable lint rules by default
  enable_all_lint_rules: false
  rules:
    # You can now enable one specific rule in the "rules" list
    - avoid_hardcoded_strings

Configuring Lints

Some of the lints have configuration options. These can be specified in analysis_options.yaml.

custom_lint:
  rules:
    - avoid_hardcoded_strings:
      severity: info

Running custom_lints_template in the terminal/CI

Custom lint rules created by custom_lints_template may not show-up in dart analyze. To fix this, you can run a custom command line: custom_lint.

Since your project should already have custom_lint installed (cf installing custom_lints_template), then you should be able to run:

dart run custom_lint

Alternatively, you can globally install custom_lint:

# Install custom_lint for all projects
dart pub global activate custom_lint
# run custom_lint's command line in a project
dart run custom_lint

All Lint Rules

Most lints have configuration options. These can be specified in the analysis_options.yaml or the pubspec.yaml. See LINTS.md for a list of implemented lint rules and their configuration options.

Contributing Guide

Creating Lints

  1. Create a new file with the lint name in lib/src/lints/{lint_name}/, type lint and use snippet to generate the boilerplate code.
  2. Add the lint logic to the OptionsLintRule.run method.
  3. (Optional) Adding a fix for the lint
    1. Create a fix file in the lib/src/lints/{lint_name}/models/fixes, type fix and use the snippet to generate the boilerplate code.
    2. Add it to the lint's OptionsLintRule.getFixes method.
  4. Add the lint to the lib/lints.dart getAllLints method. Type fix and use the lint to generate the boilerplate code.
  5. (Optional) Adding configuration options. These options are available with the config.parameters getter in the OptionsLintRule and OptionsFix classes.
    1. Create a new file for each key in lib/src/lints/{lint_name}/models/, type options and use the snippet to generate the boilerplate code.
    2. Add the new options class to the lint rule paramsParser and the super class OptionsLintRule generic type parameter.
    3. Run dart run build_runner build -d to generate the new dart_mappable classes.
  6. Update LINTS.md with the new lint and configuration options.

Creating Assists

  1. Create a new file with the lint name in lib/src/assists, type assist and use snippet to generate the boilerplate code.
  2. Add the assist to the lib/custom_lints_template.dart getAllAssists method.

Debugging/Testing

Follow the custom_lint debugging/testing docs.

Resources

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Languages