PackageTrack
Sign in Get early access

custom_lint_builder

A package to help writing custom linters

0.8.1 504K downloads/mo #513 most downloaded on pub.dev invertase/dart_custom_lint

What this package is like to depend on

Last release 11 months ago

09 Sep 2025

Release timing varies

gaps range from 9 days to 5 months

Nearly every release is documented

notes for 69 of 72 stable releases

1 version withdrawn

withdrawn after publishing

4 years old

75 releases · first in 2022

1 release in the last 12 months

see the full history below

Release timeline

75 releases · Apr 2022 to Sep 2025
2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 60 of 75
  1. 0.8.1 09 Sep 2025
    Release notes

    custom_lint : 0.8.0 -> 0.8.1
    custom_lint_builder : 0.8.0 -> 0.8.1

    Open source →
    Release notes

    Support analyzer 8.0.0

    Open source →
  2. 0.8.0 25 Jul 2025
    Release notes

    Support analyzer 7.5.0

    Open source →
  3. 0.7.7 25 Jul 2025 withdrawn

    Nothing published for this version

  4. 0.7.6 18 Jul 2025
    Release notes
    • custom_lint upgraded to 0.7.6
    Open source →
  5. 0.7.5 27 Feb 2025
    Release notes

    Fix inconsistent version

    Open source →
  6. 0.7.4 27 Feb 2025
    Release notes
    • custom_lint upgraded to 0.7.4
    Open source →
  7. 0.7.3 08 Feb 2025
    Release notes
    • custom_lint upgraded to 0.7.3
    Open source →
  8. 0.7.2 29 Jan 2025
    Release notes
    • custom_lint upgraded to 0.7.2
    Open source →
  9. 0.7.1 08 Jan 2025
    Release notes
    • Support analyzer 7.0.0
    Open source →
  10. 0.7.0 27 Oct 2024
    Release notes
    • custom_lint --fix and the generated "Fix all <code>" assists now correctly handle imports.
    • Now supports a broad number of analyzer version.
    Open source →
  11. 0.6.10 10 Oct 2024
    Release notes
    • custom_lint upgraded to 0.6.10
    • custom_lint_core upgraded to 0.6.10
    Open source →
  12. 0.6.9 09 Oct 2024
    Release notes
    • custom_lint upgraded to 0.6.9
    • custom_lint_core upgraded to 0.6.9
    Open source →
  13. 0.6.8 08 Oct 2024
    Release notes
    • Fix CI
    Open source →
  14. 0.6.7 08 Sep 2024
    Release notes
    • custom_lint upgraded to 0.6.7
    Open source →
  15. 0.6.6 08 Sep 2024
    Release notes
    • custom_lint upgraded to 0.6.6
    Open source →
  16. 0.6.5 15 Aug 2024
    Release notes
    • Upgraded to analyzer ^6.6.0. This is a quick fix to unblock the stable Flutter channel. A more robust fix will come later.
    • Fixed a bug where isSuperTypeOf throws if the element is null (thanks to @charlescyt)
    Open source →
  17. 0.6.4 16 Mar 2024
    Release notes
    • custom_lint upgraded to 0.6.4
    Open source →
  18. 0.6.3 16 Mar 2024
    Release notes
    • custom_lint upgraded to 0.6.3
    • custom_lint_core upgraded to 0.6.3
    Open source →
  19. 0.6.2 19 Feb 2024
    Release notes
    • Upgrade analyzer to support 6.4.0
    • Fix null exception when using TypeChecker.isSuperTypeOf (thanks to @charlescyt)
    Open source →
  20. 0.6.1 14 Feb 2024
    Release notes
    • custom_lint_core upgraded to 0.6.1
    Open source →
  21. 0.6.0 04 Feb 2024
    Release notes
    • Bumped minimum Dart SDK to 3.0.0
    • Added support for --fix
    Open source →
  22. 0.5.14 03 Feb 2024
    Release notes
    • custom_lint_core upgraded to 0.5.14
    Open source →
  23. 0.5.13 03 Feb 2024
    Release notes
    • custom_lint_core upgraded to 0.5.13
    Open source →
  24. 0.5.12 02 Feb 2024
    Release notes
    • custom_lint_core upgraded to 0.5.12
    Open source →
  25. 0.5.11 27 Jan 2024
    Release notes
    • Added support for analysis_options.yaml that are nt at the root of the project (thanks to @mrgnhnt96)
    Open source →
  26. 0.5.10 26 Jan 2024
    Release notes
    • custom_lint_core upgraded to 0.5.10
    Open source →
  27. 0.5.9 26 Jan 2024
    Release notes
    • custom_lint_core upgraded to 0.5.9
    Open source →
  28. 0.5.8 09 Jan 2024
    Release notes
    • // ignore comments now correctly respect indentation when they are inserted (thanks to @PiotrRogulski)
    Open source →
  29. 0.5.7 20 Nov 2023
    Release notes
    • custom_lint upgraded to 0.5.7
    • custom_lint_core upgraded to 0.5.7
    Open source →
  30. 0.5.6 30 Oct 2023
    Release notes
    • custom_lint upgraded to 0.5.6
    • custom_lint_core upgraded to 0.5.6
    Open source →
  31. 0.5.5 26 Oct 2023
    Release notes
    • custom_lint upgraded to 0.5.5
    • custom_lint_core upgraded to 0.5.5
    Open source →
  32. 0.5.4 20 Oct 2023
    Release notes
    • custom_lint upgraded to 0.5.4
    • custom_lint_core upgraded to 0.5.4
    Open source →
  33. 0.5.3 29 Aug 2023
    Release notes
    • custom_lint upgraded to 0.5.3
    • custom_lint_core upgraded to 0.5.3
    Open source →
  34. 0.5.2 16 Aug 2023
    Release notes
    • Support both analyzer 5.12.0 and 6.0.0 at the same time.
    • Attempt at fixing the windows crash
    Open source →
  35. 0.5.1 03 Aug 2023

    Nothing published for this version

  36. 0.5.1-dev 10 Jul 2023 pre-release

    Nothing published for this version

  37. 0.5.0 21 Jun 2023
    Release notes
    • custom_lint upgraded to 0.5.0
    • custom_lint_core upgraded to 0.5.0
    Open source →
  38. 0.4.0 12 May 2023
    Release notes
    • Report uncaught exceptions inside context.addPostRunCallback
    • Added support for analyzer 5.12.0
    Open source →
  39. 0.3.4 19 Apr 2023
    Release notes
    • custom_lint upgraded to 0.3.4
    • custom_lint_core upgraded to 0.3.4
    Open source →
  40. 0.3.3 06 Apr 2023
    Release notes
    • Upgraded analyzer to >=5.7.0 <5.11.0
    • LintRuleNodeRegistry and other AstVisitor-like now are based off GeneralizingAstVisitor instead of GeneralizingAstVisitor
    • Exposes the Pubspec in CustomLintContext
    Open source →
  41. 0.3.2 09 Mar 2023
    Release notes
    • custom_lint upgraded to 0.3.2
    • custom_lint_core upgraded to 0.3.2
    Open source →
  42. 0.3.1 09 Mar 2023
    Release notes
    • custom_lint_core upgraded to 0.3.1
    Open source →
  43. 0.2.12 28 Feb 2023
    Release notes

    Upgrade custom_lint

    Open source →
  44. 0.2.11 27 Feb 2023
    Release notes
    • Fixes LintCode.url no-longer showing-up in the IDE
    • Fix quick-fixes not working on the last offset of an analysis error
    • Bump minimum Dart SDK to sdk: ">=2.19.0 <3.0.0"
    Open source →
  45. 0.2.10 20 Feb 2023
    Release notes

    Fix filesToAnalyze only working on the file name instead of the file path.

    Open source →
  46. 0.2.9 13 Feb 2023
    Release notes

    Fix TypeChecker.fromPackage not always return true when it should

    Open source →
  47. 0.2.8 13 Feb 2023
    Release notes

    Fix exception thrown by TypeChecker.isExactlyType if DartType.element is null.

    Open source →
  48. 0.2.7 12 Feb 2023
    Release notes

    Extract LintRule and similar other utilities to a separate package: custom_lint_core.
    custom_lint_builder re-exports custom_lint_core, so the utilities are still available.

    Open source →
  49. 0.2.6 10 Feb 2023
    Release notes

    Fix infinite loop on InconsistentAnalysisException

    Open source →
  50. 0.2.5 10 Feb 2023
    Release notes
    • Fix custom_lint not correctly killing sub-processes when the IDE stops custom_lint.
    • Export incorrectly unexported matcherNormalizedPrioritizedSourceChangeSnapshot
    Open source →
  51. 0.2.4 09 Feb 2023
    Release notes
    • Added <DartLintRule/DartFix/DartAssist>.testRun & testAnalyzeAndRun methods, which enables programmatically running a lint/assist/fix against a Dart file.
    • Added matcherNormalizedPrioritizedSourceChangeSnapshot test matcher, which allows checking that a list of file edits matches against a JSON snapshot of the changes.
    Open source →
  52. 0.2.3 09 Feb 2023
    Release notes

    Fixes InconsistentAnalysisException

    Open source →
  53. 0.2.2 31 Jan 2023
    Release notes

    Fixes an exception thrown when a project contains images.

    Open source →
  54. 0.2.1 30 Jan 2023
    Release notes

    Add TypeChecker.every and TypeChecker.package

    Open source →
  55. 0.2.0 20 Jan 2023
    Release notes

    Large Breaking change This new version introduces large changes to how lints/fixes/assists are defined.
    Long story short, besides the createPlugin method, the entire syntax changed.

    See the readme, examples, and docs around how to use the new syntax.

    The new syntax has multiple benefits:

    • It is now possible to enable/disable lints inside the analysis_options.yaml as followed:

      # optional
      include: path/to/another/analysis_options.yaml
      
      custom_lint:
        rules:
          # enable a lint rule
          - my_lint_rule
          # A lint rule that is explicitly disabled
          - another_lint_rule: false
      

      Enabling/disabling lints is supported by default with the new syntax. Nothing to do~

    • Performance improvement when using a large number of lints. The workload of analyzing files is now shared between lints.

    • The new syntax makes the code simpler to maintain. Before, the PluginBase.getLints rapidly ended-up doing too much. Now, it is simple to split the implementation in multiple bits

    Open source →
  56. 0.1.2-dev 10 Jan 2023 pre-release
    Release notes

    Do some internal refactoring as an attempt to fix #60

    Open source →
  57. 0.1.1 09 Jan 2023
    Release notes
    • Fix an issue where plugins were hot-reloaded when the file analyzed changed.
    • Optimized analysis such that PluginBase.getLints() is theorically not reinvoked unless the file analyzed changed.
    Open source →
  58. 0.1.0 06 Jan 2023
    Release notes
    • Breaking: The plugin entrypoint has moved.
      Plugins no-longer should define a /bin/custom_lint.dart file. Instead they should define a /lib/<my_package_name>.dart

    • Breaking: The plugin entrypoint is modified. Plugins no-longer define a "main", but instead define a createPlugin function:

      Before:

      // /bin/custom_lint.dart
      void main(List<String> args, SendPort sendPort) {
        startPlugin(sendPort, MyPlugin());
      }
      

      After:

      // /lib/<my_package_name.dart
      MyPlugin createPlugin() => MyPlugin();
      
    • Add assist support. Inside your plugins, you can now override handleGetAssists:

      import 'package:analyzer_plugin/protocol/protocol_generated.dart'
        as analyzer_plugin;
      
      class MyPlugin extends PluginBase {
        // ...
      
        Future<analyzer_plugin.EditGetAssistsResult> handleGetAssists(
          ResolvedUnitResult resolvedUnitResult, {
          required int offset,
          required int length,
        }) async {
            // TODO return some assists for the given offset
        }
      }
      
    Open source →
  59. 0.0.16 09 Dec 2022
    Release notes

    Fix expect_lint not working if the file doesn't contain any lint.

    Open source →
  60. 0.0.15 06 Dec 2022
    Release notes
    • Custom_lint now has a built-in mechanism for testing lints. Simply write a file that should contain lints for your plugin. Then, using a syntax similar to // ignore, write a // expect_lint: code in the line before your lint:

      // expect_lint: riverpod_final_provider
      var provider = Provider(...);
      

      When doing this, there are two possible cases:

      • The line after the expect_lint correctly contains the expected lint.
        In that case, the lint is ignored (similarly to if we used // ignore)
      • The next line does not contain the lint. In that case, the expect_lint comment will have an error.

      This allows testing your plugins by simply running custom_lint on your test/example folder. Then, if any expected lint is missing, the command will fail. But if your plugin correctly emits the lint, the command will succeed.

    • Upgrade analyzer/analzer_plugin

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive