History for Pascal Expert


This is a list of major changes (error fixes and enhancements) for Pascal Expert.

Version 9.12.13 October 22, 2024
  • fixed error analyzing code paths
  • fixed error in WARN60-"Condition evaluates to constant value"
  • fixed multi-threading issues
  • fixed an issue with WARN46-"Local variables that are set but not later used"
  • WARN52-"Possible bad assignment", warnings could be duplicated
  • fixed errors with typecasts and WARN52-"Possible bad assignment"
Version 9.12.12 September 12, 2024
  • fixed issue with third-party code
  • improved performance for CONV19-"Local identifiers that 'shadow' outer scope identifiers"
  • improved performance for CONV20-"Local identifiers that 'shadow' class members"
Version 9.12.11 September 3, 2024
  • numerous low-level fixes and improvements
  • fixed some issues with exceptions
  • fixed issues with overloads
  • conditional define symbol LLVM is from Delphi 12 predefined for LLVM-based compilers (synonym to EXTERNALLINKER)
  • fixed issue with with-statements
  • improved handling of code paths
  • fixed issue with goto-labels and if-statements
  • fixed issue with non-standard formatted case-structures
  • identifiers containing "Dummy" (not case-sensitive) in the name are not reported, e.g. "vDummy", "dummyStr"
  • WARN55 now also warns for helpers that replace method in helped class/record, caption changed to "Replaces ancestor member, or method in helped class/record"
  • fixed issue with WARN5-"Variables that are set, but never referenced"
  • fixed issue with WARN46-"Local variables that are set but not later used"
  • fixed issue with OPTI5-"Virtual methods (procedures/functions) that are not overridden"
  • improved display of REDU20-"Common subexpression, consider elimination"
  • improved WARN18-"Function result not set"
  • improved MEMO1-"Local objects with unprotected calls to Free"
  • improved MEMO2-"Non-local objects with unprotected calls to Free"
  • fixed issue with WARN15-"Constructors/destructors without calls to inherited"
  • WARN38-"Ambiguous references in with-blocks" also displayed warnings from non-reported units
  • fixed issue with MEMO7-"Local objects that are referenced after being freed"
  • fixed issue with WARN57-"Enumerated constant missing in case-structure"
  • fixed issue with REDU19-"Redundant parentheses"
  • fixed issue with WARN9-"Var parameters that are used, but never set"
  • fixed issue with REDU15-"Unneeded boolean comparisons"
  • improved WARN47-"Duplicate lines", now only reports code statements that are duplicate, not declarations
  • fixed issue with WARN24-"Possible bad object creation"
  • fixed issue with WARN61-"Assigned to itself"
  • improved REDU16-"Boolean assignment can be shortened"
  • fixed issue with WARN46-"Local variables that are set but not later used"
  • WARN37-"Empty subprogram parameter list" also included results from non-reported units
  • fixed issue with OPTI8-"Parameter is 'var', can be changed to 'out'"
  • WARN5-"Variables that are set, but never referenced" now excludes identifiers passed as out parameters
  • WARN38-"Ambiguous references in with-blocks" also included results from non-reported units
  • fixed some issues with WARN54-"Set before passed as out parameter"
  • subprograms that use "goto" are in most cases not examined by WARN18-"Function result not set"
  • fixed issue with WARN47-"Duplicate lines"
  • fixed issue with WARN59-"Explicit float comparison"
  • WARN20-"Dangerous Exit-statements" now does not report Exit immediately followed by a goto-label
  • fixed issue with WARN61-"Assigned to itself"
  • fixed issue with WARN63-"Mismatch parameter value (32/64-bits)"
Version 9.12.10 April 23, 2024
  • numerous low-level fixes and improvements
  • fixed some issues with forward declarations
  • fixed error parsing "deprecated" directive
  • fixed error related to operators
  • fixed some issues with local subprogram
  • improved handling of records with variant part
  • fixed threading issue
  • fixed issue for with-statement
  • fixed issue with helpers
  • fixed issues with overloads
  • fixed issue with MEMO4-"Unbalanced Create/Free"
  • fixed issue with MEMO5-"Local objects that created more than once without being freed in-between"
  • fixed issue with MEMO6-"Local objects that are referenced before being created"
  • fixed issue with MEMO7-"Local objects that are referenced after being freed"
  • fixed issue with REDU16-"Boolean assignment can be shortened"
  • fixed issue with STWA3-"Subprogram calls itself unconditionally"
  • fixed issue with WARN18-"Function result not set"
  • fixed issue with WARN24-"Possible bad object creation"
  • fixed issue with WARN30-"Short-circuited if/case-statements"
  • fixed issue with WARN48-"Duplicate class types in exception block"
  • fixed issue with WARN52-"Possible bad assignment"
  • improved WARN59-"Explicit float comparison" to detect more cases
  • fixed issue with WARN61-"Assigned to itself"
Version 9.12.9 March 8, 2024
  • fixed issues with multi-line strings
  • fixed issue with generics and forward declarations
  • fixed issue with overloads
  • CONV23-"Class fields that do not start with F", erronously also reported record fields
  • removed some false positives from REDU19-"Redundant parentheses"
  • fixed issue with STWA1-"Property access in read/write methods"
  • fixed issue with WARN18-"Function result not set"
  • fixed issues with WARN39-"Classes without overrides of abstract methods"
Version 9.12.8 February 2, 2024
  • improved handling of attributes
  • improved handling of overloads
  • suppress lines: PALOFF can now be wrapped in curly brackets also, like "{PALOFF}" or "{ PALOFF }", so not only "//PALOFF"
  • fixed low-level parser issue
  • fixed issue with WARN18-"Function result not set"
  • fixed issue with WARN39-"Classes without overrides of abstract methods"
  • fixed issue with WARN55-"Redeclares ancestor member", causing duplicated results
Version 9.12.7 February 10, 2024
  • improved handling of class/record helpers
  • improved handling of if-statements formatted in a non-standard way
  • improved handling of records with variant fields
  • improved handling of type declarations inside class/record declarations
  • improved handling of overloads
  • fixed low-level code that could not handle very large string constants
  • fixed error parsing deprecated constants
  • fixed issue with OPTI8-"Parameter is "var", can be changed to "out""
  • fixed issues with REDU19-"Redundant parentheses"
  • fixed issue with STWA1-"Property access in read/write methods"
  • fixed issue with STWA3-"Subprogram calls itself unconditionally"
  • now does not examine variables with "absolute" directive in STWA5-"Possible bad pointer usage"
  • fixed issue with STWA10-"Interface lacks GUID"
  • fixed issue with WARN3-"Variables that are referenced but never set"
  • fixed issue with WARN39-"Classes without overrides of abstract methods"
  • fixed issue with WARN47-"Duplicate lines"
  • warning for WARN51-"Out parameter is read before set, or never set" was reported also for abstract methods
  • fixed issue with WARN61-"Assigned to itself"
Version 9.12.6 January 23, 2024
  • fixed a problem parsing literal strings
Version 9.12.5 January 20, 2024
  • fixed a problem with generics
  • fixed a problem with code paths
Version 9.12.4 January 15, 2024
  • fixed an issue with WARN24-"Possible bad object creation"
  • typo "nestled" changed to "nested" in reports and documentation
  • fixed an issue with WARN18-"Function result not set"
  • fixed an error handling Low() and High() function calls for expressions
  • fixed some issues with try-finally blocks and code paths
  • fixed some issues with generics
  • fixed problem with WARN51-"Out parameter is read before set, or never set"
  • fixed problem with WARN54-"Set before passed as out parameter"
  • fixed a problem with CONV30-"Private can be changed to strict private"
  • fixed a problem with WARN58-"Mixed operator precedence levels"
  • fixed some issues with overloads
  • fixed some issues with REDU19-"Redundant parentheses"
  • STWA7-"For-loop with possible bad condition" now displays the location of the for-loop
  • fixed some threading issues
  • fixed problem with WARN46-"Local variables that are set but not later used"
Version 9.12.3 November 20, 2023
  • removed unnecessary warning for WARN54-"Set before passed as out parameter"
  • custom attributes inheriting from TCustomAttribute are not reported in CONV1-"Ordinary types that do not start with T"
  • custom managed records are not examined for WARN7-"Local variables that are referenced before they are set" (and WARN8), they are considered always initialized
  • now supports also Delphi 12 Athens
  • WARN51, changed caption to "Out parameter is read before set, or never set", because now also reports when the out parameter is not set
  • fixed some issues with environment variables
Version 9.12.2 October 26, 2023
  • new STWA10-"Interface lacks GUID" report section
  • WARN27 now has caption "Short-circuited if/case-statements", because now also reports on "else" being short-circuited in a case-statement
  • fixed some issues with STWA4-"Index error"
  • improved WARN5-"Variables that are set but never referenced" to detect more cases
  • fixed some problems with generics
  • removed a false positive that could occur for WARN7-"Local variables that are referenced before they are set" (and WARN8)
  • fixed some issues with WARN60-"Condition evaluates to constant value"
  • fixed some issues with REDU19-"Redundant parentheses"
  • fixed problem with CONV13-"Multiple with-variables"
  • WARN9-"Var parameters that are used, but never set" now does not report variables that are managed
  • for STWA2-"Ambiguous unit references" removed warnings that were formally correct, but harmless so no action needed
  • improvements for WARN63-"Mismatch parameter value (32/64-bits)"
Version 9.12.1 September 19, 2023
  • CONV23 now skips DFM-fields
  • fixed error parsing form files for FileMonkey
  • fixed an error with WARN46
  • fixed an error with CONV13
  • fixed an error with WARN61
  • AV could occur in some situations for STWA4 and other report sections involving expressions
  • WARN63 now also detects assignments 32/64-bits, so caption is now "Mismatch 32/64-bits"
  • improved STWA4 so it now works also for multi-dimensional arrays (up to 3 dimensions)
  • fixed some issues for WARN46
  • number of old warnings was not reported correctly for WARN44
  • fixed some issues with overloads
Version 9.12.0 August 14, 2023
  • lots of internal fixes and improvements, also with regard to memory consumption and speed
  • fixed an issue with nested class types and constants
  • removed false positives in WARN52-"Possible bad assignment"
  • fixed some issues with overloads
  • fixed an issue with STWA5-"Possible bad pointer usage"
  • WARN7 and WARN8 now skip variables that are "absolute" for other variables
  • fixed a false positive for WARN9-"Var parameters that are used but never set"
  • modified handling of expression to remove false positive for STWA4-"Index error"
  • improved MEMO4
  • improved MEMO5
  • improved MEMO6
  • improved MEMO7
  • improved WARN7
  • improved WARN18
  • improved WARN20
  • improved WARN21
  • improved WARN39, now also warns even if class not created
  • improved WARN59
  • fixed an error affecting WARN20
  • removed the option to put PALOFF on a type declaration (e.g. class) and thus make PALOFF work on all members, caused lots of problems
  • removed STWA10-"Out parameter is read before set", its warnings were already in section WARN51
  • WARN21 now does not give warning for "raise" inside except-blocks
  • WARN14 listed the variable that was the target of "absolute", not the variable with the directive
  • fixed error excluding identifiers for reports
  • slightly modified header text for STWA6
  • REDU8/REDU9 now exclude record fields
Version 9.11.0 March 27, 2023
  • fixed issues with compilation directives
  • new section in the Conventions Report, CONV23-"Class fields that do not start with 'F'"
  • new sections in the Conventions Report, CONV24-CONV27, reporting parameters that do not confirm to selected prefix
  • new section in the Conventions Report, CONV28-"Old-style function result"
  • new section in the Conventions Report, CONV29-"With statements"
  • improved interpretation of $IF-expressions
  • fixed some issues concerning generics
  • WARN63-"Mismatch parameter value (32/64-bits)" only reported the first location encountered. Now the list of warnings consists of two parts with a description for each item.
  • new section in the Conventions Report, CONV30-"Private can be changed to strict private"
  • new section in the Conventions Report, CONV31-"Protected can be changed to strict protected"
  • fixed an error parsing "inherited", caused false positive for STWA3-"Subprogram calls itself unconditionally"
  • REDU24-"Local identifiers never used" could not be deselected
  • option "Show implementation line numbers" did not work correctly
Version 9.10.7 March 3, 2023
  • fixed issue resolving overloaded functions/procedures
  • improved UI for visually impaired users
  • adjusted for Delphi 11.3
  • added exception handling when reading options at startup
Version 9.10.6 December 20, 2022
  • improved WARN52
  • STWA7 did not respect PALOFF when put on declaration of loop variable
  • fixed an issue with MEMO7
  • fixed an issue with WARN7
  • fixed an issue with WARN58
  • REDU1, now does not report members of interface type
  • Convention Report did not honor PALOFF
  • PALOFF did not work with REDU22 report section
  • improved error handling when source file contains invalid characters
  • removed message line when previous line had the same content, could occur in some situations
Version 9.10.5 November 3, 2022
  • fixed a problem with MEMO4
  • fixed a problem with WARN63, parameters were not examined
  • fixed a problem with WARN7 for field variables
  • fixed a problem with CONV5
  • improved STWA5, now detects more situations
  • fixed a problem with inlined variables
  • for STWA5-"Bad pointer usage", if a variable is found with bad usage only the first occurence is reported
  • fixed a problem with WARN58
Version 9.10.4 September 9, 2022
  • adjusted for Delphi 11.2
Version 9.10.3 August 24, 2022
  • improved handling of custom managed records
  • fixed an edge case error for MEMO4
  • fixed some memory issues
Version 9.10.2 August 8, 2022
  • fixed issues finding files
  • for a package main file (*.dpk) the corresponding *.dproj file was not read
  • fixed a problem with expressions and anonymous functions
  • increased the size of some internal fields to avoid range check errors
  • fixed some generics problems
  • improved handling of inlined variables
  • fixed issue with WARN7 for records
  • fixed issue with WARN9 if event handler was based on a control and not on a form
Version 9.10.1 July 6, 2022
  • fixed a problem parsing properties
  • fixed a problem finding INC-files
Version 9.10.0 June 30, 2022
  • reworked handling of records and fields
  • improved resolution of calls to overloaded functions
  • new section WARN63-"Mismatch parameter value (32/64-bits)"
  • a couple of report sections were displayed even if not selected, or if location was suppressed
  • improved message formatting
Version 9.9.8 March 9, 2022
  • fixed a problem parsing properties
Version 9.9.7 March 1, 2022
  • fixed some issues for WARN7-"Local variables that are referenced before they are set"
  • fixed some issues related to line suppression ("PALOFF")
  • fixed problem with STWA6-"Possible bad typecast"
  • fixed problem with STWA4-"Index error"
  • fixed some problems parsing expressions
Version 9.9.6 February 8, 2022
  • fixed a problem with STWA10-"Out parameter is read before set"
  • improved handling of interfaces
  • improved WARN52
  • improved OPTI8
  • new features for PALOFF handling
  • fixed parsing error for property declaration in some edge case
Version 9.9.5 January 21, 2022
  • fixed an issue with class/record helpers
  • fixed some issues concerning overloaded subprograms
  • removed some false positives from REDU12-"Functions called only as procedures"
  • removed false positives from REDU16-"Boolean assignment can be shortened"
  • fixed a problem recognizing identifiers in some edge case
  • fixed an error while parsing variant records
  • fixed an error resolving property references
  • fixed an error related to properties and generic types
  • fixed a potential problem with STWA6-"Possible bad typecast"
Version 9.9.4 January 2, 2022
  • fixed an issue resolving function calls
Version 9.9.3 December 29, 2021
  • fixed an issue resolving overridden function calls
Version 9.9.2 December 15, 2021
  • removed an exception that could occur while parsing $IF-expressions
  • REDU1 now not reports value parameter "Sender"
Version 9.9.1 December 3, 2021
  • fixed some problems with WARN3, WARN4 report sections
  • fixed an issue with REDU1 and class helpers
  • fixed some issues with class helpers
  • fixed an issue with properties in DFM-files, that affected the "Uses Report"
  • fixed an issue with overloaded functions
  • MEMO1, MEMO2 now exclude objects that are freed directly on the code line just after where they are created
Version 9.9.0 September 21, 2021
  • new report section: "OPTI11-Managed local variable is inlined in loop"
  • removed some false positives from STWA2
  • added support for Delphi 11
  • improved function that checks for new version
Version 9.8.0 August 4, 2021
  • WARN39: warnings are not issued for classes that do not implement an abstract method, if that class is never instantiated
  • STWA7: fixed error, also reported suppressed lines (PALOFF)
  • WARN62: events that override events in ancestor class, now do not generate a warning
  • new report section: OPTI10-"Managed variables can be declared inline"
  • removed false positives from WARN62 in some cases
  • improved WARN3 report section
  • removed false positive for STWA3 when function address was referenced
  • removed false positive for STWA10 when variable was typecasted
  • WARN7/WARN8: now writes "Read+Set" when passed as a var-parameter
  • improved MEMO4, now also uses expressions
Version 9.7.10 July 7, 2021
  • calls to Writeln procedure were not always handled correctly
  • various preformance improvements and fixes for expressions
Version 9.7.9 March 18, 2021
  • reworked creation of menus and toolbar, to avoid AV on startup. Help menu is now under Pascal Expert branch, instead of under Third-Party Help.
Version 9.7.8 March 15, 2021
  • also supports Delphi 10.4.2
  • fixed a problem where duplicate menus could occur
  • when toolbars are activated, there is an AV at startup deep down in the VCL code. The plugin still works, and the AV can be avoided by not using toolbars. We hope to have this fixed as soon as possible.
Version 9.7.7 February 4, 2021
  • new version of activation component
Version 9.7.6 October 8, 2020
  • fixed error displaying dialogs in older Delphi versions
Version 9.7.5 September 22, 2020
  • if number of structures to analyze was less than 10, could cause exception and no reports were written
Version 9.7.4 September 18, 2020
  • if number of expressions to analyze was less than 10, could cause exception and no reports were written
  • added button to select back color for normal messages
  • WARN47-"Duplicate lines" did not work correctly
  • improved error handling
Version 9.7.3 September 11, 2020
  • performance improvements
  • fixed problem with WARN7 report section
Version 9.7.2 August 20, 2020
  • removed false positives in WARN53
  • WARN61 report section could cause AV
  • fixed error parsing nodefault directive
  • fixed false positive in WARN39 in some cases with class methods
  • fixed error with include-directive containing "/"
  • fixed problem with dialogs in versions Delphi 10.3 and earlier
Version 9.7.1 August 12, 2020
  • lots of internal improvements
  • fixed error parsing scoped enums directive
  • font size now possible to select for various types of warnings
Version 9.7.0 May 29, 2020
  • added support for Delphi 10.4 (Sydney)
  • WARN56-"Parameter to FreeAndNil is not an object" always returns 0 warnings if compiler is Delphi 10.4 or later
  • fixed issues with expressions
  • default compiler target is Delphi 10.4 Win64
  • PALOFF (or the string choosen as suppression marker); enough now that the string exists somewhere in the comment after "//"
Version 9.6.4 May 19, 2020
  • various fixes related to expressions
  • WARN24: removed false positive for record in some cases
  • fixed parser error for with-statement, and inner class type
  • removed false warning for CONV12-"Identifiers that have unsuitable names"
  • fixed problem related to parsing "inherited"
Version 9.6.3 May 6, 2020
  • various fixes related to expressions
Version 9.6.2 April 15, 2020
  • changed to Tahoma 9pt in dialogs
  • fixed parser error for generics
Version 9.6.1 February 20, 2020
  • now also supports source files in UCS-2
  • fixed problem parsing attributes in some cases
  • modified fonts used in UI
Version 9.6.0 December 6, 2019
  • removed false warning in STWA3, when method was assigned to event handler
  • fixed error in WARN18 in some situations
  • fixed error in WARN3 for record fields
  • added support for Delphi 10.3.3, with new target Android64
Version 9.5.0 August 7, 2019
  • fixed some parser problems
  • added support for Delphi 10.3.2 Rio
Version 9.4.6 May 27, 2019
  • fixed some problems for "with"-statements
  • fixed problem with "inherited" call
  • fixed problem with STWA2-"Ambiguous units" and constants
Version 9.4.5 March 6, 2019
  • some constants for Delphi 10.3 were missing, affected scope of analysis
  • speed improvements when analyzing structures
  • fixed parser errors for inline variables
  • improved error handling
Version 9.4.4 February 20, 2019
  • STWA3-"Subprogram calls itself unconditionally" - removed false positive in some cases
  • improved WARN52-"Possible bad assignment", now handles more situations
  • misc. memory optimizations
  • font coloring was broken
Version 9.4.3 January 29, 2019
  • fixed parser error for inline variables
Version 9.4.2 January 28, 2019
  • About-box can now display license information
  • WARN7-"Local variables that are referenced before they are set", now also checks Result variable in functions
  • WARN62-"Possible orphan event handler", tightened conditions, to avoid false positives
  • fixed error handling result variable for operator methods
Version 9.4.1 December 14, 2018
  • fixed some issues for WARN62-"Possible orphan event handler"
Version 9.4.0 December 4, 2018
  • support added for Delphi 10.3 Rio
  • fixed AV in WARN62
Version 9.3.1 November 25, 2018
  • WARN62 was analyzed even if only current file examined
Version 9.3.0 November 21, 2018
  • fixed problem resolving identifiers within "with"-statement
  • improved WARN52
  • renamed WARN52 to "Possible bad assignment"
  • new STWA10 report section: "Out parameter read before set"
  • removed false positive for STWA9-"Generic interface has GUID"
  • fixed problem resolving calls to overloaded function
  • new WARN62 report section: "Possible orphan event handler"
Version 9.2.12 October 27, 2018
  • fixed problem with code that could be stuck in infinite recursion
  • fixed error with false positive for OPTI8-"Var param can be changed to out"
  • removed a false positive for WARN5-"Possible bad pointer", for an edge case
Version 9.2.11 October 16, 2018
  • fixed error in PexRunner32/PexRunner64, string could be too long, causing AV
  • dialog to select folders is now much wider, so more of the path is visible
Version 9.2.10 September 28, 2018
  • fixed problem with malformatted message
Version 9.2.9 September 26, 2018
  • removed false warning in WARN55 (Redeclares ancestor member)
  • removed false warning in MEMO4 (Unbalanced create/free)
  • removed false warning in WARN61 (Variable assigned to itself)
  • much improved handling of generics
  • improved WARN7 (Local variable read before written), removed some false positives in edge cases
  • fixed error in REDU22 (Inconsistent conditions), case sensitivity was not handled correctly
  • fixed parser error when property had name "Result"
  • fixed error in WARN47 (Duplicate lines)
  • fixed false positives for WARN18 (Function result not set)
  • fixed problems related to analysis of expressions
  • default is now to run analysis in external 32/64-bits process
Version 9.2.8 August 25, 2018
  • reference for used unit was not updated correctly in some cases
  • reference for class and record helpers were not correctly set
  • fixed error resolving expressions
Version 9.2.7 August 18, 2018
  • removed false warning for WARN56 in some cases
  • WARN47-"Duplicate lines" also included lines in comments
  • fixed error parsing unit name reference
Version 9.2.6 July 31, 2018
  • fixed problem parsing typed constant
  • fixed problem in STWA4 report section
  • fixed error in WARN61 report section
  • fixed some problems resolving unit names
  • fixed parser, removed false syntax error
  • handling of unknown references in WARN7 and WARN8 was improved
  • improved code that identified a unit as a Windows API unit
  • fixed error resolving class members
  • improved WARN7 report section
  • fixed errors resolving overloads
  • fixed error parsing typed enumerated constant
  • fixed error parsing attribute in a variant record type declaration
Version 9.2.5 June 6, 2018
  • fixed some problems evaluating expressions
  • class constants were erronously reported in WARN1
  • fixed some problems with WARN58 report section
  • fixed some problems with WARN59 report section
  • fixed some problems with WARN60 report section
  • fixed some problems with STWA1 report section
Version 9.2.4 May 24, 2018
  • fixed an error parsing variant record fields
  • CPU32BITS was not defined for some targets
  • fixed error resolving typecasts with "as"
  • fixed error for WARN3 for records with methods
  • fixed error: setting for running in DLL or external process did not work correctly
  • fixed error: code to decide to generate STWA7 report section was flawed
Version 9.2.3 May 10, 2018
  • fixed issue with invalid typecast
  • new option to always run analysis in external 32- or 64-bits process
Version 9.2.2 March 26, 2018
  • fixed AV in STWA8 in some edge cases
Version 9.2.1 March 20, 2018
  • fixed some problems with validation of licences
  • improved MEMO4 report
  • fixed AV in WARN61
Version 9.2.0 March 14, 2018
  • new report section (OPTI9) in Optimization Report: "Inlined subprogs not inlined because not yet implemented"
  • new report section (WARN61) in Warnings Report: "Assigned to itself"
  • new report section (STWA7) in Strong Warnings Report: "For-loop with possible bad condition"
  • new report section (STWA8) in Strong Warnings Report: "Bad parameter usage"
  • new report section (STWA9) in Strong Warnings Report: "Generic interfaces with GUID"
  • new report section (REDU24) in Reduction Report: "Local identifiers never used"
  • fixed routine that autoselects new report sections if project from an older version
  • fixed issue with expressions, were not processed correctly
  • fixed some problems with REDU21-"Default parameter values that can be omitted"
Version 9.1.0 February 9, 2018
  • new report section (WARN60) in Warnings Report: "Condition evalutates to constant value"
  • new report section (CONV22) in Convention Report: "Class fields that are not declared in the private/protected sections"
  • removed false positive for duplicate lines (WARN47) when anonymous function used
  • added a couple of predefined identifiers in System.pas introduced in Delphi 10.2 Upgrade 2, for Windows targets
  • fixed parser problem with type declaration
  • CONV5 also handled field instances, should not
  • fixed parser problem with class const declaration
  • fixed parser error when semicolon was omitted before "end"
  • fixed parser error for "implements"
Version 9.0.11 December 5, 2017
  • fixed error resolving generics
  • platform identifier in Delphi project file was not correct for iOSDevice64 targets
Version 9.0.10 November 25, 2017
  • fixed error with resolution of type alias declaration
Version 9.0.9 October 27, 2017
  • fixed error that caused AV when starting parsing
Version 9.0.8 October 25, 2017
  • STWA2 (Ambiguous unit references), removed some false positives
  • WARN18 (Function result not set), removed false positives
  • WARN52 (Bigger to smaller) now not considered for variants
  • MEMO4, (Unbalanced Create/Free), removed false positives in some situations
  • REDU1 (Identifiers not used), now does not check identifiers in assembler code
  • fixed problem resolving calls to overloaded functions/procedures
  • fixed problem involving types declared as aliases to other types
  • fixed problem resolving members of interfaces
  • initial scope for record type fields was not set to "public"
  • fixed error resolving calls to overloaded subprogs
Version 9.0.7 September 20, 2017
  • all EXE and DLL files are now code signed
  • error in MEMO4, did not report correctly
Version 9.0.6 August 27, 2017
  • removed false positive from STWA1 (Strong Warnings Report)
  • removed potential AV in Control Warnings Report
  • fixed error parsing expressions
  • fixed some problems with the Searched Strings Report
  • fixed some problems resolving methods based on an interface
  • fixed some issues with multireports
  • speedied up CONV19 considerably
  • fixed error resolving object created through a class reference
  • fixed problems resolving overload functions
  • combo box for thread priority had an extra empty item
  • added entry to Delphi's About-dialog
Version 9.0.5 July 25, 2017
  • fixed parser error for attribute in interface section
  • fixed issue with "with"-statements
Version 9.0.4 June 29, 2017
  • fixed some problems with expressions
Version 9.0.3 June 28, 2017
  • fixed some problems with report section STWA4 (Index Error)
Version 9.0.2 June 18, 2017
  • fixed problems resolving typecasts
Version 9.0.1 June 9, 2017
  • click Help button in options dialog did not load relevant topic
  • wrong links to help topics for new report sections
  • fixed problem parsing $IF-directive
  • some Warning Report sections were erronously checked for constants and parameters
  • fixed some issues resolving generics
Version 9.0.0 April 17, 2017
  • support added for the new Delphi 10.2 Tokyo, all compiler targers
  • new section in Strong Warnings Report: "Index error" (STWA4)
  • new section in Strong Warnings Report: "Possible bad pointer usage" (STWA5)
  • new section in Strong Warnings Report: "Possible bad typecast (consider using "as" for objects)" (STWA6)
  • new section in Warnings Report: "Mixing interface variables and objects" (WARN53)
  • new section in Warnings Report: "Set before passed as out parameter" (WARN54)
  • new section in Warnings Report: "Redeclares ancestor member" (WARN55)
  • new section in Warnings Report: "Parameter to FreeAndNil is not an object" (WARN56)
  • new section in Warnings Report: "Enumerated constant missing in case structure" (WARN57)
  • new section in Warnings Report: "Mixed operator precedence levels" (WARN58)
  • new section in Warnings Report: "Explicit float comparison" (WARN59)
  • new section in Code Reduction Report: "Consider using interface type" (REDU18)
  • new section in Code Reduction Report: "Redundant parentheses" (REDU19)
  • new section in Code Reduction Report: "Common subexpression, consider elimination" (REDU20)
  • new section in Code Reduction Report: "Default parameter values that can be omitted" (REDU21)
  • new section in Code Reduction Report: "Inconsistent conditions" (REDU22)
  • new section in Code Reduction Report: "Typecasts that possibly can be omitted" (REDU23)
  • fixed some parser problems
Version 8.3.15 March 6, 2017
  • fixed error parsing declaration with generics
  • fixed error parsing "final" directive
  • fixed problem parsing class declaration with unitscoped identifier names
  • fixed some issues with references to field in objects
  • fixed some issues with dereferencing variables
Version 8.3.14 February 25, 2017
  • fixed some problems with object in DFM-file missing type
  • improved handling of references to class helper methods
  • STWA3 (Subprogram calls itself unconditionally) currently does not examine overloaded subprograms
  • fixed exception in some cases while watching changed files in the editor
  • WARN9 (Var parameters that are used, but never set) and WARN10 (Var parameters that are used, but possibly never set) now exclude parameters to methods for classes that implement an interface
  • OPTI8 (Parameter is "var", can be changed to "out"') now exclude parameters to methods for classes that implement an interface
  • fixed error resolving generics declaration
  • improved handling of record fields passed as parameters
  • fixed parser error related to anonymous functions
  • STWA2 (Ambiguous unit reference) now excludes warnings if one identifier is from System and the other one from an Embarcadero unit if it is not clear that it is indeed an ambiguous reference
  • fixed problem resolving read/write for properties
  • fixed problem resolving overloaded calls in some cases
  • fixed error affecting WARN18 (Function result not set)
Version 8.3.13 January 29, 2017
  • fixed problem that could cause errors for CWARN3 (conflicting accelerators) and CWARN4 (focused control not set)
  • fixed list index error when resolving unit names
  • removed false positives for references to System identifiers in some cases
  • fixed error in low-level function handling references, caused missing warnings for WARN19 (recursive subprograms)
  • fixed error affecting REDU2 and REDU3 (identifiers only used in lower scope)
Version 8.3.12 January 21, 2017
  • removed some duplicate references added to identifiers
Version 8.3.11 January 14, 2017
  • fixed problem resolving unit names
  • STWA2 (Ambiguous unit references) is not reported when units involved are System and Windows
  • WARN47 (Duplicate lines) now excludes some common assembler statements
  • COWA2, checks that object is of correct type, could cause AV
  • REDU8 (Zero-initialized fields), now also handles variants
  • OPTI8 (Var parameter can be changed to out) removed some false positives
  • fixed problem resolving generic types
  • fixed handling of references to record variables and field instances
Version 8.3.10 January 6, 2017
  • REDU1 (Identifiers not used) now does not report a parameter used with a subprog that implements assembler code
  • STWA2 (Ambiguous unit references) now also displays line number for reported units
  • WARN18 (Function result not set) is not reported when the result type is unknown (source not found)
  • now uses TurboActivate 4.0.8
  • some alert report sections were generated although alerts were disabled
  • fixed parser problem with constant declared as an anonymous record type
  • fixed parser problem resolving unit names
Version 8.3.9 December 15, 2016
  • WARN37 (Empty subprogram parameter list) is now not selected as default
  • fixed problem with WARN46 (Local variables that are set but not later used) causing false positives under some conditions
  • fixed problem resolving unit names
  • WARN9, WARN10 (Var parameters that are used but never set) do not list parameters for methods that are overridden
  • fixed error for units with many overloads
  • wrong version number displayed in About-box and at startup of IDE
  • fixed error in WARN52 (Bigger assigned to smaller), caused AV
  • skips warning for MEMO7 (Local objects that are referenced after beging freed), if Free is in a condition
  • removed some needless warnings in STWA2 (Ambiguous unit refs)
  • MEMO1 (Local objects with unprotected calls to Free) now skip objects that are not created (probably assigned to existing object)
  • WARN50 (Identifier with same name as keyword/directive) now does not report overriding methods
  • false warning in STWA3 (Subprogram calls itself unconditionally), when parameters given as "()"
Version 8.3.8 November 27, 2016
  • end line of structures (for-loop, if-block etc) was not correctly registered
  • removed false warning in WARN15 when constructor calls another constructor
  • WARN7, WARN8 now also include local variables that are just read (never set)
  • removed some false warnings for arrays passed as parameters of pointer types
Version 8.3.7 November 22, 2016
  • enumerated type could be marked as unused even though its enumerated constants were used in a typed constant declaration
  • counter for WARN52 warnings was not correctly set
  • improved handling of "strict" class members
  • fixed problem for identifiers starting with '&&'
  • misc. parser fixes and improvements
Version 8.3.6 September 24, 2016
  • "WARN15-Constructors/destructors without call to inherited" was reported also for abstract members
  • "WARN26-Instance created of class with abstract methods" was triggered erronously in some cases
  • fixed problem resolving record type declared unnamed directly in variable declaration
Version 8.3.5 September 4, 2016
  • fixed problem in WARN8
Version 8.3.3 August 31, 2016
  • fixed problems with generics
  • improved WARN7 report section (Local variables that are referenced before they are set)
  • fixed a problem with report section OPTI8 (Parameter is "var", can be changed to "out")
  • improved WARN18 (Function result not set)
  • fixed problem with "with" header, affecting WARN24 (Possible bad object creation)
  • improved WARN26, better handling of generic types (Instance created of clkass with abstract methods)
  • WARN49, now excludes identifiers with name "Name" or "Index" (Redeclared identifiers from System unit)
Version 8.3.2 June 13, 2016
  • fixed problem with type declaration in class
Version 8.3.1 June 5 2016
  • fixed problem with sorting of references
  • fixed parsing problems with generics
  • internal structure could overflow in some cases
Version 8.3.0 May 8 2016
  • synched version numbering for minor digit, with Pascal Analyzer
  • fixed generics parser error
  • added support for Delphi 10.1 Berlin, with all targets
  • fixed parser error for conditional directive
  • fixed parser error for anonymous function
Version 8.1.0 Feb 11, 2016
  • fixed problem resolving overloaded subprograms
  • fixed problem resolving generics
  • added option to run out-of-process
  • added support for Delphi 2007
Version 8.0.8 Jan 24, 2016
  • fixed error with pointer dereference
  • improved resolving of generics declarations
  • fixed error for some COWA report sections, that could result in exceptions
  • new check button to show/hide toolbar
  • fixed problems with "with"-statements, resolving identifiers
  • fixed problem resolving overloaded subprograms
Version 8.0.7 Dec 11, 2015
  • fixed AV when going to WelcomePage
  • fixed some problems with "WARN47-Duplicate lines"
Version 8.0.6 Dec 1, 2015
  • fixed issue handling calls to Inc and Dec
  • fixed issues with unit scopes
  • fixed parser issue with generics
  • "show implementation line numbers" is now True, as default...
  • REDU1 now also reports unused identifiers declared in subprogs that are not used
  • fixed error with identier names
Version 8.0.5 Nov 9, 2015
  • changed memory handling, memory is now released totally after each analysis
  • WARN50 (bad identifier names) is now not selected as default
  • WARN50 and CONV12 (bad identifier names) now do not report common identifier names like "Name" and "Index"
Version 8.0.4 Nov 4, 2015
  • further fix for problem with wizard not loading
  • fixed parser error involving anomymous function returning generics
Version 8.0.3 Nov 3, 2015
  • fixed issue that prevented wizard from loading in some cases
Version 8.0.2 Nov 3, 2015
  • fixed parser error with generics code in some rare cases
  • fixed issues adding menus to IDE
Version 8.0.1 Oct 31, 2015
  • fixed problem with menus not created in some situations
  • added options to select shortcuts
  • selection list in options dialog was not read-only
  • walking selection list did not show relevant tab page
Version 8.0.0 Oct 30, 2015
  • first public version