Thanks a lot for the support! I'll start with a few technical differences in current implementations of each package:
- Sidecar is built to run all Rule packages on a single isolate, whereas DCL runs each package on a separate isolate (although Remi plans on doing the same in DCL eventually); this results in significant less memory usage when using multiple rule packages
- Sidecar Rule definitions are very closely formatted to the Dart official lints, especially when using AstVisitors as the base for Rules (early benchmarks showed this was the most performant, scalable architecture); with DCL, all rules start with a ResolvedUnitResult, whereas Sidecar Rules are subclasses of AstVisitors; so Sidecar rules only need to operate on specific AstNodes (e.g. if my rule needs to only analyze strings, then I use ```visitStringLiteral``` method only)... on the other hand, DCL must essentially traverse the whole AST for every lint definition. for more info on potential pros/cons, see this well written
issue- configuration features (via sidecar.yaml): includes/excludes globs (on project-specific, package-specific and/or rule-specific level), override default lint severity , url links to lint documentation in IDE hover window, and many more features planned (see
features)
On a forward-looking level, I'm looking to go outside of the scope of a simple analyzer_plugin in terms of improving the entire usage DevX; for example, I'm prototyping ways to use reflection as a means to simplify the way rules can be written. (checkout the readme
here for some rough ideas on utility improvements). I'm focused on making rules as simple to create and maintain as possible, so that you can easily distribute your own rule packages or simply set them up a couple lints for a short-term project.
All of this said, Sidecar was initially influenced by DCL and other similar projects, and I'm specifically creating
a lot of architecture documentation in hopes that projects like DCL can take what they want from them. Ultimately, I'm very passionate about spearheading this effort to build upon the already incredible Dart tooling, and I'm determined to make Sidecar a powerful multi-purpose tool to make the community more efficient at developing apps.
Though I'm aware of some bugs here and there, the current version of sidecar works well from my preliminary tests; if you decide to try Sidecar out, I'd sincerely appreciate any feedback you have, positive or negative! :)
Patt