Skip to content

Commit 1df518a

Browse files
authored
Fix content linter crash when markdownlint returns unknown rules (#59335)
1 parent b358bac commit 1df518a

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/content-linter/scripts/lint-content.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -512,11 +512,13 @@ function getFormattedResults(
512512
.filter(([, results]) => results.length)
513513
for (const [key, fileResults] of filteredResults) {
514514
if (verbose) {
515-
output[key] = fileResults.map((flaw: LintError) => formatResult(flaw, isInPrecommitMode))
515+
output[key] = fileResults
516+
.map((flaw: LintError) => formatResult(flaw, isInPrecommitMode))
517+
.filter((result): result is FormattedResult => result !== null)
516518
} else {
517-
const formattedResults = fileResults.map((flaw: LintError) =>
518-
formatResult(flaw, isInPrecommitMode),
519-
)
519+
const formattedResults = fileResults
520+
.map((flaw: LintError) => formatResult(flaw, isInPrecommitMode))
521+
.filter((result): result is FormattedResult => result !== null)
520522

521523
// Only add the file to output if there are results after filtering
522524
if (formattedResults.length > 0) {
@@ -562,14 +564,18 @@ function getCountBySeverity(
562564
// Removes null values and properties that are not relevant to content
563565
// writers, adds the severity to each result object, and transforms
564566
// some error and fix data into a more readable format.
565-
function formatResult(object: LintError, isInPrecommitMode: boolean): FormattedResult {
567+
function formatResult(object: LintError, isInPrecommitMode: boolean): FormattedResult | null {
566568
const formattedResult: FormattedResult = {} as FormattedResult
567569

568570
// Add severity to each result object
569571
const ruleName = object.ruleNames[1] || object.ruleNames[0]
570572
const ruleConfig = allConfig[ruleName] as Config | undefined
573+
// Skip rules that aren't in our config. This can happen when using
574+
// <!-- markdownlint-disable --> / <!-- markdownlint-enable --> comments
575+
// without specifying rule names, which re-enables ALL markdownlint rules
576+
// including ones we don't use (like line-length/MD013).
571577
if (!ruleConfig) {
572-
throw new Error(`Rule not found in allConfig: '${ruleName}'`)
578+
return null
573579
}
574580
formattedResult.severity =
575581
ruleConfig.severity || getSearchReplaceRuleSeverity(ruleName, object, isInPrecommitMode)

0 commit comments

Comments
 (0)