Skip to content

Static-analysis diagnostic catalog

Generated from the canonical rule registry at internal/staticanalysis/rules/registry.json. Run pnpm docs:generate-reference after changing rule metadata. Do not edit this page by hand.

Use xlflow rules to inspect the same metadata from an installed xlflow binary. VBA000 is a synthetic analysis-failure diagnostic and is intentionally outside the registry; UserForm FRM... and UFY... diagnostics are outside this catalog.

Blocks source preflight describes the registry default. A project may list a blocking diagnostic in [preflight].allowed_diagnostics to let workbook automation proceed without disabling the diagnostic or changing its severity; applied waivers are reported as command warnings.

IDFamilySeverityScopeDefaultTitle
VB001lintwarningfile-localyesMissing Option Explicit
VB002lintwarningprocedure-localyesSelect usage
VB003lintwarningprocedure-localyesActivate usage
VB004lintwarningprocedure-localyesBroad On Error Resume Next
VB005lintwarningfile-localyesImplicit Variant
VB006lintwarningfile-localyesPublic module field
VB007lintwarningfile-localyesAutomation-hostile GUI boundary
VB008linterrorfile-localyesTypographic quote
VB009linterrorfile-localyesC-style quote escape
VB010linterrorfile-localyesUnterminated procedure
VB011linterrorfile-localyesUnexpected procedure terminator
VB012linterrorfile-localyesMismatched procedure terminator
VB013linterrorfile-localyesInvalid line continuation
VB014linterrorfile-localyesParser recovery
VB015linterrorfile-localyesContinuation limit exceeded
VB018lintwarningproject-widenoScope shadowing
VB019lintwarningfile-localyesMixed declarator typing
VB020lintwarningprocedure-localyesUnused local variable
VB021lintwarningproject-widenoUnused private procedure
VB022lintwarningprocedure-localyesConfusing call syntax
VB023lintwarningprocedure-localyesInvalid For Each control type
VB026lintwarningprocedure-localyesDangerous Resume
VB027lintwarningprocedure-localnoAmbiguous nested With member
VB028linterrorproject-wideyesBare dialog call with XlflowUI
VB029linterrorproject-wideyesUndeclared variable
VB030lintwarningprocedure-localyesArgument mismatch
VB031linterrorfile-localyesMissing module name attribute
VB032linterrorfile-localyesRepeated Debug.Print shorthand
VB033lintwarningprocedure-localyesUnknown member
VB034lintwarningprocedure-localyesRead-only property assignment
VB035lintwarningprocedure-localyesWrite-only property read
VB036lintwarningprocedure-localyesSet required
VB037linterrorprocedure-localyesSet not allowed
VB038lintwarningprocedure-localyesIncompatible assignment
VB039lintwarningprocedure-localyesMethod has no return value
VB040lintwarningfile-localyesUnknown documented parameter
VB041lintwarningfile-localyesDuplicate documented parameter
VB042lintwarningfile-localyesReturns documentation on Sub
VB043lintwarningfile-localyesOrphan documentation comment
VB044lintwarningprocedure-localnoProcedure-name constant mismatch
VB045linterrorprocedure-localyesDeterministic argument binding error
VB046linterrorfile-localyesDuplicate declaration
VB047linterrorfile-localyesInvalid declaration placement
VB048linterrorprocedure-localyesInvalid procedure parameter declaration
VB049linterrorfile-localyesInconsistent Property accessor contract
VB050linterrorfile-localyesInvalid module declaration context
VB051linterrorprocedure-localyesInvalid Me context
VB052linterrorinterproceduralyesInvalid procedure call target
VB053linterrorinterproceduralyesAmbiguous Enum member
VB054linterrorinterproceduralyesUndeclared RaiseEvent target
VB055linterrorprocedure-localyesDuplicate procedure label
VB056linterrorprocedure-localyesUndefined procedure label
VB057linterrorprocedure-localyesMismatched Next control variable
VB058linterrorprocedure-localyesInvalid Exit statement
VB059linterrorprocedure-localyesInvalid call syntax
VB060linterrorproject-wideyesAssignment to constant
VB061linterrorfile-localyesInvalid constant array bounds
VB062linterrorprocedure-localyesInvalid conditional branch syntax
VB063linterrorprocedure-localyesInvalid Select/Case branch syntax
VB064linterrorprocedure-localyesInvalid Open mode syntax
VB065linterrorprocedure-localyesInvalid TypeOf syntax
VB066lintwarningfile-localyesProcedure terminator style mismatch
VBA101analyzewarningprocedure-localyesObject assignment missing Set
VBA102analyzewarningprocedure-localyesObject-returning call assignment missing Set
VBA103analyzewarningprocedure-localyesObject function return missing Set
VBA104analyzeerrorprocedure-localyesExcel object member mismatch
VBA105analyzeerrorproject-wideyesRemoved XlflowLog helper
VBA106analyzeerrorproject-wideyesRemoved XlflowSetTraceFile helper
VBA201analyzewarningprocedure-localyesUnchecked Range.Find result
VBA202analyzewarninginterproceduralyesObject use before Set
VBA203analyzewarninginterproceduralyesApplication state not restored
VBA204analyzewarningprocedure-localyesError-handler fallthrough
VBA205analyzewarningprocedure-localyesAmbiguous Excel object scope
VBA206analyzewarninginterproceduralyesUnsafe ByRef argument
VBA207analyzewarningprocedure-localnoUnguarded keyed access
VBA208analyzewarningprocedure-localyesInvalid ReDim Preserve dimension
VBA209analyzewarningprocedure-localyesObject or array comparison mistake
VBA210analyzewarningprocedure-localnoMissing Function or Property Get return assignment
VBA211analyzeerrorprocedure-localyesExpanded Excel member mismatch
VBA212analyzewarningprocedure-localyesNon-short-circuit object guard
VBA213analyzewarningprocedure-localnoDictionary iteration value misuse
VBA214analyzewarningprocedure-localyesLeaked On Error Resume Next scope
VBA215analyzewarningprocedure-localyesOmitted stateful Excel call arguments
VBA216analyzeerrorprocedure-localyesWorksheet root mismatch
VBA217analyzewarningprocedure-localyesUnstable last-row boundary
VBA218analyzewarninginterproceduralyesUnhandled Excel API failure contract
VBA219analyzewarningprocedure-localyesUnreleased workbook or VBA file handle
VBA220analyzewarninginterproceduralyesEvent handler re-entry hazard
VBA221analyzewarninginterproceduralyesApplication state changed by local helper
VBA222analyzewarningproject-wideyesPublic API type safety
VBA223analyzewarningfile-localyesLikely hardcoded secret
VBA224analyzewarningprocedure-localyesUntrusted data reaches a sensitive API
VBA225analyzewarninginterproceduralyesExcel cell access inside loop
VBA226analyzewarningprocedure-localyesUnsafe Range.Value array shape assumption
VBA227analyzewarninginterproceduralyesArray lifecycle and dimension safety
VBA228analyzeerrorinterproceduralyesByRef type mismatch
VBA229analyzeerrorprocedure-localyesUnresolved local As type name
VBA230analyzewarninginterproceduralyesDictionary CompareMode changed after insertion
VBA231analyzewarninginterproceduralyesRepeated Dictionary loop materialization
VBA232analyzewarningprocedure-localyesInconsistent Dictionary key normalization
VBA233analyzewarningproject-wideyesUndefined late-bound Dictionary constant
VBA234analyzewarninginterproceduralyesCollection mutation during iteration
VBA235analyzewarningprocedure-localyesCollection index origin confusion
VBA236analyzewarningprocedure-localyesUnsafe command construction
VBA237analyzewarninginterproceduralyesSuppressed error propagation
VBA238analyzewarningprocedure-localyesLoop-invariant Excel object resolution
VBA239analyzewarningprocedure-localyesUnsafe SQL construction
VBA240analyzewarningproject-widenoRisky module-level mutable state
VBA241analyzewarningprocedure-localyesRepeated ReDim Preserve inside loop
VBA242analyzeinformationprocedure-localnoExpensive full-range operation
VBA243analyzeinformationprocedure-localnoValue2 performance opportunity
VBA244analyzeinformationproject-wideyesRecursive and cyclic procedure dependency
VBA245analyzewarningprocedure-localyesUnsafe destructive file and path operation
VBA246analyzewarningprocedure-localyesUnsafe HTTP or TLS configuration
VBA247analyzewarningprocedure-localyesMissing or unlimited HTTP timeout
VBA248analyzewarningprocedure-localnoOpaque Boolean control arguments
VBA249analyzeerrorprocedure-localyesDeterministic runtime error

VB001

Missing Option Explicit. The module does not declare Option Explicit.

PropertyValue
Familylint
Categorycorrectness
Evidence classpolicy
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationrequire_option_explicit
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB002

Select usage. Select makes behavior depend on Excel selection state.

PropertyValue
Familylint
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationforbid_select
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB003

Activate usage. Activate makes behavior depend on Excel active-object state.

PropertyValue
Familylint
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationforbid_activate
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB004

Broad On Error Resume Next. On Error Resume Next is used without a narrow recovery scope.

PropertyValue
Familylint
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationforbid_on_error_resume_next
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB005

Implicit Variant. A declaration omits an explicit As type.

PropertyValue
Familylint
Categorymaintainability
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_implicit_variant
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB006

Public module field. A module-level Public variable exposes mutable global state.

PropertyValue
Familylint
Categorymaintainability
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationforbid_public_module_fields
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB007

Automation-hostile GUI boundary. The source invokes an interactive boundary that can block automation.

PropertyValue
Familylint
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationforbid_interactive_input
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VB008

Typographic quote. A typographic quote can trigger an Excel VBE compile dialog.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB009

C-style quote escape. A C-style escaped quote is invalid VBA string syntax.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB010

Unterminated procedure. A Sub, Function, or Property procedure has no matching terminator.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB011

Unexpected procedure terminator. An End procedure statement has no matching opener.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB012

Mismatched procedure terminator. A procedure is closed with an End statement kind that VBA's VBE rejects.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB013

Invalid line continuation. A line-continuation underscore is not preceded by whitespace.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB014

Parser recovery. The parser recovered from an error, missing node, or unmatched source structure.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionmedium
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB015

Continuation limit exceeded. A VBA logical line exceeds the supported continuation-line limit.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB018

Scope shadowing. A declaration shadows another visible declaration or procedure.

PropertyValue
Familylint
Categorymaintainability
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint
Scopeproject-wide
Precisionmedium
Enabled by defaultno
Configurationdetect_scope_shadowing
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VB019

Mixed declarator typing. A multi-name declaration explicitly types only some declarators.

PropertyValue
Familylint
Categorycorrectness
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_multiple_declarator_clarity
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB020

Unused local variable. A procedure-local variable is declared but never referenced.

PropertyValue
Familylint
Categorymaintainability
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_unused_local_variables
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB021

Unused private procedure. A private procedure is unreachable from known project roots.

PropertyValue
Familylint
Categorymaintainability
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint
Scopeproject-wide
Precisionmedium
Enabled by defaultno
Configurationdetect_unused_private_procedures
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VB022

Confusing call syntax. A parenthesized procedure call uses ambiguous VBA call syntax.

PropertyValue
Familylint
Categorymaintainability
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_confusing_call_syntax
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB023

Invalid For Each control type. A For Each control variable is undeclared or incompatible.

PropertyValue
Familylint
Categorycorrectness
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_for_each_control_type
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB026

Dangerous Resume. Resume is used outside a recognizable error-handler context.

PropertyValue
Familylint
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_dangerous_resume
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB027

Ambiguous nested With member. An implicit Excel member inside nested With blocks has an ambiguous target.

PropertyValue
Familylint
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultno
Configurationdetect_nested_with_ambiguity
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB028

Bare dialog call with XlflowUI. A bare dialog call can bind to an incompatible XlflowUI member.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint
Scopeproject-wide
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticno
Fix availableno

VB029

Undeclared variable. Option Explicit is present but a referenced assignment or loop variable is undeclared in the project-visible namespace.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopeproject-wide
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB030

Argument mismatch. A procedure call argument does not match the resolved signature.

PropertyValue
Familylint
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB031

Missing module name attribute. A standard module lacks its exported Attribute VB_Name declaration.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB032

Repeated Debug.Print shorthand. Repeated question-mark shorthand is invalid VBA syntax.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB033

Unknown member. A member is not present on the resolved receiver type.

PropertyValue
Familylint
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB034

Read-only property assignment. An assignment targets a read-only property.

PropertyValue
Familylint
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB035

Write-only property read. An expression reads a write-only property.

PropertyValue
Familylint
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB036

Set required. An object assignment omits the Set keyword.

PropertyValue
Familylint
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB037

Set not allowed. A value assignment incorrectly uses the Set keyword.

PropertyValue
Familylint
Categorytype-safety
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB038

Incompatible assignment. The assigned expression is incompatible with the resolved target type.

PropertyValue
Familylint
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB039

Method has no return value. A method without a return value is used as an expression.

PropertyValue
Familylint
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB040

Unknown documented parameter. A documentation comment names a parameter that the procedure does not declare.

PropertyValue
Familylint
Categorydocumentation
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB041

Duplicate documented parameter. A documentation comment lists the same parameter more than once.

PropertyValue
Familylint
Categorydocumentation
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB042

Returns documentation on Sub. A Sub procedure documentation comment contains a Returns section.

PropertyValue
Familylint
Categorydocumentation
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB043

Orphan documentation comment. A documentation comment is not associated with a declaration.

PropertyValue
Familylint
Categorydocumentation
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VB044

Procedure-name constant mismatch. A configured procedure-name string constant differs from its enclosing procedure name.

PropertyValue
Familylint
Categorymaintainability
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultno
Configurationprocedure_name_constant
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableyes

VB045

Deterministic argument binding error. A resolved procedure call has a deterministic argument-count or named-argument compile error.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp, analyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB046

Duplicate declaration. A VBA declaration repeats a name that is already declared in the same scope.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB047

Invalid declaration placement. A VBA declaration appears in a source position where that declaration kind is not permitted.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB048

Invalid procedure parameter declaration. A procedure parameter declaration violates a VBA compile-time parameter contract.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB049

Inconsistent Property accessor contract. Property Get, Let, and Set accessors in the same module do not form a compatible VBA accessor contract.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB050

Invalid module declaration context. A VBA declaration or member uses a form that is not permitted by the containing module kind.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB051

Invalid Me context. The VBA Me keyword is used outside an object module.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB052

Invalid procedure call target. A call targets a project-local symbol that is missing or known not to be callable.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp, analyze
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB053

Ambiguous Enum member. A bare Enum member reference has multiple visible project candidates and no unique lexical winner.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp, analyze
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB054

Undeclared RaiseEvent target. A RaiseEvent statement names an event that is not declared in the same object module.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp, analyze
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB055

Duplicate procedure label. A procedure defines the same label more than once.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp, analyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB056

Undefined procedure label. A procedure control-flow transfer targets a label that is not defined in the procedure.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp, analyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB057

Mismatched Next control variable. A Next variable does not match the active For or For Each control variable.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp, analyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB058

Invalid Exit statement. An Exit statement is incompatible with the enclosing procedure or active loop.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp, analyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB059

Invalid call syntax. A VBA call uses a parenthesis or explicit Call form that the compiler rejects, or an expression invokes a Function without its required argument parentheses.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB060

Assignment to constant. An assignment targets a Const declaration.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp, analyze
Scopeproject-wide
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB061

Invalid constant array bounds. A fixed array declaration has a constant lower bound greater than its upper bound.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp, analyze
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB062

Invalid conditional branch syntax. A conditional branch statement uses a form that VBA rejects.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB063

Invalid Select/Case branch syntax. A Select Case branch uses a form or ordering that VBA rejects.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB064

Invalid Open mode syntax. An Open statement uses a file mode form that VBA rejects.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB065

Invalid TypeOf syntax. A TypeOf expression uses a form that VBA rejects.

PropertyValue
Familylint
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfaceslint, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VB066

Procedure terminator style mismatch. A VBE-accepted procedure uses a noncanonical End statement kind.

PropertyValue
Familylint
Categorymaintainability
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfaceslint, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA101

Object assignment missing Set. An object variable assignment likely omits Set.

PropertyValue
Familyanalyze
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA102

Object-returning call assignment missing Set. An object-returning function assignment likely omits Set.

PropertyValue
Familyanalyze
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA103

Object function return missing Set. An object-returning function body likely assigns its return without Set.

PropertyValue
Familyanalyze
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA104

Excel object member mismatch. A known Excel object does not provide the referenced member.

PropertyValue
Familyanalyze
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfacesanalyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticno
Fix availableno

VBA105

Removed XlflowLog helper. The source calls the removed XlflowLog trace helper.

PropertyValue
Familyanalyze
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfacesanalyze
Scopeproject-wide
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticno
Fix availableno

VBA106

Removed XlflowSetTraceFile helper. The source calls the removed XlflowSetTraceFile trace helper.

PropertyValue
Familyanalyze
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfacesanalyze
Scopeproject-wide
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticno
Fix availableno

VBA201

Unchecked Range.Find result. A Range.Find result is dereferenced before a Nothing check.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_range_find_nothing_check
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA202

Object use before Set. An object variable may be dereferenced before a definitely non-Nothing value is proven on every reachable path.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeinterprocedural
Precisionmedium
Enabled by defaultyes
Configurationdetect_object_use_before_set
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA203

Application state not restored. An Application state change cannot be proven restored to its previous value on every exit; a restore-like assignment may still be present.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeinterprocedural
Precisionmedium
Enabled by defaultyes
Configurationdetect_application_state_restore
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA204

Error-handler fallthrough. Normal execution can fall through into an error-handler label.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_error_handler_fallthrough
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA205

Ambiguous Excel object scope. Active UI objects, unqualified worksheet members (Range, Cells, Rows, and Columns), unqualified sheet collections, positional workbook/window access, uncaptured Workbooks.Open calls, and add-in ThisWorkbook references can target an unintended workbook or worksheet.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationforbid_unqualified_excel_objects
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA206

Unsafe ByRef argument. A resolved project-local ByRef call receives an incompatible type, a temporary value, or an indirect property, member, or array expression whose mutation may be lost or surprising.

PropertyValue
Familyanalyze
Categoryruntime-safety
Evidence classruntime-safety
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationdetect_byref_argument_mismatch
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA207

Unguarded keyed access. Dictionary or Collection item access has no obvious existence guard.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning, information
Surfacesanalyze
Scopeprocedure-local
Precisionmedium
Enabled by defaultno
Configurationdetect_dictionary_collection_guard
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA208

Invalid ReDim Preserve dimension. ReDim Preserve is used on a multi-dimensional array.

PropertyValue
Familyanalyze
Categorycorrectness
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_redim_preserve_dimension
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA209

Object or array comparison mistake. An object or array is compared with scalar equality semantics.

PropertyValue
Familyanalyze
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_object_array_comparison
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA210

Missing Function or Property Get return assignment. A Function or Property Get may reach normal exit without a valid return assignment on every path.

PropertyValue
Familyanalyze
Categorycorrectness
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeprocedure-local
Precisionmedium
Enabled by defaultno
Configurationdetect_function_return_path
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA211

Expanded Excel member mismatch. Expanded Excel type metadata proves an object/member mismatch.

PropertyValue
Familyanalyze
Categorycorrectness
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfacesanalyze
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_excel_object_member_mismatch
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticno
Fix availableno

VBA212

Non-short-circuit object guard. A Nothing or IsArray guard and a matching object, index, bound, or resolved side-effecting getter access share an eagerly evaluated And, Or, IIf, Choose, or Switch expression.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_non_short_circuit_object_guard
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA213

Dictionary iteration value misuse. A Dictionary key yielded by direct iteration is used as a value or object.

PropertyValue
Familyanalyze
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultno
Configurationdetect_dictionary_iteration_value_usage
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA214

Leaked On Error Resume Next scope. On Error Resume Next remains active across an unsafe procedure scope.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_leaked_on_error_resume_next_scopes
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA215

Omitted stateful Excel call arguments. A Range.Find or Range.Replace call omits settings that Excel saves and can reuse from prior UI operations or macro calls.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_stateful_excel_call_arguments
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA216

Worksheet root mismatch. A range expression combines explicit objects rooted in different worksheets.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_worksheet_root_mismatch
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VBA217

Unstable last-row boundary. A last-row calculation depends on an implicit worksheet root or a boundary pattern that can produce unstable results.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_unstable_last_row_patterns
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA218

Unhandled Excel API failure contract. An Excel API call can raise a runtime error or return Variant/Error when no result exists, but its failure contract is not handled.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationdetect_excel_api_failure_contracts
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA219

Unreleased workbook or VBA file handle. A procedure-local Workbook or VBA file handle acquired by an explicit Open call cannot be proven closed on every exit; a matching Close may still be present on some paths.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_resource_leaks
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA220

Event handler re-entry hazard. An Excel or UserForm event handler can trigger itself or a related event without a proven safe event guard.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeinterprocedural
Precisionmedium
Enabled by defaultyes
Configurationdetect_event_handler_reentry
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA221

Application state changed by local helper. A direct project-local call can leave an Application property changed because cleanup is not proven on every exit; a restore-like assignment may still be present.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationdetect_application_state_call_effects
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA222

Public API type safety. A public API declaration or exposed type uses an inaccessible, ambiguous, or unresolved type.

PropertyValue
Familyanalyze
Categorytype-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeproject-wide
Precisionmedium
Enabled by defaultyes
Configurationdetect_public_api_type_safety
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA223

Likely hardcoded secret. A credential-like value appears directly in VBA source.

PropertyValue
Familyanalyze
Categorysecurity
Evidence classpolicy
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopefile-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_hardcoded_secrets
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA224

Untrusted data reaches a sensitive API. Conservative procedure-local analysis found potentially untrusted data flowing into a sensitive API.

PropertyValue
Familyanalyze
Categorysecurity
Evidence classpolicy
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_untrusted_data_flow
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA225

Excel cell access inside loop. A loop repeatedly accesses Excel cells or related object-model members, causing avoidable COM round trips.

PropertyValue
Familyanalyze
Categoryperformance
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeinterprocedural
Precisionmedium
Enabled by defaultyes
Configurationdetect_excel_cell_access_in_loops
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA226

Unsafe Range.Value array shape assumption. A Range.Value or Range.Value2 result is consumed as a scalar or one-dimensional array, or assigned to an incompatible range shape.

PropertyValue
Familyanalyze
Categoryruntime-safety
Evidence classruntime-safety
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_range_value_array_shape
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA227

Array lifecycle and dimension safety. An array may be unallocated, accessed with an invalid dimension or bound, or used without a provable array value; real-time array-return summaries are limited to the active document.

PropertyValue
Familyanalyze
Categoryruntime-safety
Evidence classruntime-safety
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeinterprocedural
Precisionmedium
Enabled by defaultyes
Configurationdetect_array_lifecycle_safety
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA228

ByRef type mismatch. A resolved project-local ByRef call passes a statically incompatible argument type that the VBE rejects at compile time.

PropertyValue
Familyanalyze
Categorytype-safety
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfacesanalyze, lsp
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VBA229

Unresolved local As type name. A procedure-local declaration uses a VBA type name that cannot be resolved from the project or production type database.

PropertyValue
Familyanalyze
Categorytype-safety
Evidence classcompile-equivalent
Compile-equivalentyes
Default severityerror
Supported severitieserror
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationnot configurable
Inline suppressionno
Blocks source preflightyes
Real-time editor diagnosticyes
Fix availableno

VBA230

Dictionary CompareMode changed after insertion. A Dictionary CompareMode is changed after entries have been added to the same dictionary instance.

PropertyValue
Familyanalyze
Categoryruntime-safety
Evidence classruntime-safety
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationdetect_dictionary_compare_mode_order
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA231

Repeated Dictionary loop materialization. Dictionary Keys or Items is repeatedly materialized inside a loop instead of being cached or enumerated once.

PropertyValue
Familyanalyze
Categoryperformance
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationdetect_dictionary_loop_materialization
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA232

Inconsistent Dictionary key normalization. The same Dictionary key source is used with inconsistent raw, case-normalized, or trimmed forms.

PropertyValue
Familyanalyze
Categoryruntime-safety
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_dictionary_key_normalization
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA233

Undefined late-bound Dictionary constant. A late-bound Dictionary CompareMode uses a Scripting enum constant that is not defined in the project.

PropertyValue
Familyanalyze
Categorycorrectness
Evidence classinference
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeproject-wide
Precisionhigh
Enabled by defaultyes
Configurationdetect_late_bound_dictionary_constants
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA234

Collection mutation during iteration. A Collection is mutated while a For Each loop is iterating the same collection instance.

PropertyValue
Familyanalyze
Categoryruntime-safety
Evidence classruntime-safety
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationdetect_collection_iteration_mutation
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA235

Collection index origin confusion. A one-based Collection is accessed with a zero index or an unadjusted zero-based loop or array index.

PropertyValue
Familyanalyze
Categoryruntime-safety
Evidence classruntime-safety
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_collection_index_origin
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA236

Unsafe command construction. A process-launch command may combine external input, an unquoted executable path, secrets, or unobserved execution.

PropertyValue
Familyanalyze
Categorysecurity
Evidence classpolicy
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_unsafe_command_construction
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA237

Suppressed error propagation. A procedure or call boundary loses failure information by returning normally without rethrowing, returning a success flag that the caller ignores, or otherwise failing to signal failure.

PropertyValue
Familyanalyze
Categoryruntime-safety
Evidence classruntime-safety
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeinterprocedural
Precisionhigh
Enabled by defaultyes
Configurationdetect_error_suppression_propagation
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA238

Loop-invariant Excel object resolution. A loop repeatedly resolves an Excel object-model member chain that does not depend on the loop variable and could be cached outside the loop.

PropertyValue
Familyanalyze
Categoryperformance
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_loop_invariant_excel_object_resolution
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA239

Unsafe SQL construction. A SQL statement may combine external input, dynamic identifiers, locale-sensitive values, manual quoting, or wildcard input before execution.

PropertyValue
Familyanalyze
Categorysecurity
Evidence classpolicy
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_unsafe_sql_construction
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA240

Risky module-level mutable state. Module-level mutable state has project-wide readers and writers that create hidden lifecycle coupling.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze
Scopeproject-wide
Precisionmedium
Enabled by defaultno
Configurationdetect_risky_module_state
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA241

Repeated ReDim Preserve inside loop. A dynamic array is repeatedly resized with ReDim Preserve inside a loop, potentially copying the existing array on every iteration.

PropertyValue
Familyanalyze
Categoryperformance
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning, information
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_redim_preserve_in_loops
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA242

Expensive full-range operation. A costly Excel operation targets an entire row, column, worksheet, or an unbounded UsedRange where a bounded range is likely intended.

PropertyValue
Familyanalyze
Categoryperformance
Evidence classmaintainability
Compile-equivalentno
Default severityinformation
Supported severitiesinformation, warning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultno
Configurationdetect_expensive_full_range_operations
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA243

Value2 performance opportunity. A bulk or repeated Range.Value read or write may benefit from Range.Value2 when automatic Currency or Date coercion is not required.

PropertyValue
Familyanalyze
Categoryperformance
Evidence classmaintainability
Compile-equivalentno
Default severityinformation
Supported severitiesinformation, warning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultno
Configurationdetect_value2_performance_opportunities
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA244

Recursive and cyclic procedure dependency. Procedures form a recursive or cyclic dependency; normal analysis reports one deterministic representative witness per cyclic strongly connected component, and dangerous reachable effects are reported.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classmaintainability
Compile-equivalentno
Default severityinformation
Supported severitiesinformation, warning
Surfacesanalyze
Scopeproject-wide
Precisionmedium
Enabled by defaultyes
Configurationdetect_procedure_call_cycles
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticno
Fix availableno

VBA245

Unsafe destructive file and path operation. A destructive or state-dependent file operation may use an empty, root, relative, wildcard, traversing, overwritten, or externally derived path.

PropertyValue
Familyanalyze
Categorysecurity
Evidence classpolicy
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_unsafe_file_path
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA246

Unsafe HTTP or TLS configuration. An HTTP client configuration may expose credentials, weaken TLS validation, log authorization data, or immediately execute downloaded content.

PropertyValue
Familyanalyze
Categorysecurity
Evidence classpolicy
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_unsafe_http_configuration
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA247

Missing or unlimited HTTP timeout. A long-running HTTP operation may wait indefinitely because supported client timeouts are missing or explicitly unlimited.

PropertyValue
Familyanalyze
Categoryreliability
Evidence classpolicy
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultyes
Configurationdetect_missing_http_timeout
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA248

Opaque Boolean control arguments. A procedure call passes Boolean literals positionally in a way that obscures the behavior being requested.

PropertyValue
Familyanalyze
Categorymaintainability
Evidence classmaintainability
Compile-equivalentno
Default severitywarning
Supported severitieswarning
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionmedium
Enabled by defaultno
Configurationdetect_opaque_boolean_arguments
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

VBA249

Deterministic runtime error. Constant evaluation, type information, control-flow, or dataflow facts prove that an expression will fail at runtime.

PropertyValue
Familyanalyze
Categoryruntime-safety
Evidence classruntime-error
Compile-equivalentno
Default severityerror
Supported severitieserror
Surfacesanalyze, lsp
Scopeprocedure-local
Precisionhigh
Enabled by defaultyes
Configurationdetect_deterministic_runtime_errors
Inline suppressionyes
Blocks source preflightno
Real-time editor diagnosticyes
Fix availableno

Released under the MIT License.