Enable a more personalized developer experience within the IDE.
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
- Motivation
- Features
- CLI Installation
- Usage
- Example Sidecar Rule Packages
- Troubleshooting
- Contributing
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.
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 | ✅ | ✅ | ✅ |
See the below guides for information on how to create and use Sidecar 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:
- design_system_lints
- dart_lints - Sidecar port of the official Dart lints, for benchmarking purposes
Some Sidecar tasks are easier with the CLI tool. To install the CLI, simply run:
dart pub global activate sidecar
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.