Sidecar Analyzer

Enable a more personalized developer experience within the IDE.

A screenshot of a Sidecar lint popup in an IDE

Build Status codecov License: MIT pub package

Visit the official documentation site for work-in-progress tutorials and explanations of core concepts

This is an experimental package which is expected to change slightly until an official 0.1.0 release. However, the core architecture of Sidecar has been designed around the Dart-official package:analyzer APIs, and therefore any rule packages you may want to experiment with will be easy to port over to any future APIs

Overview

Motivation

Dart lints are incredibly useful for keeping a codebase clean and tidy, but code analysis use cases don't need to end at official rules. What if we could use these same tools to enforce highly-opinionated rules for a particular package ecosystem (BloC vs Riverpod) or for a particular app?

The goal of Sidecar is to enable a more personalized developer experience by allowing quick and easy access to the core lint and code assist tools of modern IDEs.

Features

Lint Rules IDE CLI Debug
Lint messages
Define a default severity
Apply Quick Fix suggestions 🚧 🚧
(IDE) URL links to rule documentation 🚫 🚫
(CLI) Alternate output formats 🚫 🚧
Ignore statements
CodeEdit Rules IDE CLI Debug
QuickAssist rules 🚧
Refactorings (rename, extract, etc.)
Code Completion
Rule Configuration (sidecar.yaml) IDE CLI Debug
Explicitly Enable/Disable rules
(Lints) Override default severity
Rule-level include/exclude globs 🚧
Package-level include/exclude globs 🚧
Project-level include/exclude globs 🚧
Customizable rule configurations
Multi-import inheritance
MacOS Linux Windows
Environment Support

Usage

See the below guides for information on how to create and use Sidecar packages.

Example Sidecar Rule Packages

To explore how rule packages are created or to use them to work on your codebase, take a look at the following rule packages:

Installing the CLI tool

Some Sidecar tasks are easier with the CLI tool. To install the CLI, simply run:

dart pub global activate sidecar

Troubleshooting

Contributing

Suggestions or feature requests would be highly appreciated at this point in the development process, so that as many development use cases can be accounted for as possible. It's encouraged to reach out or open a Github issue against the Sidecar repository.