Add noqa_row to diagnostics JSON format (#3228)

In ruff-lsp (https://github.com/charliermarsh/ruff-lsp/pull/76) we want to add a "Disable \<rule\> for this line" quickfix. However, finding the correct line into which the `noqa` comment should be inserted is non-trivial (multi-line strings for example).

Ruff already has this info, so expose it in the JSON output for use by ruff-lsp.
This commit is contained in:
Ran Benita 2023-02-26 01:13:16 +02:00 committed by GitHub
parent cd9fbeb560
commit 33c31cda27
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 19 additions and 3 deletions

View file

@ -331,7 +331,9 @@ pub fn lint_only(
} else {
None
};
Message::from_diagnostic(diagnostic, path_lossy.to_string(), source)
let lineno = diagnostic.location.row();
let noqa_row = *directives.noqa_line_for.get(&lineno).unwrap_or(&lineno);
Message::from_diagnostic(diagnostic, path_lossy.to_string(), source, noqa_row)
})
.collect()
})
@ -469,7 +471,14 @@ This indicates a bug in `{}`. If you could open an issue at:
} else {
None
};
Message::from_diagnostic(diagnostic, path_lossy.to_string(), source)
let lineno = diagnostic.location.row();
let noqa_row = *directives.noqa_line_for.get(&lineno).unwrap_or(&lineno);
Message::from_diagnostic(
diagnostic,
path_lossy.to_string(),
source,
noqa_row,
)
})
.collect()
}),

View file

@ -16,6 +16,7 @@ pub struct Message {
pub fix: Option<Fix>,
pub filename: String,
pub source: Option<Source>,
pub noqa_row: usize,
}
impl Message {
@ -23,6 +24,7 @@ impl Message {
diagnostic: Diagnostic,
filename: String,
source: Option<Source>,
noqa_row: usize,
) -> Self {
Self {
kind: diagnostic.kind,
@ -34,6 +36,7 @@ impl Message {
fix: diagnostic.fix,
filename,
source,
noqa_row,
}
}
}

View file

@ -114,6 +114,7 @@ pub fn run(
),
format!("{}", path.display()),
None,
1,
)])
} else {
Diagnostics::default()

View file

@ -50,6 +50,7 @@ struct ExpandedMessage<'a> {
location: Location,
end_location: Location,
filename: &'a str,
noqa_row: usize,
}
#[derive(Serialize)]
@ -197,6 +198,7 @@ impl Printer {
location: message.location,
end_location: message.end_location,
filename: &message.filename,
noqa_row: message.noqa_row,
})
.collect::<Vec<_>>()
)?

View file

@ -112,7 +112,8 @@ fn test_stdin_json() -> Result<()> {
"row": 1,
"column": 10
}},
"filename": "{file_path}"
"filename": "{file_path}",
"noqa_row": 1
}}
]
"#