mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-02 09:52:18 +00:00
Add documentation for flake8-quotes rules (#2650)
This commit is contained in:
parent
367f115d83
commit
a9aa96b24f
10 changed files with 192 additions and 8 deletions
|
@ -1162,10 +1162,10 @@ For more, see [flake8-quotes](https://pypi.org/project/flake8-quotes/) on PyPI.
|
||||||
|
|
||||||
| Code | Name | Message | Fix |
|
| Code | Name | Message | Fix |
|
||||||
| ---- | ---- | ------- | --- |
|
| ---- | ---- | ------- | --- |
|
||||||
| Q000 | bad-quotes-inline-string | Double quotes found but single quotes preferred | 🛠 |
|
| [Q000](https://github.com/charliermarsh/ruff/blob/main/docs/rules/bad-quotes-inline-string.md) | [bad-quotes-inline-string](https://github.com/charliermarsh/ruff/blob/main/docs/rules/bad-quotes-inline-string.md) | Double quotes found but single quotes preferred | 🛠 |
|
||||||
| Q001 | bad-quotes-multiline-string | Double quote multiline found but single quotes preferred | 🛠 |
|
| [Q001](https://github.com/charliermarsh/ruff/blob/main/docs/rules/bad-quotes-multiline-string.md) | [bad-quotes-multiline-string](https://github.com/charliermarsh/ruff/blob/main/docs/rules/bad-quotes-multiline-string.md) | Double quote multiline found but single quotes preferred | 🛠 |
|
||||||
| Q002 | bad-quotes-docstring | Double quote docstring found but single quotes preferred | 🛠 |
|
| [Q002](https://github.com/charliermarsh/ruff/blob/main/docs/rules/bad-quotes-docstring.md) | [bad-quotes-docstring](https://github.com/charliermarsh/ruff/blob/main/docs/rules/bad-quotes-docstring.md) | Double quote docstring found but single quotes preferred | 🛠 |
|
||||||
| Q003 | avoid-quote-escape | Change outer quotes to avoid escaping inner quotes | 🛠 |
|
| [Q003](https://github.com/charliermarsh/ruff/blob/main/docs/rules/avoid-quote-escape.md) | [avoid-quote-escape](https://github.com/charliermarsh/ruff/blob/main/docs/rules/avoid-quote-escape.md) | Change outer quotes to avoid escaping inner quotes | 🛠 |
|
||||||
|
|
||||||
### flake8-return (RET)
|
### flake8-return (RET)
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,24 @@ use crate::source_code::Locator;
|
||||||
use crate::violation::AlwaysAutofixableViolation;
|
use crate::violation::AlwaysAutofixableViolation;
|
||||||
|
|
||||||
define_violation!(
|
define_violation!(
|
||||||
|
/// ### What it does
|
||||||
|
/// Checks for inline strings that use single quotes or double quotes,
|
||||||
|
/// depending on the value of the [`inline-quotes`](https://github.com/charliermarsh/ruff#inline-quotes)
|
||||||
|
/// setting.
|
||||||
|
///
|
||||||
|
/// ### Why is this bad?
|
||||||
|
/// Consistency is good. Use either single or double quotes for inline
|
||||||
|
/// strings, but be consistent.
|
||||||
|
///
|
||||||
|
/// ### Example
|
||||||
|
/// ```python
|
||||||
|
/// foo = 'bar'
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// Assuming `inline-quotes` is set to `double`, use instead:
|
||||||
|
/// ```python
|
||||||
|
/// foo = "bar"
|
||||||
|
/// ```
|
||||||
pub struct BadQuotesInlineString {
|
pub struct BadQuotesInlineString {
|
||||||
pub quote: Quote,
|
pub quote: Quote,
|
||||||
}
|
}
|
||||||
|
@ -36,6 +54,28 @@ impl AlwaysAutofixableViolation for BadQuotesInlineString {
|
||||||
}
|
}
|
||||||
|
|
||||||
define_violation!(
|
define_violation!(
|
||||||
|
/// ### What it does
|
||||||
|
/// Checks for multiline strings that use single quotes or double quotes,
|
||||||
|
/// depending on the value of the [`multiline-quotes`](https://github.com/charliermarsh/ruff#multiline-quotes)
|
||||||
|
/// setting.
|
||||||
|
///
|
||||||
|
/// ### Why is this bad?
|
||||||
|
/// Consistency is good. Use either single or double quotes for multiline
|
||||||
|
/// strings, but be consistent.
|
||||||
|
///
|
||||||
|
/// ### Example
|
||||||
|
/// ```python
|
||||||
|
/// foo = '''
|
||||||
|
/// bar
|
||||||
|
/// '''
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// Assuming `multiline-quotes` is set to `double`, use instead:
|
||||||
|
/// ```python
|
||||||
|
/// foo = """
|
||||||
|
/// bar
|
||||||
|
/// """
|
||||||
|
/// ```
|
||||||
pub struct BadQuotesMultilineString {
|
pub struct BadQuotesMultilineString {
|
||||||
pub quote: Quote,
|
pub quote: Quote,
|
||||||
}
|
}
|
||||||
|
@ -60,6 +100,27 @@ impl AlwaysAutofixableViolation for BadQuotesMultilineString {
|
||||||
}
|
}
|
||||||
|
|
||||||
define_violation!(
|
define_violation!(
|
||||||
|
/// ### What it does
|
||||||
|
/// Checks for docstrings that use single quotes or double quotes, depending on the value of the [`docstring-quotes`](https://github.com/charliermarsh/ruff#docstring-quotes)
|
||||||
|
/// setting.
|
||||||
|
///
|
||||||
|
/// ### Why is this bad?
|
||||||
|
/// Consistency is good. Use either single or double quotes for docstring
|
||||||
|
/// strings, but be consistent.
|
||||||
|
///
|
||||||
|
/// ### Example
|
||||||
|
/// ```python
|
||||||
|
/// '''
|
||||||
|
/// bar
|
||||||
|
/// '''
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// Assuming `docstring-quotes` is set to `double`, use instead:
|
||||||
|
/// ```python
|
||||||
|
/// """
|
||||||
|
/// bar
|
||||||
|
/// """
|
||||||
|
/// ```
|
||||||
pub struct BadQuotesDocstring {
|
pub struct BadQuotesDocstring {
|
||||||
pub quote: Quote,
|
pub quote: Quote,
|
||||||
}
|
}
|
||||||
|
@ -84,6 +145,23 @@ impl AlwaysAutofixableViolation for BadQuotesDocstring {
|
||||||
}
|
}
|
||||||
|
|
||||||
define_violation!(
|
define_violation!(
|
||||||
|
/// ### What it does
|
||||||
|
/// Checks for strings that include escaped quotes, and suggests changing
|
||||||
|
/// the quote style to avoid the need to escape them.
|
||||||
|
///
|
||||||
|
/// ### Why is this bad?
|
||||||
|
/// It's preferable to avoid escaped quotes in strings. By changing the
|
||||||
|
/// outer quote style, you can avoid escaping inner quotes.
|
||||||
|
///
|
||||||
|
/// ### Example
|
||||||
|
/// ```python
|
||||||
|
/// foo = 'bar\'s'
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// Use instead:
|
||||||
|
/// ```python
|
||||||
|
/// foo = "bar's"
|
||||||
|
/// ```
|
||||||
pub struct AvoidQuoteEscape;
|
pub struct AvoidQuoteEscape;
|
||||||
);
|
);
|
||||||
impl AlwaysAutofixableViolation for AvoidQuoteEscape {
|
impl AlwaysAutofixableViolation for AvoidQuoteEscape {
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
use crate::ast::helpers::unparse_constant;
|
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use ruff_macros::{define_violation, derive_message_formats};
|
use ruff_macros::{define_violation, derive_message_formats};
|
||||||
use rustpython_parser::ast::{Cmpop, Expr, ExprKind, Located};
|
use rustpython_parser::ast::{Cmpop, Expr, ExprKind, Located};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
use crate::ast::helpers::unparse_constant;
|
||||||
use crate::ast::types::Range;
|
use crate::ast::types::Range;
|
||||||
use crate::checkers::ast::Checker;
|
use crate::checkers::ast::Checker;
|
||||||
use crate::registry::Diagnostic;
|
use crate::registry::Diagnostic;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
use crate::ast::helpers::unparse_constant;
|
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use ruff_macros::{define_violation, derive_message_formats};
|
use ruff_macros::{define_violation, derive_message_formats};
|
||||||
use rustpython_parser::ast::{Constant, Expr, ExprKind};
|
use rustpython_parser::ast::{Constant, Expr, ExprKind};
|
||||||
|
|
||||||
|
use crate::ast::helpers::unparse_constant;
|
||||||
use crate::ast::types::Range;
|
use crate::ast::types::Range;
|
||||||
use crate::checkers::ast::Checker;
|
use crate::checkers::ast::Checker;
|
||||||
use crate::registry::Diagnostic;
|
use crate::registry::Diagnostic;
|
||||||
|
|
|
@ -4,11 +4,10 @@
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
|
use ruff::registry::{Linter, Rule, RuleNamespace};
|
||||||
use ruff::AutofixAvailability;
|
use ruff::AutofixAvailability;
|
||||||
use strum::IntoEnumIterator;
|
use strum::IntoEnumIterator;
|
||||||
|
|
||||||
use ruff::registry::{Linter, Rule, RuleNamespace};
|
|
||||||
|
|
||||||
#[derive(clap::Args)]
|
#[derive(clap::Args)]
|
||||||
pub struct Args {
|
pub struct Args {
|
||||||
/// Write the generated docs to stdout (rather than to the filesystem).
|
/// Write the generated docs to stdout (rather than to the filesystem).
|
||||||
|
@ -22,10 +21,12 @@ pub fn main(args: &Args) -> Result<()> {
|
||||||
let mut output = String::new();
|
let mut output = String::new();
|
||||||
output.push_str(&format!("# {} ({})", rule.as_ref(), rule.code()));
|
output.push_str(&format!("# {} ({})", rule.as_ref(), rule.code()));
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
|
output.push('\n');
|
||||||
|
|
||||||
let (linter, _) = Linter::parse_code(rule.code()).unwrap();
|
let (linter, _) = Linter::parse_code(rule.code()).unwrap();
|
||||||
output.push_str(&format!("Derived from the **{}** linter.", linter.name()));
|
output.push_str(&format!("Derived from the **{}** linter.", linter.name()));
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
|
output.push('\n');
|
||||||
|
|
||||||
if let Some(autofix) = rule.autofixable() {
|
if let Some(autofix) = rule.autofixable() {
|
||||||
output.push_str(match autofix.available {
|
output.push_str(match autofix.available {
|
||||||
|
@ -33,6 +34,7 @@ pub fn main(args: &Args) -> Result<()> {
|
||||||
AutofixAvailability::Always => "Autofix is always available.",
|
AutofixAvailability::Always => "Autofix is always available.",
|
||||||
});
|
});
|
||||||
output.push('\n');
|
output.push('\n');
|
||||||
|
output.push('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
output.push_str(explanation.trim());
|
output.push_str(explanation.trim());
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
# assert-raises-exception (B017)
|
# assert-raises-exception (B017)
|
||||||
|
|
||||||
Derived from the **flake8-bugbear** linter.
|
Derived from the **flake8-bugbear** linter.
|
||||||
|
|
||||||
### What it does
|
### What it does
|
||||||
Checks for `self.assertRaises(Exception)`.
|
Checks for `self.assertRaises(Exception)`.
|
||||||
|
|
||||||
|
|
23
docs/rules/avoid-quote-escape.md
Normal file
23
docs/rules/avoid-quote-escape.md
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# avoid-quote-escape (Q003)
|
||||||
|
|
||||||
|
Derived from the **flake8-quotes** linter.
|
||||||
|
|
||||||
|
Autofix is always available.
|
||||||
|
|
||||||
|
### What it does
|
||||||
|
Checks for strings that include escaped quotes, and suggests changing
|
||||||
|
the quote style to avoid the need to escape them.
|
||||||
|
|
||||||
|
### Why is this bad?
|
||||||
|
It's preferable to avoid escaped quotes in strings. By changing the
|
||||||
|
outer quote style, you can avoid escaping inner quotes.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```python
|
||||||
|
foo = 'bar\'s'
|
||||||
|
```
|
||||||
|
|
||||||
|
Use instead:
|
||||||
|
```python
|
||||||
|
foo = "bar's"
|
||||||
|
```
|
27
docs/rules/bad-quotes-docstring.md
Normal file
27
docs/rules/bad-quotes-docstring.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# bad-quotes-docstring (Q002)
|
||||||
|
|
||||||
|
Derived from the **flake8-quotes** linter.
|
||||||
|
|
||||||
|
Autofix is always available.
|
||||||
|
|
||||||
|
### What it does
|
||||||
|
Checks for docstrings that use single quotes or double quotes, depending on the value of the [`docstring-quotes`](https://github.com/charliermarsh/ruff#docstring-quotes)
|
||||||
|
setting.
|
||||||
|
|
||||||
|
### Why is this bad?
|
||||||
|
Consistency is good. Use either single or double quotes for docstring
|
||||||
|
strings, but be consistent.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```python
|
||||||
|
'''
|
||||||
|
bar
|
||||||
|
'''
|
||||||
|
```
|
||||||
|
|
||||||
|
Assuming `docstring-quotes` is set to `double`, use instead:
|
||||||
|
```python
|
||||||
|
"""
|
||||||
|
bar
|
||||||
|
"""
|
||||||
|
```
|
24
docs/rules/bad-quotes-inline-string.md
Normal file
24
docs/rules/bad-quotes-inline-string.md
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# bad-quotes-inline-string (Q000)
|
||||||
|
|
||||||
|
Derived from the **flake8-quotes** linter.
|
||||||
|
|
||||||
|
Autofix is always available.
|
||||||
|
|
||||||
|
### What it does
|
||||||
|
Checks for inline strings that use single quotes or double quotes,
|
||||||
|
depending on the value of the [`inline-quotes`](https://github.com/charliermarsh/ruff#inline-quotes)
|
||||||
|
setting.
|
||||||
|
|
||||||
|
### Why is this bad?
|
||||||
|
Consistency is good. Use either single or double quotes for inline
|
||||||
|
strings, but be consistent.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```python
|
||||||
|
foo = 'bar'
|
||||||
|
```
|
||||||
|
|
||||||
|
Assuming `inline-quotes` is set to `double`, use instead:
|
||||||
|
```python
|
||||||
|
foo = "bar"
|
||||||
|
```
|
28
docs/rules/bad-quotes-multiline-string.md
Normal file
28
docs/rules/bad-quotes-multiline-string.md
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# bad-quotes-multiline-string (Q001)
|
||||||
|
|
||||||
|
Derived from the **flake8-quotes** linter.
|
||||||
|
|
||||||
|
Autofix is always available.
|
||||||
|
|
||||||
|
### What it does
|
||||||
|
Checks for multiline strings that use single quotes or double quotes,
|
||||||
|
depending on the value of the [`multiline-quotes`](https://github.com/charliermarsh/ruff#multiline-quotes)
|
||||||
|
setting.
|
||||||
|
|
||||||
|
### Why is this bad?
|
||||||
|
Consistency is good. Use either single or double quotes for multiline
|
||||||
|
strings, but be consistent.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```python
|
||||||
|
foo = '''
|
||||||
|
bar
|
||||||
|
'''
|
||||||
|
```
|
||||||
|
|
||||||
|
Assuming `multiline-quotes` is set to `double`, use instead:
|
||||||
|
```python
|
||||||
|
foo = """
|
||||||
|
bar
|
||||||
|
"""
|
||||||
|
```
|
Loading…
Add table
Add a link
Reference in a new issue