mirror of https://github.com/astral-sh/ruff
Added pylint formatter (#1995)
Fixes: #1953 @charliermarsh thank you for the tips in the issue. I'm not very familiar with Rust, so please excuse if my string formatting syntax is messy. In terms of testing, I compared output of `flake8 --format=pylint ` and `cargo run --format=pylint` on the same code and the output syntax seems to check out.
This commit is contained in:
parent
26901a78c9
commit
6ddfe50ac4
|
|
@ -381,7 +381,7 @@ Options:
|
|||
--per-file-ignores <PER_FILE_IGNORES>
|
||||
List of mappings from file pattern to code to exclude
|
||||
--format <FORMAT>
|
||||
Output serialization format for violations [env: RUFF_FORMAT=] [possible values: text, json, junit, grouped, github, gitlab]
|
||||
Output serialization format for violations [env: RUFF_FORMAT=] [possible values: text, json, junit, grouped, github, gitlab, pylint]
|
||||
--stdin-filename <STDIN_FILENAME>
|
||||
The name of the file when passing it through stdin
|
||||
--cache-dir <CACHE_DIR>
|
||||
|
|
@ -2120,9 +2120,9 @@ force-exclude = true
|
|||
|
||||
The style in which violation messages should be formatted: `"text"`
|
||||
(default), `"grouped"` (group messages by file), `"json"`
|
||||
(machine-readable), `"junit"` (machine-readable XML), `"github"`
|
||||
(GitHub Actions annotations) or `"gitlab"`
|
||||
(GitLab CI code quality report).
|
||||
(machine-readable), `"junit"` (machine-readable XML), `"github"` (GitHub
|
||||
Actions annotations), `"gitlab"` (GitLab CI code quality report), or
|
||||
`"pylint"` (Pylint text format).
|
||||
|
||||
**Default value**: `"text"`
|
||||
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@
|
|||
]
|
||||
},
|
||||
"format": {
|
||||
"description": "The style in which violation messages should be formatted: `\"text\"` (default), `\"grouped\"` (group messages by file), `\"json\"` (machine-readable), `\"junit\"` (machine-readable XML), `\"github\"` (GitHub Actions annotations) or `\"gitlab\"` (GitLab CI code quality report).",
|
||||
"description": "The style in which violation messages should be formatted: `\"text\"` (default), `\"grouped\"` (group messages by file), `\"json\"` (machine-readable), `\"junit\"` (machine-readable XML), `\"github\"` (GitHub Actions annotations), `\"gitlab\"` (GitLab CI code quality report), or `\"pylint\"` (Pylint text format).",
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/definitions/SerializationFormat"
|
||||
|
|
@ -1804,7 +1804,8 @@
|
|||
"junit",
|
||||
"grouped",
|
||||
"github",
|
||||
"gitlab"
|
||||
"gitlab",
|
||||
"pylint"
|
||||
]
|
||||
},
|
||||
"Strictness": {
|
||||
|
|
|
|||
|
|
@ -319,6 +319,9 @@ pub fn explain(rule: &Rule, format: SerializationFormat) -> Result<()> {
|
|||
SerializationFormat::Gitlab => {
|
||||
bail!("`--explain` does not support GitLab format")
|
||||
}
|
||||
SerializationFormat::Pylint => {
|
||||
bail!("`--explain` does not support pylint format")
|
||||
}
|
||||
};
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -285,7 +285,7 @@ impl<'a> Printer<'a> {
|
|||
}
|
||||
}
|
||||
SerializationFormat::Gitlab => {
|
||||
// Generate JSON with errors in GitLab CI format
|
||||
// Generate JSON with violations in GitLab CI format
|
||||
// https://docs.gitlab.com/ee/ci/testing/code_quality.html#implementing-a-custom-tool
|
||||
writeln!(stdout,
|
||||
"{}",
|
||||
|
|
@ -312,6 +312,20 @@ impl<'a> Printer<'a> {
|
|||
)?
|
||||
)?;
|
||||
}
|
||||
SerializationFormat::Pylint => {
|
||||
// Generate violations in Pylint format.
|
||||
// See: https://flake8.pycqa.org/en/latest/internal/formatters.html#pylint-formatter
|
||||
for message in &diagnostics.messages {
|
||||
let label = format!(
|
||||
"{}:{}: [{}] {}",
|
||||
relativize_path(Path::new(&message.filename)),
|
||||
message.location.row(),
|
||||
message.kind.rule().code(),
|
||||
message.kind.body(),
|
||||
);
|
||||
writeln!(stdout, "{label}")?;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stdout.flush()?;
|
||||
|
|
|
|||
|
|
@ -208,9 +208,9 @@ pub struct Options {
|
|||
)]
|
||||
/// The style in which violation messages should be formatted: `"text"`
|
||||
/// (default), `"grouped"` (group messages by file), `"json"`
|
||||
/// (machine-readable), `"junit"` (machine-readable XML), `"github"`
|
||||
/// (GitHub Actions annotations) or `"gitlab"`
|
||||
/// (GitLab CI code quality report).
|
||||
/// (machine-readable), `"junit"` (machine-readable XML), `"github"` (GitHub
|
||||
/// Actions annotations), `"gitlab"` (GitLab CI code quality report), or
|
||||
/// `"pylint"` (Pylint text format).
|
||||
pub format: Option<SerializationFormat>,
|
||||
#[option(
|
||||
default = r#"false"#,
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@ pub enum SerializationFormat {
|
|||
Grouped,
|
||||
Github,
|
||||
Gitlab,
|
||||
Pylint,
|
||||
}
|
||||
|
||||
impl Default for SerializationFormat {
|
||||
|
|
|
|||
Loading…
Reference in New Issue