129 lines
4.1 KiB
Markdown
129 lines
4.1 KiB
Markdown
<!--
|
|
* Copyright (C) 2023 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
|
|
|
|

|
|
|
|
This package provides lint rules for Dart and Flutter which are used at [Wyatt Studio](https://wyatt-studio.fr). For more information, see the complete list of options in **lib/analysis_options.2.4.1.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).
|
|
|
|
## Adding Wyatt Analysis to your project
|
|
|
|
Using CLI:
|
|
|
|
```sh
|
|
dart pub add wyatt_analysis:2.4.1 --dev --hosted-url=https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
|
```
|
|
|
|
## 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.4.1
|
|
```
|
|
|
|
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.4.1.yaml
|
|
```
|
|
|
|
If you just want **Dart** version:
|
|
|
|
```yaml
|
|
include: package:wyatt_analysis/analysis_options.2.4.1.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` → [](https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis)
|
|
|
|
```md
|
|
[](https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis)
|
|
```
|
|
|
|
## Development
|
|
|
|
When you want to create a new version of the plugin. Before any modification, execute the following command to create new files:
|
|
|
|
```sh
|
|
./new_version.sh <new_version>
|
|
```
|
|
|
|
The previous version is automatically detected thanks to the `.latest_version` file.
|
|
So `.latest_version` needs to be versioned!
|
|
|
|
## Notes
|
|
|
|
You can explore every lint rules [here](https://dart-lang.github.io/linter/lints/).
|