Skip to content

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.