Known limitations
Installation folders
STWA1-Property access in read/write methods
STWA2-Ambiguous unit references
STWA3-Subprogram calls itself unconditionally
STWA4-Index error
STWA5-Possible bad pointer usage
STWA6-Possible bad typecast (for objects: consider using "as")
STWA7-For-loop with possible bad condition
STWA8-Bad parameter usage
STWA9-Generic interface has GUID
STWA10-Interface lacks GUID
WARN1-Interfaced identifiers that are used, but not outside of unit
WARN2-Interfaced class identifiers that are public/published, but not used outside of unit
WARN3-Variables that are referenced, but never set
WARN4-Variables that are referenced, but possibly never set (ref/set by unknown subprograms)
WARN5-Variables that are set, but never referenced
WARN6-Variables that are set, but possibly never referenced (ref/set by unknown subprograms)
WARN7-Local variables that are referenced before they are set
WARN8-Local variables that may be referenced by unknown subprogram before they are set
WARN9-Var parameters that are used, but never set
WARN10-Var parameters that are used, but possibly never set (ref/set by unknown subprograms
WARN11-Value parameters that are set
WARN12-Value parameters that are possibly set (ref/set by unknown subprogram)
WARN13-Interfaces passed as parameters without "const" directive
WARN14-Variables with absolute directive
WARN15-Constructors/destructors without calls to inherited
WARN16-Destructors without override directive
WARN17-Classes with more than one destructor
WARN18-Function result not set
WARN19-Recursive subprograms
WARN20-Dangerous Exit-statements
WARN21-Dangerous Raise
WARN22-Dangerous Label-locations inside for-loops
WARN23-Dangerous Label-locations inside repeat/while-loops
WARN24-Possible bad object creation
WARN25-Bad thread-local variables
WARN26-Instance created of class with abstract methods
WARN27-Empty code blocks and short-circuited statements
WARN28-Empty case labels
WARN29-Short-circuited for-statements
WARN30-Short-circuited if/case-statements
WARN31-Short-circuited on-statements
WARN32-Short-circuited repeat-statements
WARN33-Short-circuited while-statements
WARN34-Empty except-block
WARN35-Empty finally-block
WARN36-Forward directive in interface
WARN37-Empty subprogram parameter list
WARN38-Ambiguous references in with-blocks
WARN39-Classes without overrides of abstract methods
WARN40-Local for-loop variables read after loop
WARN41-Local for-loop variables possibly read after loop
WARN42-For-loop variables not used in loop
WARN43-Non-public constructors/destructors
WARN44-Functions called as procedures
WARN45-Mismatch property read/write specifiers
WARN46-Local variables that are set but not later used
WARN47-Duplicate lines
WARN48-Duplicate class types in except-block
WARN49-Redeclared identifiers from System unit
WARN50-Identifier with same name as keyword/directive
WARN51-Out parameter is read before set, or never set
WARN52-Possible bad assignment
WARN53-Mixing interface variables and objects
WARN54-Set before passed as out parameter
WARN55-Redeclares ancestor member
WARN56-Parameter to FreeAndNil is not an object
WARN57-Enumerated constant missing in case structure
WARN58-Mixed operator precedence levels
WARN59-Explicit float comparison
WARN60-Condition evaluates to constant value
WARN61-Assigned to itself
WARN62-Possible orphan event handler
WARN63-Mismatch 32/64-bits
MEMO1-Local objects with unprotected calls to Free
MEMO2-Non-local objects with unprotected calls to Free
MEMO3-Objects created in try-structure
MEMO4-Unbalanced Create/Free
MEMO5-Local objects that are created more than once without being freed in-between
MEMO6-Local objects that are referenced before being created
MEMO7-Local objects that are referenced after being freed
COWA1-Controls that overlap visually
COWA2-Labels with Caption-property that does not end in ":"
COWA3-Conflicting accelerators
COWA4-Labels (or static texts) that have accelerators but FocusControl is not set
COWA5-Conflicting shortcuts
COWA6-Buttons/menu items with OnClick-event that is unassigned
COWA7-Menu items that have HelpContext=0
COWA8-Hint is not activated
REDU1-Identifiers never used
REDU2-Local identifiers only used at a lower scope
REDU3-Local identifiers only used at a lower scope, but in more than one subprogram
REDU4-Local identifiers that are set and referenced once
REDU5-Local identifiers that possibly are set and referenced once
REDU6-Local identifiers that are set more than once without referencing in-between
REDU7-Local identifiers that possibly are set more than once without referencing in-between
REDU8-Class fields that are zero-initialized in constructor
REDU9-Class fields that possibly are zero-initialized in constructor
REDU10-Local long strings that are initialized to empty string
REDU11-Local long strings that possibly are initialized to empty strings
REDU12-Functions called only as procedures (result ignored)
REDU13-Functions/procedures (methods excluded) only called once
REDU14-Methods only called once from other method of the same class
REDU15-Unneeded boolean comparisons
REDU16-Boolean assignment can be shortened
REDU17-Fields only used in single method
REDU18-Consider using interface type
REDU19-Redundant parentheses
REDU20-Common subexpression, consider elimination
REDU21-Default parameter values that can be omitted
REDU22-Inconsistent conditions
REDU23-Typecasts that possibly can be omitted
REDU24-Local identifiers never used
CONV1-Ordinary types that do not start with "T"
CONV2-Exception types that do not start with "E"
CONV3-Pointer types that do not start with "P"
CONV4-Interface types that do not start with "I"
CONV5-Class fields that are not declared in the private section
CONV6-Class fields that are exposed by properties (read/write) but do not start with "F"
CONV7-Properties to method pointers that do not start with "On/Before/After"
CONV8-Functions that are exposed by properties (read) but do not start with "Get"
CONV9-Procedures that are exposed by properties (write) but do not start with "Set"
CONV10-Classes that have visible constructors with bad names
CONV11-Classes that have visible destructors with bad names
CONV12-Identifiers that have unsuitable names
CONV13-Multiple with-variables
CONV14-Property access methods that are not private/protected
CONV15-Hard to read identifier names
CONV16-Label usage
CONV17-Bad class visibility order
CONV18-Identifiers with numerals
CONV19-Local identifiers that "shadow" outer scope identifiers
CONV20-Local identifiers that "shadow" class members
CONV21-Class/member name collision
CONV22-Class fields that are not declared in the private/protected sections
CONV23-Class fields that do not start with "F"
CONV24-Value parameters that do not start with selected prefix
CONV25-Const parameters that do not start with selected prefix
CONV26-Out parameters that do not start with selected prefix
CONV27-Var parameters that do not start with selected prefix
CONV28-Old-style function result
CONV29-With statements
CONV30-Private can be changed to strict private
CONV31-Protected can be changed to strict protected
OPTI1-Missing "const" for unmodified string parameter
OPTI2-Missing "const" for unmodified record parameter
OPTI3-Missing "const" for unmodified array parameter
OPTI4-Array properties that are referenced/set within methods
OPTI5-Virtual methods (procedures/functions) that are not overridden
OPTI6-Local subprograms with references to outer local variables
OPTI7-Subprograms with local subprograms
OPTI8-Parameter is "var", can be changed to "out"
OPTI9-Inlined subprograms not inlined because not yet implemented
OPTI10-Managed local variable that can be declared inline
OPTI11-Managed local variable is inlined in loop
Menu items
Analyze project
Analyze module
Quick analysis of module
General settings
Report settings
Help for Pascal Expert
About Pascal Expert

Copyright © 2001-2023 Peganza