Add sanitize_explanation
This commit is contained in:
parent
0735031be9
commit
daf730caed
@ -522,30 +522,35 @@ pub fn category_str(&self) -> &'static str {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove code tags and code behind '# 's, as they are not needed for the lint docs and --explain
|
||||||
|
pub fn sanitize_explanation(raw_docs: &str) -> String {
|
||||||
|
// Remove tags and hidden code:
|
||||||
|
let mut explanation = String::with_capacity(128);
|
||||||
|
let mut in_code = false;
|
||||||
|
for line in raw_docs.lines().map(|line| line.trim()) {
|
||||||
|
if let Some(lang) = line.strip_prefix("```") {
|
||||||
|
let tag = lang.split_once(',').map_or(lang, |(left, _)| left);
|
||||||
|
if !in_code && matches!(tag, "" | "rust" | "ignore" | "should_panic" | "no_run" | "compile_fail") {
|
||||||
|
explanation += "```rust\n";
|
||||||
|
} else {
|
||||||
|
explanation += line;
|
||||||
|
explanation.push('\n');
|
||||||
|
}
|
||||||
|
in_code = !in_code;
|
||||||
|
} else if !(in_code && line.starts_with("# ")) {
|
||||||
|
explanation += line;
|
||||||
|
explanation.push('\n');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
explanation
|
||||||
|
}
|
||||||
|
|
||||||
pub fn explain(name: &str) -> i32 {
|
pub fn explain(name: &str) -> i32 {
|
||||||
let target = format!("clippy::{}", name.to_ascii_uppercase());
|
let target = format!("clippy::{}", name.to_ascii_uppercase());
|
||||||
|
|
||||||
if let Some(info) = declared_lints::LINTS.iter().find(|info| info.lint.name == target) {
|
if let Some(info) = declared_lints::LINTS.iter().find(|info| info.lint.name == target) {
|
||||||
// Remove tags and hidden code:
|
println!("{}", sanitize_explanation(info.explanation));
|
||||||
let mut explanation = String::with_capacity(128);
|
|
||||||
let mut in_code = false;
|
|
||||||
for line in info.explanation.lines().map(|line| line.trim()) {
|
|
||||||
if let Some(lang) = line.strip_prefix("```") {
|
|
||||||
let tag = lang.split_once(',').map_or(lang, |(left, _)| left);
|
|
||||||
if !in_code && matches!(tag, "" | "rust" | "ignore" | "should_panic" | "no_run" | "compile_fail") {
|
|
||||||
explanation += "```rust\n";
|
|
||||||
} else {
|
|
||||||
explanation += line;
|
|
||||||
explanation.push('\n');
|
|
||||||
}
|
|
||||||
in_code = !in_code;
|
|
||||||
} else if !(in_code && line.starts_with("# ")) {
|
|
||||||
explanation += line;
|
|
||||||
explanation.push('\n');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
println!("{}", explanation);
|
|
||||||
// Check if the lint has configuration
|
// Check if the lint has configuration
|
||||||
let mut mdconf = get_configuration_metadata();
|
let mut mdconf = get_configuration_metadata();
|
||||||
let name = name.to_ascii_lowercase();
|
let name = name.to_ascii_lowercase();
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
use cargo_metadata::Message;
|
use cargo_metadata::Message;
|
||||||
use cargo_metadata::diagnostic::{Applicability, Diagnostic};
|
use cargo_metadata::diagnostic::{Applicability, Diagnostic};
|
||||||
use clippy_config::ClippyConfiguration;
|
use clippy_config::ClippyConfiguration;
|
||||||
use clippy_lints::LintInfo;
|
|
||||||
use clippy_lints::declared_lints::LINTS;
|
use clippy_lints::declared_lints::LINTS;
|
||||||
use clippy_lints::deprecated_lints::{DEPRECATED, DEPRECATED_VERSION, RENAMED};
|
use clippy_lints::deprecated_lints::{DEPRECATED, DEPRECATED_VERSION, RENAMED};
|
||||||
|
use clippy_lints::{LintInfo, sanitize_explanation};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use test_utils::IS_RUSTC_TEST_SUITE;
|
use test_utils::IS_RUSTC_TEST_SUITE;
|
||||||
use ui_test::custom_flags::Flag;
|
use ui_test::custom_flags::Flag;
|
||||||
@ -444,7 +444,12 @@ fn spawn() -> (Self, thread::JoinHandle<()>) {
|
|||||||
iter::zip(DEPRECATED, DEPRECATED_VERSION)
|
iter::zip(DEPRECATED, DEPRECATED_VERSION)
|
||||||
.map(|((lint, reason), version)| LintMetadata::new_deprecated(lint, reason, version)),
|
.map(|((lint, reason), version)| LintMetadata::new_deprecated(lint, reason, version)),
|
||||||
)
|
)
|
||||||
|
.map(|mut metadata| {
|
||||||
|
metadata.docs = sanitize_explanation(&metadata.docs);
|
||||||
|
metadata
|
||||||
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
metadata.sort_unstable_by(|a, b| a.id.cmp(&b.id));
|
metadata.sort_unstable_by(|a, b| a.id.cmp(&b.id));
|
||||||
|
|
||||||
let json = serde_json::to_string_pretty(&metadata).unwrap();
|
let json = serde_json::to_string_pretty(&metadata).unwrap();
|
||||||
|
Loading…
Reference in New Issue
Block a user