yx_scope_linter 0.1.1 copy "yx_scope_linter: ^0.1.1" to clipboard
yx_scope_linter: ^0.1.1 copied to clipboard

A package that contains static analysis rules for yx_scope DI framework

yx_scope_linter #

Table of contents #

Installing yx_scope_linter #

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

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

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

    analyzer:
      plugins:
        - custom_lint
    

Enabling/disabling lints. #

By default when installing yx_scope_linter, 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 yx_scope_linter. 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
        -   consider_dep_suffix: 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
        - consider_dep_suffix

All the lints #

consider_dep_suffix #

For dependencies in the Scope Container, use a name with the suffix "Dep".

Good.


late final myDep = dep(() => MyDep());

Bad.


late final justMyString = dep(() => SomeDep());

dep_cycle #

A cyclical dependency has been identified. It is necessary to eliminate it.

Bad.

// The cycle is detected: my1Dep <- my3Dep <- my2Dep <- my1Dep (dep_cycle)
late final Dep<MyDep1> my1Dep = dep(() => MyDep1(my3Dep));
late final Dep<MyDep2> my2Dep = dep(() => MyDep2(my1Dep));
late final Dep<MyDep3> my3Dep = dep(() => MyDep3(my2Dep));

final_dep #

A dep field must be late final

Good.


late final myDep = dep(() => MyDep());

Bad.


final myDep = dep(() => SomeDep());

var myDep = dep(() => SomeDep());

late var myDep = dep(() => SomeDep());

pass_async_lifecycle_in_initialize_queue #

A dependencies that is asyncDep or rawAsyncDep must be passed to initializeQueue. Otherwise init/dispose methods will not be called.

use_async_dep_for_async_lifecycle #

Dependency implements AsyncLifecycle interface, must be use asyncDep or rawAsyncDep. Otherwise init/dispose methods will not be called.

Manual lints #

Not all of the lint rules are implemented so far. So there are all not implemented ones: manual linter.

16
likes
130
pub points
9%
popularity

Publisher

verified publisherdev.go.yandex

A package that contains static analysis rules for yx_scope DI framework

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

analyzer, analyzer_plugin, custom_lint_builder, yx_scope

More

Packages that depend on yx_scope_linter