Add a README link to each plugin (#611)

This commit is contained in:
Charlie Marsh 2022-11-05 16:18:27 -04:00 committed by GitHub
parent 2727e5f3b7
commit 3597a94818
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 85 additions and 38 deletions

View file

@ -43,18 +43,17 @@ Read the [launch blog post](https://notes.crmarsh.com/python-tooling-could-be-mu
2. [Configuration](#configuration) 2. [Configuration](#configuration)
3. [Supported Rules](#supported-rules) 3. [Supported Rules](#supported-rules)
1. [Pyflakes](#pyflakes) 1. [Pyflakes](#pyflakes)
2. [pycodestyle (error)](#pycodestyle-error) 2. [pycodestyle](#pycodestyle)
3. [pycodestyle (warning)](#pycodestyle-warning) 3. [pydocstyle](#pydocstyle)
4. [pydocstyle](#pydocstyle) 4. [pyupgrade](#pyupgrade)
5. [pyupgrade](#pyupgrade) 5. [pep8-naming](#pep8-naming)
6. [pep8-naming](#pep8-naming) 6. [flake8-comprehensions](#flake8-comprehensions)
7. [flake8-comprehensions](#flake8-comprehensions) 7. [flake8-bugbear](#flake8-bugbear)
8. [flake8-bugbear](#flake8-bugbear) 8. [flake8-builtins](#flake8-builtins)
9. [flake8-builtins](#flake8-builtins) 9. [flake8-print](#flake8-print)
10. [flake8-print](#flake8-print) 10. [flake8-quotes](#flake8-quotes)
11. [flake8-quotes](#flake8-quotes) 11. [Ruff-specific rules](#ruff-specific-rules)
12. [Ruff-specific rules](#ruff-specific-rules) 12. [Meta rules](#meta-rules)
13. [Meta rules](#meta-rules)
5. [Editor Integrations](#editor-integrations) 5. [Editor Integrations](#editor-integrations)
6. [FAQ](#faq) 6. [FAQ](#faq)
7. [Development](#development) 7. [Development](#development)
@ -295,6 +294,8 @@ add `noqa` directives to all failing lines, with the appropriate error codes.**
## Supported Rules ## Supported Rules
Regardless of the rule's origin, Ruff re-implements every rule in Rust as a first-party feature.
By default, Ruff enables all `E` and `F` error codes, which correspond to those built-in to Flake8. By default, Ruff enables all `E` and `F` error codes, which correspond to those built-in to Flake8.
The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` command-line option. The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` command-line option.
@ -304,6 +305,8 @@ The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` com
### Pyflakes ### Pyflakes
For more, see [Pyflakes](https://pypi.org/project/pyflakes/2.5.0/) on PyPI.
| Coade | Name | Message | Fix | | Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- | | ---- | ---- | ------- | --- |
| F401 | UnusedImport | `...` imported but unused | 🛠 | | F401 | UnusedImport | `...` imported but unused | 🛠 |
@ -335,7 +338,9 @@ The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` com
| F841 | UnusedVariable | Local variable `...` is assigned to but never used | | | F841 | UnusedVariable | Local variable `...` is assigned to but never used | |
| F901 | RaiseNotImplemented | `raise NotImplemented` should be `raise NotImplementedError` | 🛠 | | F901 | RaiseNotImplemented | `raise NotImplemented` should be `raise NotImplementedError` | 🛠 |
### pycodestyle (error) ### pycodestyle
For more, see [pycodestyle](https://pypi.org/project/pycodestyle/2.9.1/) on PyPI.
| Coade | Name | Message | Fix | | Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- | | ---- | ---- | ------- | --- |
@ -353,16 +358,13 @@ The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` com
| E743 | AmbiguousFunctionName | Ambiguous function name: `...` | | | E743 | AmbiguousFunctionName | Ambiguous function name: `...` | |
| E902 | IOError | IOError: `...` | | | E902 | IOError | IOError: `...` | |
| E999 | SyntaxError | SyntaxError: `...` | | | E999 | SyntaxError | SyntaxError: `...` | |
### pycodestyle (warning)
| Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- |
| W292 | NoNewLineAtEndOfFile | No newline at end of file | | | W292 | NoNewLineAtEndOfFile | No newline at end of file | |
| W605 | InvalidEscapeSequence | Invalid escape sequence: '\c' | | | W605 | InvalidEscapeSequence | Invalid escape sequence: '\c' | |
### pydocstyle ### pydocstyle
For more, see [pydocstyle](https://pypi.org/project/pydocstyle/6.1.1/) on PyPI.
| Coade | Name | Message | Fix | | Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- | | ---- | ---- | ------- | --- |
| D100 | PublicModule | Missing docstring in public module | | | D100 | PublicModule | Missing docstring in public module | |
@ -412,6 +414,8 @@ The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` com
### pyupgrade ### pyupgrade
For more, see [pyupgrade](https://pypi.org/project/pyupgrade/3.2.0/) on PyPI.
| Coade | Name | Message | Fix | | Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- | | ---- | ---- | ------- | --- |
| U001 | UselessMetaclassType | `__metaclass__ = type` is implied | 🛠 | | U001 | UselessMetaclassType | `__metaclass__ = type` is implied | 🛠 |
@ -425,6 +429,8 @@ The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` com
### pep8-naming ### pep8-naming
For more, see [pep8-naming](https://pypi.org/project/pep8-naming/0.13.2/) on PyPI.
| Coade | Name | Message | Fix | | Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- | | ---- | ---- | ------- | --- |
| N801 | InvalidClassName | Class name `...` should use CapWords convention | | | N801 | InvalidClassName | Class name `...` should use CapWords convention | |
@ -445,6 +451,8 @@ The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` com
### flake8-comprehensions ### flake8-comprehensions
For more, see [flake8-comprehensions](https://pypi.org/project/flake8-comprehensions/3.10.1/) on PyPI.
| Coade | Name | Message | Fix | | Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- | | ---- | ---- | ------- | --- |
| C400 | UnnecessaryGeneratorList | Unnecessary generator (rewrite as a `list` comprehension) | 🛠 | | C400 | UnnecessaryGeneratorList | Unnecessary generator (rewrite as a `list` comprehension) | 🛠 |
@ -466,6 +474,8 @@ The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` com
### flake8-bugbear ### flake8-bugbear
For more, see [flake8-bugbear](https://pypi.org/project/flake8-bugbear/22.10.27/) on PyPI.
| Coade | Name | Message | Fix | | Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- | | ---- | ---- | ------- | --- |
| B002 | UnaryPrefixIncrement | Python does not support the unary prefix increment. | | | B002 | UnaryPrefixIncrement | Python does not support the unary prefix increment. | |
@ -484,6 +494,8 @@ The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` com
### flake8-builtins ### flake8-builtins
For more, see [flake8-builtins](https://pypi.org/project/flake8-builtins/2.0.1/) on PyPI.
| Coade | Name | Message | Fix | | Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- | | ---- | ---- | ------- | --- |
| A001 | BuiltinVariableShadowing | Variable `...` is shadowing a python builtin | | | A001 | BuiltinVariableShadowing | Variable `...` is shadowing a python builtin | |
@ -492,6 +504,8 @@ The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` com
### flake8-print ### flake8-print
For more, see [flake8-print](https://pypi.org/project/flake8-print/5.0.0/) on PyPI.
| Coade | Name | Message | Fix | | Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- | | ---- | ---- | ------- | --- |
| T201 | PrintFound | `print` found | 🛠 | | T201 | PrintFound | `print` found | 🛠 |
@ -499,6 +513,8 @@ The 🛠 emoji indicates that a rule is automatically fixable by the `--fix` com
### flake8-quotes ### flake8-quotes
For more, see [flake8-quotes](https://pypi.org/project/flake8-quotes/3.3.1/) on PyPI.
| Coade | Name | Message | Fix | | Coade | Name | Message | Fix |
| ---- | ---- | ------- | --- | | ---- | ---- | ------- | --- |
| Q000 | BadQuotesInlineString | Single quotes found but double quotes preferred | | | Q000 | BadQuotesInlineString | Single quotes found but double quotes preferred | |

View file

@ -28,6 +28,16 @@ pub fn main(cli: &Cli) -> Result<()> {
output.push('\n'); output.push('\n');
output.push('\n'); output.push('\n');
if let Some(url) = check_category.url() {
output.push_str(&format!(
"For more, see [{}]({}) on PyPI.",
check_category.title(),
url
));
output.push('\n');
output.push('\n');
}
output.push_str("| Coade | Name | Message | Fix |"); output.push_str("| Coade | Name | Message | Fix |");
output.push('\n'); output.push('\n');
output.push_str("| ---- | ---- | ------- | --- |"); output.push_str("| ---- | ---- | ------- | --- |");

View file

@ -195,8 +195,7 @@ pub enum CheckCode {
#[derive(EnumIter, Debug, PartialEq, Eq)] #[derive(EnumIter, Debug, PartialEq, Eq)]
pub enum CheckCategory { pub enum CheckCategory {
Pyflakes, Pyflakes,
PycodestyleError, Pycodestyle,
PycodestyleWarning,
Pydocstyle, Pydocstyle,
Pyupgrade, Pyupgrade,
PEP8Naming, PEP8Naming,
@ -212,8 +211,7 @@ pub enum CheckCategory {
impl CheckCategory { impl CheckCategory {
pub fn title(&self) -> &'static str { pub fn title(&self) -> &'static str {
match self { match self {
CheckCategory::PycodestyleError => "pycodestyle (error)", CheckCategory::Pycodestyle => "pycodestyle",
CheckCategory::PycodestyleWarning => "pycodestyle (warning)",
CheckCategory::Pyflakes => "Pyflakes", CheckCategory::Pyflakes => "Pyflakes",
CheckCategory::Flake8Builtins => "flake8-builtins", CheckCategory::Flake8Builtins => "flake8-builtins",
CheckCategory::Flake8Bugbear => "flake8-bugbear", CheckCategory::Flake8Bugbear => "flake8-bugbear",
@ -227,6 +225,29 @@ impl CheckCategory {
CheckCategory::Meta => "Meta rules", CheckCategory::Meta => "Meta rules",
} }
} }
pub fn url(&self) -> Option<&'static str> {
match self {
CheckCategory::Pycodestyle => Some("https://pypi.org/project/pycodestyle/2.9.1/"),
CheckCategory::Pyflakes => Some("https://pypi.org/project/pyflakes/2.5.0/"),
CheckCategory::Flake8Builtins => {
Some("https://pypi.org/project/flake8-builtins/2.0.1/")
}
CheckCategory::Flake8Bugbear => {
Some("https://pypi.org/project/flake8-bugbear/22.10.27/")
}
CheckCategory::Flake8Comprehensions => {
Some("https://pypi.org/project/flake8-comprehensions/3.10.1/")
}
CheckCategory::Flake8Print => Some("https://pypi.org/project/flake8-print/5.0.0/"),
CheckCategory::Flake8Quotes => Some("https://pypi.org/project/flake8-quotes/3.3.1/"),
CheckCategory::Pyupgrade => Some("https://pypi.org/project/pyupgrade/3.2.0/"),
CheckCategory::Pydocstyle => Some("https://pypi.org/project/pydocstyle/6.1.1/"),
CheckCategory::PEP8Naming => Some("https://pypi.org/project/pep8-naming/0.13.2/"),
CheckCategory::Ruff => None,
CheckCategory::Meta => None,
}
}
} }
#[allow(clippy::upper_case_acronyms)] #[allow(clippy::upper_case_acronyms)]
@ -639,22 +660,22 @@ impl CheckCode {
pub fn category(&self) -> CheckCategory { pub fn category(&self) -> CheckCategory {
match self { match self {
CheckCode::E402 => CheckCategory::PycodestyleError, CheckCode::E402 => CheckCategory::Pycodestyle,
CheckCode::E501 => CheckCategory::PycodestyleError, CheckCode::E501 => CheckCategory::Pycodestyle,
CheckCode::E711 => CheckCategory::PycodestyleError, CheckCode::E711 => CheckCategory::Pycodestyle,
CheckCode::E712 => CheckCategory::PycodestyleError, CheckCode::E712 => CheckCategory::Pycodestyle,
CheckCode::E713 => CheckCategory::PycodestyleError, CheckCode::E713 => CheckCategory::Pycodestyle,
CheckCode::E714 => CheckCategory::PycodestyleError, CheckCode::E714 => CheckCategory::Pycodestyle,
CheckCode::E721 => CheckCategory::PycodestyleError, CheckCode::E721 => CheckCategory::Pycodestyle,
CheckCode::E722 => CheckCategory::PycodestyleError, CheckCode::E722 => CheckCategory::Pycodestyle,
CheckCode::E731 => CheckCategory::PycodestyleError, CheckCode::E731 => CheckCategory::Pycodestyle,
CheckCode::E741 => CheckCategory::PycodestyleError, CheckCode::E741 => CheckCategory::Pycodestyle,
CheckCode::E742 => CheckCategory::PycodestyleError, CheckCode::E742 => CheckCategory::Pycodestyle,
CheckCode::E743 => CheckCategory::PycodestyleError, CheckCode::E743 => CheckCategory::Pycodestyle,
CheckCode::E902 => CheckCategory::PycodestyleError, CheckCode::E902 => CheckCategory::Pycodestyle,
CheckCode::E999 => CheckCategory::PycodestyleError, CheckCode::E999 => CheckCategory::Pycodestyle,
CheckCode::W292 => CheckCategory::PycodestyleWarning, CheckCode::W292 => CheckCategory::Pycodestyle,
CheckCode::W605 => CheckCategory::PycodestyleWarning, CheckCode::W605 => CheckCategory::Pycodestyle,
CheckCode::F401 => CheckCategory::Pyflakes, CheckCode::F401 => CheckCategory::Pyflakes,
CheckCode::F402 => CheckCategory::Pyflakes, CheckCode::F402 => CheckCategory::Pyflakes,
CheckCode::F403 => CheckCategory::Pyflakes, CheckCode::F403 => CheckCategory::Pyflakes,