///|
/// Disable one rule code in a copy of a lint configuration.
pub fn LintConfig::disable(self : LintConfig, code : String) -> LintConfig {
if self.disabled.contains(code) {
self
} else {
let disabled = self.disabled.copy()
disabled.push(code)
{ ..self, disabled, }
}
}
///|
/// Re-enable one rule code in a copy of a lint configuration.
pub fn LintConfig::enable(self : LintConfig, code : String) -> LintConfig {
let disabled : Array[String] = []
for value in self.disabled {
if value != code {
disabled.push(value)
}
}
{ ..self, disabled, }
}
///|
/// Turn warnings-as-errors on or off in a copy of a lint configuration.
pub fn LintConfig::warnings_as_errors(
self : LintConfig,
enabled : Bool,
) -> LintConfig {
{ ..self, warnings_as_errors: enabled }
}
///|
/// Return whether a rule code will run under this configuration.
pub fn LintConfig::is_enabled(self : LintConfig, code : String) -> Bool {
self.enabled(code)
}
///|
/// Return the active rules in their stable declaration order.
pub fn LintConfig::active_rules(self : LintConfig) -> Array[Rule] {
let rules : Array[Rule] = []
for rule in default_rules() {
if self.enabled(rule.code()) {
rules.push(rule)
}
}
rules
}
///|
/// Return all known rule codes, including disabled rules.
pub fn rule_codes() -> Array[String] {
let codes : Array[String] = []
for rule in default_rules() {
codes.push(rule.code())
}
codes
}
///|
/// Return disabled codes which are not recognized by this release.
pub fn LintConfig::unknown_disabled_rules(self : LintConfig) -> Array[String] {
let unknown : Array[String] = []
for code in self.disabled {
if !rule_codes().contains(code) && !unknown.contains(code) {
unknown.push(code)
}
}
unknown
}
///|
/// Return a short stable configuration description for logs.
pub fn LintConfig::describe(self : LintConfig) -> String {
"active_rules=" +
self.active_rules().length().to_string() +
", warnings_as_errors=" +
self.warnings_as_errors.to_string() +
", disabled=" +
self.disabled.length().to_string()
}