Require documentation for all lint rules (#7751)

## Summary

Now that all rules have documentation, we can enforce the requirement in
our tests.
This commit is contained in:
Charlie Marsh 2023-10-01 21:49:07 -04:00 committed by GitHub
parent 6a4437ea81
commit 1df8101b9e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 4 deletions

View file

@ -4,12 +4,12 @@
/// `--select`. For pylint this is e.g. C0414 and E0118 but also C and E01.
use std::fmt::Formatter;
use strum_macros::{AsRefStr, EnumIter};
use crate::registry::{AsRule, Linter};
use crate::rule_selector::is_single_rule_selector;
use crate::rules;
use strum_macros::{AsRefStr, EnumIter};
#[derive(PartialEq, Eq, PartialOrd, Ord)]
pub struct NoqaCode(&'static str, &'static str);

View file

@ -427,7 +427,18 @@ mod tests {
use super::{Linter, Rule, RuleNamespace};
#[test]
fn test_rule_naming_convention() {
fn documentation() {
for rule in Rule::iter() {
assert!(
rule.explanation().is_some(),
"Rule {} is missing documentation",
rule.as_ref()
);
}
}
#[test]
fn rule_naming_convention() {
// The disallowed rule names are defined in a separate file so that they can also be picked up by add_rule.py.
let patterns: Vec<_> = include_str!("../resources/test/disallowed_rule_names.txt")
.trim()
@ -459,7 +470,7 @@ mod tests {
}
#[test]
fn test_linter_parse_code() {
fn linter_parse_code() {
for rule in Rule::iter() {
let code = format!("{}", rule.noqa_code());
let (linter, rest) =

View file

@ -416,6 +416,8 @@ fn register_rules<'a>(input: impl Iterator<Item = &'a Rule>) -> TokenStream {
}
quote! {
use ruff_diagnostics::Violation;
#[derive(
EnumIter,
Debug,