Is Missing on Inappropriate Argument

Identifies uses of 'IsMissing' involving non-variant, non-optional, or array parameters.

Reasoning

'IsMissing' only returns True when an optional Variant parameter was not supplied as an argument. This inspection flags uses that attempt to use 'IsMissing' for other purposes, resulting in conditions that are always False.

Default severity

Warning

Inspection type

CodeQualityIssues

Examples

This example should trigger a result

MyModule (StandardModule)
Public Sub DoSomething(ByVal foo As Long = 0) If IsMissing(foo) Then Exit Sub ' condition is always false ' ... End Sub

This example should NOT trigger a result

MyModule (StandardModule)
Public Sub DoSomething(Optional ByVal foo As Variant = 0) If IsMissing(foo) Then Exit Sub ' ... End Sub

Rubberduck.CodeAnalysis.Inspections.Concrete.IsMissingOnInappropriateArgumentInspection.cs (Prerelease-v2.5.9.6289)