![]() | 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 |
![]() | STWA11-Duplicated GUID |
![]() | STWA12-Equal if-then and if-else statements |
![]() | 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, or method in helped class/record |
![]() | 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-2025 Peganza