Introduction
Known limitations
Installation folders
Reports
Alerts
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
Reductions
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
Conventions
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
Optimizations
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
Stop
Options
General settings
Report settings
Alerts
Reductions
Optimizations
Conventions
Help for Pascal Expert
About Pascal Expert

Copyright © 2001-2023 Peganza