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