VBAlidator rule catalogue¶
Stable rule IDs emitted by VBAlidator. Each row links to the rule's detail page. Use the rule_id to silence specific findings in your CI ignore list — the IDs do not change between releases.
| Rule | Severity | Category | Phase | Title |
|---|---|---|---|---|
VBA001 |
🔴 error | name_resolution |
0 | Undefined identifier |
VBA002 |
🔴 error | member_access |
0 | Member not found |
VBA003 |
🔴 error | declaration |
0 | Duplicate declaration |
VBA004 |
🔴 error | member_access |
0 | Invalid .member reference without With |
VBA005 |
🔴 error | type |
0 | Expected Array or Procedure |
VBA006 |
🔴 error | signature |
0 | Argument count mismatch |
VBA007 |
🔴 error | signature |
0 | ByRef argument type mismatch |
VBA008 |
🔴 error | control_flow |
0 | Exit statement type mismatch |
VBA009 |
🟡 warning | control_flow |
0 | Unreachable code |
VBA010 |
🔴 error | syntax |
0 | Syntax error |
VBA101 |
🔴 error | declaration |
1.4 | ReDim target undefined |
VBA102 |
🔴 error | declaration |
1.4 | ReDim target not a variable |
VBA103 |
🔴 error | declaration |
1.4 | ReDim target is not a dynamic array |
VBA104 |
🔴 error | declaration |
1.4 | Erase target undefined |
VBA105 |
🔴 error | declaration |
1.4 | Erase target not a variable |
VBA106 |
🔴 error | declaration |
1.4 | Erase target is not an array |
VBA110 |
🔴 error | syntax |
1.5 | For without Next |
VBA111 |
🔴 error | syntax |
1.5 | Do without Loop |
VBA112 |
🔴 error | syntax |
1.5 | While without Wend |
VBA113 |
🔴 error | syntax |
1.5 | Expected End With |
VBA114 |
🔴 error | syntax |
1.5 | Select Case without End Select |
VBA115 |
🔴 error | syntax |
1.5 | Block If without End If |
VBA116 |
🔴 error | syntax |
1.5 | Next without For |
VBA117 |
🔴 error | syntax |
1.5 | Loop without Do |
VBA118 |
🔴 error | syntax |
1.5 | Wend without While |
VBA119 |
🔴 error | syntax |
1.5 | Block terminator without matching opener |
VBA120 |
🟡 warning | type |
1.6 | User-defined type not defined |
VBA122 |
🔴 error | type |
1.6 | User-defined type without members |
VBA123 |
🔴 error | type |
1.6 | Empty Enum not allowed |
VBA130 |
🔴 error | signature |
2.10 | Required parameter after Optional |
VBA131 |
🔴 error | signature |
2.10 | ParamArray is not the last parameter |
VBA132 |
🔴 error | signature |
2.10 | More than one ParamArray |
VBA133 |
🔴 error | signature |
2.10 | ParamArray combined with Optional |
VBA134 |
🔴 error | signature |
2.10 | ParamArray element type is not Variant |
VBA136 |
🔴 error | signature |
2.10 | Array parameter passed ByVal |
VBA137 |
🔴 error | signature |
2.10 | User-defined type passed ByVal |
VBA140 |
🔴 error | signature |
2.9 | Named argument not found |
VBA141 |
🔴 error | signature |
2.9 | Named argument specified more than once |
VBA142 |
🔴 error | signature |
2.9 | Named arguments with ParamArray |
VBA150 |
🔴 error | declaration |
2.12 | Ambiguous name detected (duplicate procedure) |
VBA151 |
🔴 error | syntax |
2.12 | Code after End Sub/Function/Property |
VBA152 |
🔴 error | property |
2.12 | Property Get/Let type inconsistent |
VBA153 |
🔴 error | interface |
2.12 | Implements method signature mismatch |
VBA160 |
🔴 error | assignment |
2.13 | Assignment to constant not permitted |
VBA164 |
🔴 error | assignment |
2.13 | Invalid use of Me keyword |
VBA165 |
🔴 error | declaration |
2.13 | Invalid use of New keyword |
VBA170 |
🔴 error | control_flow |
2.11 | Exit For not within For...Next |
VBA171 |
🔴 error | control_flow |
2.11 | Exit Do not within Do...Loop |
VBA172 |
🔴 error | control_flow |
2.11 | Next control variable mismatch |
VBA173 |
🔴 error | control_flow |
2.11 | For control variable already in use |
VBA174 |
🔴 error | control_flow |
2.11 | For Each control variable must be Variant or object |
VBA175 |
🔴 error | control_flow |
2.11 | Duplicate label |
VBA180 |
🔴 error | placement |
3.7 | Statement invalid inside Enum block |
VBA181 |
🔴 error | placement |
3.7 | Statement invalid inside Type block |
VBA182 |
🔴 error | placement |
3.7 | Deftype statement must precede declarations |
VBA183 |
🔴 error | placement |
3.7 | Duplicate Deftype letter range |
VBA184 |
🔴 error | placement |
3.7 | Duplicate Option statement |
VBA190 |
🔴 error | preprocessor |
3.8 | Conditional directive without matching #If |
VBA191 |
🔴 error | preprocessor |
3.8 | Missing #End If |
VBA192 |
🔴 error | preprocessor |
3.8 | Invalid #Const declaration |
VBA201 |
🔴 error | jump |
2.1 | Jump target is not a label |
VBA210 |
🔴 error | assignment |
2.2 | Set used on a scalar target |
VBA211 |
🔴 error | assignment |
2.2 | Object assignment without Set |
VBA221 |
🔴 error | property |
2.3 | Property Let/Set has zero parameters |
VBA222 |
🔴 error | property |
2.3 | Property Let/Set arity disagrees with Get |
VBA223 |
🔴 error | property |
2.3 | Property Set value parameter is scalar (use Let) |
VBA224 |
🔴 error | property |
2.3 | Property Let value parameter is object (use Set) |
VBA230 |
🔴 error | const_expression |
2.5 | Const initialiser calls a function |
VBA231 |
🔴 error | const_expression |
2.5 | Const initialiser references a non-constant |
VBA240 |
🔴 error | operator_type |
2.4 | Arithmetic operator between string and numeric literal |
VBA250 |
🔴 error | declaration |
2.8 | Fixed-length String at procedure level |
VBA270 |
🔴 error | declaration |
2.14 | Type-declaration character does not match declared type |
VBA300 |
🔴 error | platform |
3.3 | Declare missing PtrSafe |
VBA310 |
🔴 error | enum |
3.4 | Duplicate Enum member name |
VBA320 |
🟡 warning | style |
3.6 | Module is missing Option Explicit |
VBA330 |
🔴 error | interface |
3.1 | Class is missing an interface method |
VBA340 |
🔴 error | events |
3.2 | RaiseEvent target has no matching Event declaration |
VBA341 |
🔴 error | events |
3.2 | RaiseEvent argument count mismatch |
VBA350 |
🔴 error | syntax |
3.5 | Procedure terminator does not match its kind |
VBA360 |
🔴 error | placement |
3.5 | Module-only declaration inside a procedure body |
VBA361 |
🔴 error | placement |
3.5 | Executable statement at module level |
VBA370 |
🔴 error | placement |
3.10 | Constant/array/Declare as Public member of object module |
VBA_LEX001 |
🔴 error | lexer |
0 | Unexpected character |
VBA_LEX002 |
🔴 error | lexer |
2.7 | Invalid date literal |
VBA_LEX004 |
🔴 error | lexer |
3.9 | Unterminated string or missing end bracket |
VBA_LEX005 |
🔴 error | lexer |
3.9 | Identifier too long |
VBA_LEX006 |
🔴 error | lexer |
3.9 | Line too long |
VBA_RT000 |
🔵 info | roundtrip |
4.5 | Round-trip verification unavailable |
VBA_RT001 |
🔴 compile_verified | roundtrip |
4.5 | VBE round-trip compile error |
VBA_RT002 |
🟡 warning | roundtrip |
4.5 | Round-trip verification inconclusive |
90 rules registered. Generated from src/rules.py via python tools/generate_rule_docs.py.