Hugo Pointcheval 640cfaf118
All checks were successful
continuous-integration/drone/push Build is passing
refactor(analysis): follow melos versioning
2022-12-12 22:15:32 -05:00

109 lines
3.6 KiB
Markdown

<!--
* Copyright (C) 2022 WYATT GROUP
* Please see the AUTHORS file for details.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
-->
# Wyatt Analysis
![SDK: Dart & Flutter](https://img.shields.io/badge/SDK-Dart%20%7C%20Flutter-blue?style=flat-square)
This package provides lint rules for Dart and Flutter which are used at [Wyatt](https://wyattapp.io) and [Wyatt Studio](https://wyatt-studio.fr). For more information, see the complete list of options in **lib/analysis_options.2.3.0.yaml**.
**Note**: This package was heavily inspired by [pedantic](https://github.com/dart-lang/pedantic), [Very Good Analysis](https://github.com/VeryGoodOpenSource/very_good_analysis) and the official [flutter_lints](https://pub.dev/packages/flutter_lints).
## Usage
To use the lints, add a dependency in your `pubspec.yaml`:
```yaml
wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
version: 2.3.0
```
Then, add an include in `analysis_options.yaml`:
```yaml
include: package:wyatt_analysis/analysis_options.yaml
```
This will ensure you always use the latest **Dart** version of the lints. To get the latest **Flutter** superset:
```yaml
include: package:wyatt_analysis/analysis_options.flutter.yaml
```
If you wish to restrict the lint version, specify a version of `analysis_options.yaml` instead:
```yaml
include: package:wyatt_analysis/analysis_options.flutter.2.3.0.yaml
```
If you just want **Dart** version:
```yaml
include: package:wyatt_analysis/analysis_options.2.3.0.yaml
```
## Suppressing Lints
There may be cases where specific lint rules are undesirable. Lint rules can be surpressed at the line, file, or project level.
An example use case for suppressing lint rules at the file level is suppressing the `prefer_const_constructors` in order to achieve 100% code coverage. This is due to the fact that const constructors are executed before the tests are run, resulting in no coverage collection.
### Line Level
To surpress a specific lint rule for a specific line of code, use an `ignore` comment directly above the line:
```dart
// ignore: public_member_api_docs
class A {}
```
### File Level
To surpress a specific lint rule of a specific file, use an `ignore_for_file` comment at the top of the file:
```dart
// ignore_for_file: public_member_api_docs
class A {}
class B {}
```
### Project Level
To surpress a specific lint rule for an entire project, modify `analysis_options.yaml`:
```yaml
include: package:wyatt_analysis/analysis_options.yaml
linter:
rules:
public_member_api_docs: false
```
## Badge
To indicate your project is using `wyatt_analysis` → [![style: wyatt analysis](https://img.shields.io/badge/Style-Wyatt%20Analysis-blue)](https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis)
```md
[![style: wyatt analysis](https://img.shields.io/badge/Style-Wyatt%20Analysis-blue)](https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis)
```
## Notes
You can explore every lint rules [here](https://dart-lang.github.io/linter/lints/).