Reports message IDs defined in the messages object that are never used in recognized report calls.
✅ This rule is included in the flint logical presets.
Lint rules often declare a messages object up front and then reference those message IDs from report calls later on.
Keeping unused message IDs around makes rules harder to scan and maintain, especially when the message object grows over time.
This rule tracks message usage from context.report() calls and Flint’s built-in reportSourceCode() helper for source-mapped language rules.
53ruleCreatAB0createRu53(_,< {d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53messages: sp> {d>< {d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53usedMessage: sp> {d>< {d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53primary sp><: sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4DThis message is use1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">51"sp> {d><3,d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53secondary: sp>< [sp ansty="le--0:#D9F5DD;--1:#1111">11 [sp><""sp ansty="le--0:#D6DEEB;--1:#403F">53""sp>3,d><],d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53suggestions: sp>< [sp ansty="le--0:#D9F5DD;--1:#1111">11 [sp><""sp ansty="le--0:#D6DEEB;--1:#403F">53""sp>],d><],d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53 sp>],d><},d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53unusedMessage: sp>},d>< {d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53primary sp><: sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4DThis message is never use1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">51"sp> {d><3,d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53secondary: sp>< [sp ansty="le--0:#D9F5DD;--1:#1111">11 [sp><""sp ansty="le--0:#D6DEEB;--1:#403F">53""sp>3,d><],d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53suggestions: sp>< [sp ansty="le--0:#D9F5DD;--1:#1111">11 [sp><""sp ansty="le--0:#D6DEEB;--1:#403F">53""sp>],d><],d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53 sp>],d><},d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53 sp>},d><},d ivclassNa="meec-li">nt< sp ansty="le--0:#82AAFF;--1:#3B61">B0set sp>1<1(sp ansty="le--0:#D7DBE0;--1:#403F">53conte1(sp>7<2:sp ansty="le--0:#D6DEEB;--1:#403F">52:sp><3 sp ansty="le--1:#1111"><11sp ansty="le--0:#FFCB">8BRuleConte11sp>D3 sp>53},d>< {d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53conte sp>AB0repo53 {d><({d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53message sp><: sp ansty="le--0:#D9F5DD;--1:#1111">1<1"sp ansty="le--0:#ECC48D;--1:#984E">4DusedMessa1"sp>1<1"sp ansty="le--0:#D6DEEB;--1:#403F">51"sp>({d><3,d ivclassNa="meec-li">53 < sp ansty="le--0:#D6DEEB;--1:#403F">53} sp>3,d><);d ivclassNa="meec-li">53< sp ansty="le--0:#D6DEEB;--1:#403F">53 sp>);d><},d ivclassNa="meec-li">53}},d><);d ivclassNa="meco"><);d>);d>);d> 3F53ruleCre4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B0create4AE.>3F53(<_, {divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53message53 >3F53< spans="tyle--0:#D6DEEB;--1:#40">3F53usedMessag >3F53 < spans="tyle--0:#D6DEEB;--1:#40">3F53prima >1<111" spans="tyle--0:#ECC48D;--1:#98">4E4DThis message is u111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3111">3F53 < spans="tyle--0:#D6DEEB;--1:#40">3F53secondar >11<11"" spans="tyle--0:#D6DEEB;--1:#40">3F11""><53] ,divclass="Nameec-">3F53 < spans="tyle--0:#D6DEEB;--1:#40">3F53suggestion >11<11"" spans="tyle--0:#D6DEEB;--1:#40">3F11"">53]><53] ,divclass="Nameec-">3F53< spans="tyle--0:#D6DEEB;--1:#40">3F >53]><53} ,divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53 >53}><53} ,divclass="Nameec-">de61B0s1<111( spans="tyle--0:#D7DBE0;--1:#40">3F53con111(>63<1111 spans="tyle--0:#FF">CB8BRuleCon1111>F<5DD) spans="tyle--0:#D6DEEB;--1:#40">3F5DD)>53}><53 {divclass="Nameec-">3F53< spans="tyle--0:#D6DEEB;--1:#40">3F53con >4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B0re4AE.>3F53 ><53( {divclass="Nameec-">3F53 < spans="tyle--0:#D6DEEB;--1:#40">3F53messa >1<111" spans="tyle--0:#ECC48D;--1:#98">4E4DusedMes111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3111">53(>3F53< spans="tyle--0:#D6DEEB;--1:#40">3F5 ><3}) ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53 >3})><53} ,divclass="Nameec-">3F553}><3}) ;divclass="Name"><})>})>3})><;di vdivclass="Nameexpressive-">44AEim3F53 { reportSourceCod44AE31<111" spans="tyle--0:#ECC48D;--1:#98">4E4D@flint.fyi/volar-lang111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3111">c3F53ruleCre4<4AE. spans="tyle--0:#82AAFF;--1:#3B">61B0create4AE.>3F53(<_, {divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53message53 >3F53< spans="tyle--0:#D6DEEB;--1:#40">3F53missingKe >3F53 < spans="tyle--0:#D6DEEB;--1:#40">3F53prima >1<111" spans="tyle--0:#ECC48D;--1:#98">4E4DThis message is used from source c111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3111">3F53 < spans="tyle--0:#D6DEEB;--1:#40">3F53secondar >11<11"" spans="tyle--0:#D6DEEB;--1:#40">3F11""><53] ,divclass="Nameec-">3F53 < spans="tyle--0:#D6DEEB;--1:#40">3F53suggestion >11<11"" spans="tyle--0:#D6DEEB;--1:#40">3F11"">53]><53] ,divclass="Nameec-">3F53< spans="tyle--0:#D6DEEB;--1:#40">3F >53]><53} ,divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53 >53}><53} ,divclass="Nameec-">de61B0s1<111( spans="tyle--0:#D7DBE0;--1:#40">3F53con111(>63<1111 spans="tyle--0:#FF">CB8BRuleCon1111>F<5DD) spans="tyle--0:#D6DEEB;--1:#40">3F5DD)>53}><53 {divclass="Nameec-">dent< spans="tyle--0:#82AAFF;--1:#3B">61B0reportSource >3F53(contex53 >3F53 < spans="tyle--0:#D6DEEB;--1:#40">3F53messa >1<111" spans="tyle--0:#ECC48D;--1:#98">4E4Dmissin111">1<111" spans="tyle--0:#D6DEEB;--1:#40">3111">3F53 < spans="tyle--0:#D6DEEB;--1:#40">3F53ra >3F53< spans="tyle--0:#D6DEEB;--1:#40">3F5 ><3}) ;divclass="Nameec-">3F<53 spans="tyle--0:#D6DEEB;--1:#40">3F53 >3})><53} ,divclass="Nameec-">3F553}><3}) ;divclass="Name"><})>})>3})>;di>
This rule is not configurable.