Pascal Analyzer Changelog

What's new in Pascal Analyzer 9.12.10.0

Apr 24, 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
  • New option for Call Tree Report and Reverse Call Tree Report: "Extend". See help for more information
  • 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"
  • Fixed minor display error for the header of the Reverse Call Tree Report
  • Menu appearing at right-click in the editor was displayed too far down
  • Fixed some issues with printing of reports and code files

New in Pascal Analyzer 9.12.7.0 (Mar 11, 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"

New in Pascal Analyzer 9.12.6.0 (Jan 23, 2024)

  • Fixed a problem parsing literal strings

New in Pascal Analyzer 9.12.5.0 (Jan 20, 2024)

  • Fixed a problem with generics.
  • Fixed a problem with code paths.

New in Pascal Analyzer 9.12.4.0 (Jan 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 REDU19-"Redundant parentheses"
  • STWA7-"For-loop with possible bad condition" now displays the location of the for-loop
  • When jumping to the Delphi IDE, if several different IDEs are active, the one corresponding to the selected compiler target will be focused if possible
  • Fixed some threading issues
  • Fixed problem with WARN46-"Local variables that are set but not later used"
  • When changing the main file for a project, the dialog now opens in the same folder as where the existing file is

New in Pascal Analyzer 9.12.3.0 (Nov 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"
  • Implemented some support for high-DPI environments
  • 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

New in Pascal Analyzer 9.12.2.0 (Oct 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"
  • fixed error: option to open file only in Delphi IDE, also opened it in the built-in editor (there is now another option for that behaviour)
  • 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
  • improved sorting in Searched Strings Report
  • for STWA2-"Ambiguous unit references" removed warnings that were formally correct, but harmless so no action needed
  • fixed a UI error when closing all other editor documents
  • improvements for WARN63-"Mismatch parameter value (32/64-bits)"
  • active tabsheet for reports and editor documents now drawn in slightly different color, so easier to see which one is active

New in Pascal Analyzer 9.12.1.0 (Sep 18, 2023)

  • Fixed some small errors in the project properties dialog, for report options
  • CONV23 now skips DFM-fields
  • Fixed error parsing form files for FileMonkey
  • Option "Form files format" on Parser tab page in project options is removed, not needed
  • "Loaded files" in Status Report now also includes form files (DFM etc)
  • Avoided AV in editor window under some special circumstances
  • 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
  • When using /L with PALCMD, some of the warnings were output twice
  • Option "Reselect report" did not work for Warnings Report
  • New options in the Preferences dialog, you can now select to open both the built-in editor and the Delphi IDE, when double-clicking in a report
  • 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

New in Pascal Analyzer 9.12.0.0 (Aug 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 formatting issue for the Status Report
  • 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
  • Fixed problem with PALCMD and the limits file (/L switch)
  • 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
  • The menu that appears on right-click in the report tree now contains also a help menu item (F1)
  • Ctrl+Alt+R in the editor window opens the reference menu for the underlying identifier (same as right-click)
  • The menu when right-clicking on a tab in the editor window has been extended with more of the already available functions
  • Added illustrative glyphs to the popup reference menu in the editor
  • Fixed error excluding identifiers for reports
  • Slightly modified header text for STWA6
  • REDU8/REDU9 now exclude record fields

New in Pascal Analyzer 9.11.0.0 (Mar 27, 2023)

  • Fixed issues with compilation directives
  • New section in the Conventions Report, CONV23-"Class fields that do not start with 'F'"
  • PALCMD usage with /L for limit text file: now also reports report sections with less number of warnings than expected, and also writes results at end of status report file
  • 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.
  • Removed a potential AV for the Optimization Report
  • New section in the Identifiers Report, IDEN4-"Inlined variables and constants"
  • 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"

New in Pascal Analyzer 9.10.7.0 (Mar 3, 2023)

  • fixed issue resolving overloaded functions/procedures
  • improved UI for visually impaired users
  • adjusted for Delphi 11.3

New in Pascal Analyzer 9.10.6.0 (Dec 21, 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

New in Pascal Analyzer 9.10.5.0 (Nov 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

New in Pascal Analyzer 9.10.4.0 (Sep 9, 2022)

  • adjusted for Delphi 11.2

New in Pascal Analyzer 9.10.3.0 (Aug 24, 2022)

  • In PALCMD, if limit file is missing, now gives an error message instead of a stack trace
  • Improved handling of custom managed records
  • Fixed an edge case error for MEMO4
  • Fixed error with relative path and DPROJ-file
  • Fixed some memory issues

New in Pascal Analyzer 9.10.2.0 (Aug 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
  • Form files name format radio group was not updated properly in the project dialog
  • 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

New in Pascal Analyzer 9.10.1.0 (Jul 7, 2022)

  • Fixed a problem parsing properties
  • A new project must now be saved before running
  • MINOR BREAKING CHANGE: relative paths can be set for main file, output folder, search folders, excluded reports folder and excluded search folders. They are relative to the folder for the project file (PAP-file), not relative to the main file folder as introduced in the previous update.
  • Fixed a problem finding INC-files

New in Pascal Analyzer 9.10.0.0 (Jul 1, 2022)

  • Reworked handling of records and fields
  • Improved resolution of calls to overloaded functions
  • New section WARN63-"Mismatch parameter value (32/64-bits)"
  • Fixed an issue while jumping from report to built-in editor window
  • Relative paths (relative to the folder of the main file) can now be specified for search folders, excluded report folders, and excluded search folders

New in Pascal Analyzer 9.9.8.0 (Mar 9, 2022)

  • Fixed a problem parsing properties

New in Pascal Analyzer 9.9.7.0 (Mar 1, 2022)

  • Fixed a problem with INCA2-"Inconsistent case for different identifiers with same name"
  • 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

New in Pascal Analyzer 9.9.6.0 (Feb 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

New in Pascal Analyzer 9.9.5.0 (Jan 21, 2022)

  • Fixed an issue with class/record helpers
  • Fixed a cosmetic UI issue when double-clicking in report viewer
  • 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"

New in Pascal Analyzer 9.9.4.0 (Jan 2, 2022)

  • Fixed an issue resolving function calls

New in Pascal Analyzer 9.9.2.0 (Dec 15, 2021)

  • removed an exception that could occur while parsing $IF-expressions
  • REDU1 now not reports value parameter "Sender"

New in Pascal Analyzer 9.9.1.0 (Dec 6, 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

New in Pascal Analyzer 9.9.0.0 (Sep 21, 2021)

  • When right-clicking on a report tab page, the tab is now selected
  • Fixed broken find function in reports
  • New report section: "OPTI11-Managed local variable is inlined in loop"
  • Fixed problems when double-clicking in an HTML report
  • Removed some false positives from STWA2
  • Activated hint for source code tabsheet, now shows the complete file path
  • Disabled buttons showed incorrect glyphs
  • Added support for Delphi 11
  • Improved function that checks for new version

New in Pascal Analyzer 9.8.0.0 (Aug 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"
  • Improved performance for COWA1 report section
  • 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

New in Pascal Analyzer 9.7.7.0 (Jul 7, 2021)

  • Fixed some formatting errors for XML reports
  • Improved feedback while parsing expressions
  • Calls to Writeln procedure were not always handled correctly
  • Message pane in bottom center: output is now left-justified
  • Various preformance improvements and fixes for expression

New in Pascal Analyzer 9.7.6.0 (Feb 4, 2021)

  • new version of activation component

New in Pascal Analyzer 9.7.5.0 (Sep 30, 2020)

  • If number of structures to analyze was less than 10, could cause exception and no reports were written
  • Multireports could cause AVs

New in Pascal Analyzer 9.7.4.0 (Sep 18, 2020)

  • if number of expressions to analyze was less than 10, could cause exception and no reports were written
  • WARN47-"Duplicate lines" did not work correctly

New in Pascal Analyzer 9.7.3.0 (Sep 11, 2020)

  • Performance improvements
  • Fixed problem with WARN7 report section

New in Pascal Analyzer 9.7.2.0 (Aug 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 "/"

New in Pascal Analyzer 9.7.1.0 (Aug 12, 2020)

  • Lots of internal improvements
  • WARN52 report section lines were duplicated

New in Pascal Analyzer 9.7.0.0 (May 29, 2020)

  • Added support for Delphi 10.4 (Sydney)
  • New PALWIZ16.DLL for Delphi 10.4, for jumping from PAL to Delphi IDE
  • WARN56-"Parameter to FreeAndNil is not an object" always returns 0 warnings if compiler is Delphi 10.4 or later
  • Fixed issues with expressions
  • Focusing Delphi IDE did not work, after jumping to code
  • Default compiler target is Delphi 10.4 Win64
  • Fixed some issues with HTML reports
  • PALOFF (or the string choosen as suppression marker); enough now that the string exists somewhere in the comment after "//"

New in Pascal Analyzer 9.6.4.0 (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
  • Fixed problems with the report viewer
  • Removed false warning for CONV12-"Identifiers that have unsuitable names"
  • Fixed problem related to parsing "inherited"

New in Pascal Analyzer 9.6.3.0 (May 6, 2020)

  • Various fixes related to expressions

New in Pascal Analyzer 9.6.2.0 (Apr 15, 2020)

  • Changed to Tahoma 9pt in dialogs
  • Double-clicking in a report caused selection to move one line up
  • Fixed parser error for generics

New in Pascal Analyzer 9.6.1.0 (Feb 19, 2020)

  • Fixed error handling Unicode in viewer
  • Now also supports source files in UCS-2
  • Fixed problem parsing attributes in some cases
  • Modified fonts used in UI

New in Pascal Analyzer 9.6.0.0 (Dec 6, 2019)

  • Removed false warning in STWA3, when method was assigned to event handler
  • Fixed problem with Form Report
  • 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

New in Pascal Analyzer 9.5.0.0 (Aug 7, 2019)

  • Fxed error in Form Report, font names had bad values
  • Fixed issue when jumping to the editor window
  • QARN3-"Variables that are referenced but never set" did not handle non-local variables correctly
  • Nw Clone Report

New in Pascal Analyzer 9.4.5.0 (Mar 7, 2019)

  • Some constants for Delphi 10.3 were missing, affected scope of analysis
  • Speed improvements when analyzing structures
  • Fixed parser errors for inline variables

New in Pascal Analyzer 9.4.4.0 (Feb 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

New in Pascal Analyzer 9.4.3.0 (Jan 30, 2019)

  • fixed parser error for inline variables

New in Pascal Analyzer 9.4.2.0 (Jan 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

New in Pascal Analyzer 9.4.1 (Dec 17, 2018)

  • Fixed some issues for WARN62-"Possible orphan event handler"
  • Redesigned line/total counters in lower right corner

New in Pascal Analyzer 9.4.0 (Dec 6, 2018)

  • Support added for Delphi 10.3 Rio
  • Fixed AV in WARN62

New in Pascal Analyzer 9.3.1 (Nov 25, 2018)

  • WARN62 was analyzed even if DFM files were not loaded

New in Pascal Analyzer 9.3.0 (Nov 22, 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"

New in Pascal Analyzer 9.2.11 (Oct 30, 2018)

  • dialog to select folders is now much wider, so more of the path is visible
  • 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"
  • "Processing expression" message now not shown for command-line program
  • removed a false positive for WARN5-"Possible bad pointer", for an edge case

New in Pascal Analyzer 9.2.10 (Sep 26, 2018)

  • Removed:
  • False warning in WARN55 (Redeclares ancestor member)
  • False warning in MEMO4 (Unbalanced create/free)
  • 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
  • Parser error when property had name "Result"
  • Error in WARN47 (Duplicate lines)
  • False positives for WARN18 (Function result not set)
  • Problems related to analysis of expressions

New in Pascal Analyzer 9.2.9.0 (Aug 26, 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

New in Pascal Analyzer 9.2.8.0 (Aug 19, 2018)

  • Removed false warning for WARN56 in some cases
  • WARN47-"Duplicate lines" also included lines in comments
  • Fixed error parsing unit name reference

New in Pascal Analyzer 9.2.7.0 (Jul 31, 2018)

  • Fixed problem parsing typed constant
  • Fixed problem in STWA4 report section
  • Wizard did not work under pre-Vista versions
  • Fixed error in WARN61 report section
  • Fixed some problems resolving unit names
  • Number of hits in report tree miscalculated when suppressed locations existed
  • Fixed some small issues with status bar for editor window
  • 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

New in Pascal Analyzer 9.2.6.0 (Jun 6, 2018)

  • fixed open/save dialogs, so running under XP is possible
  • 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

New in Pascal Analyzer 9.2.5.0 (May 28, 2018)

  • fixed an issue regarding activation and license handling

New in Pascal Analyzer 9.2.4.0 (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

New in Pascal Analyzer 9.2.3.0 (May 11, 2018)

  • new switch /P in PALCMD.EXE
  • fixed issue with invalid typecast

New in Pascal Analyzer 9.2.2.0 (Mar 26, 2018)

  • fixed AV in STWA8 in some edge cases

New in Pascal Analyzer 9.2.1.0 (Mar 21, 2018)

  • fixed some problems with validation of licences
  • improved MEMO4 report

New in Pascal Analyzer 9.2.0.0 (Mar 15, 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"

New in Pascal Analyzer 9.1.0.0 (Feb 10, 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"

New in Pascal Analyzer 9.0.11.0 (Dec 6, 2017)

  • fixed error resolving generics
  • platform identifier in Delphi project file was not correct for iOSDevice64 targets

New in Pascal Analyzer 9.0.10.0 (Nov 26, 2017)

  • Fixed error with resolution of type alias declaration

New in Pascal Analyzer 9.0.8.0 (Oct 26, 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

New in Pascal Analyzer 9.0.7.0 (Oct 26, 2017)

  • All EXE and DLL files are now code signed
  • Error in MEMO4, did not report correctly

New in Pascal Analyzer 9.0.6 (Aug 29, 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

New in Pascal Analyzer 9.0.5 (Jul 25, 2017)

  • Fixed parser error for attribute in interface section
  • Open project dialog did not allow to open multiprojects
  • Sets default extension for file save dialog
  • As default "Excluded identifiers from these folders in reports" is set to "$(BDS)<+>" to avoid reporting on RTL/VCL source
  • Duplicate Identifiers Report is now a lot quicker; also speedied up the Inconsistent Case Report, and Events Report
  • Fixed issue with "with"-statements

New in Pascal Analyzer 9.0.4 (Jul 21, 2017)

  • Fixed some problems with expressions

New in Pascal Analyzer 9.0.3 (Jul 21, 2017)

  • Fixed some problems with report section STWA4 (Index Error)
  • Added feedback on status bar during expression processing

New in Pascal Analyzer 9.0.2 (Jul 21, 2017)

  • Fixed problems resolving typecasts
  • Fixed error, did not find .dpr file when loading .dproj file
  • Fixed problems with Third-party Report

New in Pascal Analyzer 8.3.15.0 (Mar 6, 2017)

  • fixed error in Literal Strings Report, could cause AV
  • fixed error parsing declaration with generics
  • Similarity Report is now 80% faster (for example from 100 secs to 20 secs)
  • 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

New in Pascal Analyzer 8.3.14.0 (Feb 27, 2017)

  • fixed file masks when selecting files, did not show all choices properly
  • fixed some problems with object in DFM-file missing type
  • dialog to select report sections: now shows how many sections are selected
  • 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)

New in Pascal Analyzer 8.3.13.0 (Jan 30, 2017)

  • fixed some problems with file dialogs (could get range error when selecting files for HTML output)
  • 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)

New in Pascal Analyzer 8.3.12.0 (Jan 22, 2017)

  • removed some duplicate references added to identifiers
  • uses Vista-style dialog to select folder for report root folder

New in Pascal Analyzer 8.3.11.0 (Jan 16, 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

New in Pascal Analyzer 8.3.10.0 (Jan 16, 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
  • fixed error with /I parameter for PALCMD.EXE, did not work
  • fixed parser problem with constant declared as an anonymous record type
  • fixed parser problem resolving unit names

New in Pascal Analyzer 8.3.9.0 (Jan 16, 2017)

  • WARN37 (Empty subprogram parameter list) is now not selected as default
  • new parameter /I for PALCMD, gives path to PAL.INI
  • fixed problem with WARN46 (Local variables that are set but not later used) causing false positives under some conditions
  • printing did not function properly
  • fixed problem resolving unit names
  • WARN9, WARN10 (Var parameters that are used but never set) do not list parameters for methods that are overridden
  • now uses Vista-style dialogs for selection of files
  • fixed error for units with many overloads
  • 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 "()"

New in Pascal Analyzer 8.3.8.0 (Nov 29, 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

New in Pascal Analyzer 8.3.7.0 (Nov 29, 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

New in Pascal Analyzer 8.3.6.0 (Nov 29, 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
  • WARN40 and WARN42 did not update their hit counters

New in Pascal Analyzer 8.3.5.0 (Nov 29, 2016)

  • fixed problem in WARN8

New in Pascal Analyzer 8.3.4.0 (Nov 29, 2016)

  • fixed problem with Uses Report, writing file to wrong location

New in Pascal Analyzer 8.3.3.0 (Sep 1, 2016)

  • fixed problems with generics
  • fixed problem: when double-clicking in viewer, the opened editor window concealed the selected line in the viewer, and another line was selected
  • 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")
  • fixed tab redraw issue for editor tab pages
  • editor tab page closed without confirmation of saving when using the "x"
  • 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)

New in Pascal Analyzer 8.3.2.0 (Sep 1, 2016)

  • fixed problem with type declaration in class

New in Pascal Analyzer 8.3.1.0 (Sep 1, 2016)

  • fixed problem with sorting of references
  • fixed parsing problems with generics
  • internal structure could overflow in some cases

New in Pascal Analyzer 8.3.0.0 (Sep 1, 2016)

  • "WARN48" was written as "WARN47" in report list
  • 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
  • PALCMD now also writes error log to AppData folder

New in Pascal Analyzer 8.2.8.0 (Sep 1, 2016)

  • error log will be created in "C:UsersxxxAppDataRoamingPeganzaPascal Analyzer" for unhandled exceptions

New in Pascal Analyzer 8.2.7.0 (Sep 1, 2016)

  • fixed problem resolving overloaded subprograms

New in Pascal Analyzer 8.2.6.0 (Sep 1, 2016)

  • lines starting with "(*" or "{" are not considered when reporting duplicate lines
  • fixed error with pointer dereference
  • Status Report now also displays selected configuration in DPROJ file (if any found)
  • improved resolving of generics declarations
  • fixed error for some COWA report sections, that could result in exceptions
  • fixed problems with "with"-statements, resolving identifiers
  • fixed problem resolving overloaded subprograms
  • PALOFF can now be used to suppress warnings for units in uses lists in Uses Report

New in Pascal Analyzer 8.2.5.0 (Dec 2, 2015)

  • REDU1 now also reports unused identifiers declared in subprogs that are not used
  • fixed issue parsing generics
  • fixed issue with unit scope
  • fixed issue with calls to Inc, Dec

New in Pascal Analyzer 8.2.4.0 (Nov 16, 2015)

  • fixed issue with kind of type set erroneously in some rare cases
  • "class var" now not reported by CONV5 if in public section
  • fixed parser problems with generics and anonymous functions
  • WARN50 (bad identifier names) is not default now, it is covered by CONV12 which does the same and more
  • WARN50 and CONV12 (bad names), now exclude "Name" and "Index"
  • fixed error with identifier names

New in Pascal Analyzer 8.2.3.0 (Oct 19, 2015)

  • Convention Report CONV12 now checks all types of identifiers
  • improved parser code for handling anonymous funtions
  • improved handling of references when passed as var-parameters
  • section masks for texts in tree did not always display properly
  • removed some sections in Reduction Report from those selected as default

New in Pascal Analyzer 8.2.2.0 (Oct 6, 2015)

  • dialogs did not scale well for some resolutions
  • internal list of OSX compiler versions was wrong

New in Pascal Analyzer 8.2.1.0 (Oct 6, 2015)

  • fixed some issues writing PAL.INI settings file

New in Pascal Analyzer 8.2.0.0 (Oct 6, 2015)

  • fixed edge case error parsing property declaration
  • section WARN49, now excludes Create from System unit, and overriding methods
  • removed some unnecessary warnings in WARN47, duplicate lines
  • fixed problem parsing attributes
  • special handling of parameters with pointer types, with name "Dest", or "Target", considered var-params, because underlying memory buffer is set (e.g. StrCopy)
  • wizard now uses combobox instead of radiogroup to select compiler
  • fixed bug in wizard code, checkbox to include DFM-files was not working as expected
  • fixed problems with "ampersanded" identifiers
  • duplicate lines (WARN47) now excludes also multiple "repeat" lines (lines with only the keyword "repeat")
  • added support for Delphi 10 Seattle

New in Pascal Analyzer 8.1.6.0 (Aug 26, 2015)

  • Reduction Report, "fields used in single method" was not selected as default
  • Optimization Report, "local subprogs" was not selected as default
  • Reduction Report, "functions/procedures only called once" now excludes exported and external subprogs
  • fixed error causing AV when investigating class structures

New in Pascal Analyzer 8.1.5.0 (Aug 26, 2015)

  • fixed error in StrongWarnings Report, local variable was uninitialized, could cause AV
  • fixed error in Warnings Report, "Var params not set"
  • fixed some minor issues in the help system
  • fixed issue resolving local forward declarations
  • Similarity Report now includes identifiers in the same unit (earlier those in overlapping scope)
  • timings for reports were incorrect if midnight had been passed during parsing and report generations
  • fixed Warnings Report, "abstract methods not overridden", supports double-clicking
  • improved Strong Warnings Report, "property access in read/write" (STWA1)
  • improved Warnings Report, "bigger to smaller" (WARN52)
  • improved Warnings Report, "local set not later used" (WARN46)
  • improved Warnings Report, "recursive subprogs" (WARN19)
  • improved Strong Warnings Report, "subprog calls itself unconditionally" (STWA3)
  • improved Control Warnings Report, "missing OnClick" (COWA6)
  • when selecting report sections in the dialog, now displays also prefix like "WARN1" etc.
  • fixed error evaluating RTLVersion
  • improved Reduction Report, "fields only used in single method" (REDU17)
  • more detailed description of field, "Class Field" or "Record Field" in reports
  • improved Convention Report "bad name method pointer" (CONV7)
  • fixed some issues resolving local variables/class members
  • improved Warnings Report, "func called as proc" (WARN44)
  • fixed error when checking if result set in function
  • fixed error resolving variable of procedural type
  • fixed issues resolving property overrides
  • environment variables can now also be used for the setting "Report root folder" on the General tab page for the project settings. For example, "$(PALREPORTROOT)" which can resolve to different directories on different computers.
  • option "All files" on the General tab page of project settings, now displays as "All files (recommended)"

New in Pascal Analyzer 8.1.4.0 (Aug 26, 2015)

  • fixed problem resolving calls to overloaded subprograms
  • report tree font was forced to "fixed", now any font can be used
  • removed unnecessary spaces in XML format
  • more complete location string in cross-reference reports
  • fixed error with overloaded virtual method, when overload directive was not repeated for the overloading method

New in Pascal Analyzer 8.1.3.0 (Aug 26, 2015)

  • fixed problems parsing generics

New in Pascal Analyzer 8.1.2.0 (Aug 26, 2015)

  • fixed problems parsing generics
  • fixed problem for operator with name "In"
  • improved handling of "scoped enums"

New in Pascal Analyzer 8.1.1.0 (Aug 26, 2015)

  • fixed error with "&End" identifier
  • XML reports now also write BOM to start of file
  • fixed some issues with predefined identifiers from System unit

New in Pascal Analyzer 8.1.0.0 (Aug 26, 2015)

  • fixed error with "&End" identifier
  • fixed an issue with unit scopes
  • cross-ref reports now do not list identifiers that are just declared/implemented but do not have references
  • lots of improvements in the parser, drastically impreoved performance and accuracy
  • fixed edge case error parsing DFM files
  • fixed false warnings for bad object creation in Warnings Report, after "raise"
  • when selecting folder, last selected folder is remembered
  • when selecting folder, automatically added to list when selecting excluded folders for reporting
  • fixed bad performance for "Bigger to smaller" section in Warnings Report
  • removed some false warnings for unused identifiers and fields only used in single method (Code Reduction Report)
  • fixed error resolving environment variables for XE7
  • added support for all targets in Delphi XE8
  • ned PALWIZ11.DLL for IDE interaction with Delphi XE8
  • removee false positives for "Constructors/destructors without call to inherited" in Warnings Report
  • subprogs only called once (Code Reduction Report), now excludes event handlers
  • WEAKINTFREF was not defined for relevant targets
  • "Funcs only called once", now skips functions that are passed as parameters
  • Case Report, "Mismatch unit Filenames", now is not case-sensitive
  • now considers rsvars.bat
  • improved handling of ambiguous unit references (Strong Warnings Report)
  • Warnings Report, "Constructors/destructors without call to inherited" does not report constructors that do not call inherited, if they descend directly from TObject
  • Warnings Report, "Var params that are read, but not set" now skips subprogs that probably are event handlers
  • Code Reduction Report, variables that are set twice without reading in-between now excludes locations where passed as var parameters

New in Pascal Analyzer 8.0.2.0 (Aug 26, 2015)

  • fixed some problems with XML and UsesReport
  • fixed issues with parsing when "Main file and referenced" selected
  • fixed a problem parsing generics declaration
  • fixed a problem related to variable name prefixed with ampersand
  • fixed wrong shortcut for PAL32.EXE in Start Menu, when only 32-bit installed
  • fixed coloring of tree items
  • Ctrl+Alt+U in editor did not work correctly

New in Pascal Analyzer 8.0.1.0 (Aug 26, 2015)

  • fixed error related to resourcestring declaration
  • fixed error due to forward class declaration
  • improved back/forward actions for browser pages
  • fixed error parsing old object type
  • fixed some issues with XML format in reports
  • fixed wrong shortcut for PAL32.EXE in Start Menu, when only 32-bit installed

New in Pascal Analyzer 8.0.0.0 (Aug 26, 2015)

  • new 64-bits version, 32-bits versions still available
  • improved Unicode support
  • built-in advanced editor, opens source file when double-clicking in reports
  • optionally backup editor files to hidden history folder (like in Delphi IDE)
  • search directories in Status Report are now sorted
  • commandline for PALCMD: parameter for analyzed file does not need to be a complete path, if just a file name, PALCMD will use the current working directory. If the current directory is not specified, uses the same directory as where the PALCMD.EXE is located
  • new column in Modules Report, displays encoding name for source code file
  • CompilerVersion, RTLVersion conditional directives are now handled
  • much improved ability to find code location when double-clicking in reports
  • new section in Code Reduction Report, "Fields only used in single method"
  • new section in Optimization Report, "Local subprogs"
  • new section in Warnings Report, "Bigger to smaller"
  • new options for editor added to Preferences dialog, new tab page
  • reports now available for viewing as soon as they are ready, node in the tree is enabled and clickable
  • new option for enabling reports for viewing as soon as they are ready
  • new option to show reports in tab pages
  • new setting for projects: "Description"
  • new columns in Modules Report, for encoding, and if initialization/finalization sections exist
  • fields in records are now tracked as individual variables
  • Status Report now also lists files that were searched for, but not found
  • much improved parser speed
  • improved internal data structures, better memory handling
  • improved speed a lot for Conventions Report
  • double-click in Status Report opens file in editor window, or opens Explorer for the clicked folder name
  • new option on Parser tab page "Parse implementations for non-reported units", if checked uses pre-PAL8.x behaviour to also parse implementation sections for units that are not reported. In PAL8 those implementations are as default skipped, unless this checkbox is selected. Results for reports should be the same, except for the Uses Report, which will be more complete when this option is selected.
  • non-reported locations are not included as referenced locations in the cross-reference reports
  • to get more accurate results, Inc(X) and Dec(X) now render both a "read" and a "set" (compare "X := X+1")
  • improved resolving of overloaded methods for nested calls
  • fixed problem resolving unit references when unit scopes were used
  • added navigation features to editor
  • added file watcher for editor, if file changed outside PAL, optionally asks to reload
  • mouse wheel changes font size in editor (and also in report viewer as before)
  • mouse wheel changes font size in tree
  • special start page (optional) points to blog page at Peganza web site
  • the Similarity Report now uses the RTL Soundex function in StrUtils unit
  • report text files are saved as UTF-8
  • PAL.INI configuration file is now saved in UTF-8, if needed. When saved in UTF-8 is not compatible with PAL 7.x or earlier

New in Pascal Analyzer 7.3.0.0 (Sep 29, 2014)

  • added support for Delphi XE7

New in Pascal Analyzer 7.2.1.0 (Sep 5, 2014)

  • fixed namespace issue

New in Pascal Analyzer 7.1.4.0 (Sep 1, 2014)

  • Status Report now shows unit scopes used by the project, previously only those set in project options
  • new section in Uses Report, "All modules"

New in Pascal Analyzer 7.1.3.0 (Sep 1, 2014)

  • registry key for Delphi XE6 were not read

New in Pascal Analyzer 7.1.2.0 (Aug 13, 2014)

  • Warnings Report, identifiers with same name as predefined, now does not include predefined parameters or fields
  • removed a false warning in Warnings Report, section "Variables set but not read"
  • removed some unnecessary warnings in Code Reduction Report, section "Local indentifiers that are set and ref once"
  • removed an unnecessary warning in Reduction Report, section "Identifiers not used"
  • fixed multi-threading problem in PALCMD

New in Pascal Analyzer 7.1.1.0 (Jul 9, 2014)

  • fixed error parsing code for Delphi XE2 Win32

New in Pascal Analyzer 7.1.0.0 (Jul 7, 2014)

  • added support for Delphi XE6
  • fixed some problems resolving type identifiers
  • fixed some issues with conditional defines

New in Pascal Analyzer 7.0.2.0 (Jun 3, 2014)

  • last section for Strong Warnings Report was not displayed in tree
  • fixed error resolving generics usage
  • improved resolving of calls to overloaded functions
  • fixed error suppressing lines with "PALOFF"
  • Searched Strings Report now displays file names instead of unit names
  • fixed problem resolving call to overloaded procedure with nil parameter
  • fixed parser problem resolving call to procedure in if-bransch
  • fixed error in Memory Report for rare cases
  • fixed problem with comments after "end." in source file
  • fixed problem with "library" directive
  • fixed display error for Duplicate Lines section in Warnings Report

New in Pascal Analyzer 7.0.1.0 (Feb 15, 2014)

  • wizard dialog did not update text fields with selected search directories
  • default compiler in PALCMD was set to Delphi XE4 Win32, changed to Delphi XE5 Win32
  • fixed error in PALCMD, compiler target in project settings was not used
  • fixed problems reading Delphi project files in some cases
  • fixed problems resolving expressions with "as" keyword
  • selected search directories are now used in the order they are entered, and also shown in that order in Status Report
  • improvements when searching for source files
  • fixed error parsing conditional directive spanning several lines
  • old-style object did not recognize "var", "const" or "type" in declaration
  • fixed error when reading global project todo-file
  • speed improvements in the parser

New in Pascal Analyzer 7.0.0.0 (Nov 28, 2013)

  • support for Delphi XE5
  • CHM help files can be created, together with HTML output, adding full-text search
  • Ctrl+MouseWheel increases/decreases font size in source viewer and in text reports
  • level of indentation (1-4 spaces), new option for Call Tree, Reverse Call Tree, and Exception reports
  • ExcludedFiles settings is now as default for new projects just System.pas (not Windows.pas any more)
  • Status Report also lists all loaded files
  • Todo Report now sorted after module, priority, category (in that order)
  • Call Tree Report, Reverse Call Tree Report, now sorts branches by function or unit depending on sort mode setting
  • much improved handling of identifiers from System.pas, and built-in declarations
  • new section in Third Party Report: "Third-party class and interface types directly referenced"
  • improved handling of calls to functions that are safe to call without parameter being initialized, like SizeOf()
  • new NextGen Readiness Report, measures how well prepared your code is for the new NextGen compiler
  • new status pane in main window displays current compiler target
  • Totals Report and Modules Total Report now also displays UnicodeString and WideString metrics
  • Status Report now also displays the number of different items
  • new section in Warnings Report: "Redeclared identifiers from System unit"
  • more accurate type determination for numeric constants
  • improved parser speed
  • new section in Warnings Report: "Identifier with same name as keyword/directive"
  • new section in Strong Warnings Report: "Subprogram calls itself unconditionally"
  • new section in Literal Strings and Numbers Report: Literal numbers in code

New in Pascal Analyzer 6.3.6.0 (Nov 26, 2013)

  • fixed memory leak in parser code
  • improved handling of multiple monitors
  • improved Warnings Report, "Variables that are set but not read" did not detect all situations
  • improved handling of exceptions during report build

New in Pascal Analyzer 6.3.5.0 (Nov 13, 2013)

  • fixed error parsing asm statement in some cases
  • fixed error when conditional expression spanned over more than one line
  • line numbers shown for syntax error are now absolute (not adjusted for included files)
  • better error message when file in uses statement has unsupported format (USC2 and others)
  • improved handling of environment variables
  • fixed error parsing helper class
  • fixed error parsing "unsafe" directive
  • wrong value for when unicode identifiers were first allowed, was set to D2007, but is D2005
  • improved resolving references to identifiers with same name
  • fixed error parsing property declaration
  • unit scopes were not reported in Status Report for targets higher than XE2
  • improved handling of function results
  • conditional directive "EXTERNALLINKER" was not registered
  • when reading older Delphi project files, each setting was truncated if having more than 2048 characters
  • call to "Release" was registered for class object, even if field with the same name existed
  • created misformed XML for Uses Report in some situations
  • predefined identifiers for XE4 were not loaded properly

New in Pascal Analyzer 6.3.4.0 (Sep 23, 2013)

  • fixed error in Memory Report, section about freed objects being referenced later

New in Pascal Analyzer 6.3.3.0 (Sep 18, 2013)

  • removed some unnecessary warnings for parameters to event handlers
  • fixed errors resolving identifiers
  • fixed errors with predefined conditionals
  • closing the source viewer window did not unlock the file
  • fixed error resolving identifiers in string concatenation expressions
  • improved handling of local variables
  • fixed problem resolving class helper property
  • Modules Report, section "Missing files" was shown in tree, when it should be hidden
  • fixed error with event handlers being reported as not used

New in Pascal Analyzer 6.3.2.0 (Jul 10, 2013)

  • Warnings Report, "Function result not set" could cause exception

New in Pascal Analyzer 6.3.1.0 (Jun 21, 2013)

  • Warnings Report, "Local variables that are referenced before they are set", did not consider "out" parameters in a correct way
  • Warnings Report, "Duplicate lines", did not report lines with different case within string literals, so for example WriteLn('ä')," and WriteLn('Ä');" are now correctly considered different lines
  • Warnings Report, "Non-public constructor/destructor", now does not include class constructors/destructors (in fact these should be private, as they should never be directly called)
  • Warnings Report, "Constructors/destructors without calls to inherited", now does not include class constructors/destructors
  • Warnings Report, "Function result not set", fixed problem with "raise" giving false warnings
  • directive "winapi" was not recognized
  • creating a new project could lose settings from current project if "Cancel" selected
  • fixed problem resolving nested types
  • fixed problem resolving generic type declaration
  • when property is set, the associated "write"-object is also registered as referenced
  • when property has "write"-object, that object is considered "ref" at that location, was "set"
  • references to Low(), High() also considered "safe", like SizeOf()

New in Pascal Analyzer 6.3.0.0 (Jun 5, 2013)

  • fixed issue in Code Reduction Report, "Identifiers never used" for recursive functions
  • fixed error parsing property with "default" directive
  • NATIVECODE was not predefined for some compiler targets
  • support of Delphi XE4 added

New in Pascal Analyzer 6.2.7.0 (Apr 17, 2013)

  • Warnings Report, "Interfaces passed..", also included interfaced with out/var parameters
  • Warnings Report, "Var params read not set", also included parameters from event handlers
  • implementation line numbers did not work for parameters
  • SizeOf() was not correctly handled
  • WarningsReport, "Function not set", could give false warnings in some special case
  • improved handling of pointers passed as parameters
  • Code Reduction Report, "Methods only called once from other method of the same class", now does not report methods that call themselves recursively
  • if record field set, the record variable is also marked as set (earlier just referenced)
  • Warnings Report, "Function Result not set", now does not report functions that return long strings
  • fixed problem identifying property in some cases

New in Pascal Analyzer 6.2.6.0 (Mar 27, 2013)

  • fixed error resolving identifier in expression
  • fixed error with fields in variant part of packed record
  • fixed error resolving typed constant

New in Pascal Analyzer 6.2.5.0 (Mar 5, 2013)

  • fixed error with namespaces

New in Pascal Analyzer 6.2.4.0 (Feb 22, 2013)

  • fixed error with class helper code

New in Pascal Analyzer 6.2.3.0 (Feb 20, 2013)

  • fixed problems resolving calls to overloaded functions
  • dangerous Exit now not reported if in try-structure
  • fixed error resolving reference to recordfield
  • fixed error resolving identifier after typecast
  • message for syntax error now has more information

New in Pascal Analyzer 6.2.2.0 (Dec 7, 2012)

  • fixed error with "read" directive for properties
  • procedure "Register" is excluded for report with warnings for bad identifier names
  • improved Events Report, event handlers starting with "After" or "Before" are now also examined
  • fixed problems with "class property" declarations

New in Pascal Analyzer 6.2.1.0 (Nov 1, 2012)

  • new XE3 compiler targets were not available in wizard dialog
  • fixed parser error handling record types
  • fixed parser error resolving overloaded methods with generics

New in Pascal Analyzer 6.2.0.0 (Oct 19, 2012)

  • added support for Delphi XE3

New in Pascal Analyzer 6.1.6.0 (Oct 19, 2012)

  • fixed error in Warnings Report, "Local identifiers set but not later read", gave false positives
  • fixed parser problem for pointer types
  • fixed problem with multireport that could cause AV

New in Pascal Analyzer 6.1.5.0 (Jul 23, 2012)

  • fixed parser problem with constant declaration
  • fixed problems in Warnings Report, section "Local variables set but not later read"
  • removed some unnecessary warnings for duplicate lines

New in Pascal Analyzer 6.1.4.0 (Jun 20, 2012)

  • Fixed issue with HTML format
  • Fixed problem in Code Reduction Report, local variables set many times without referencing in-between
  • Fixed cosmetic error in Status Report
  • Fixed problems with predefined identifiers
  • Fixed error in Warnings Report, "Function result not set", gave false positives when "else" followed by statement on the same line, in some cases

New in Pascal Analyzer 6.1.3 (Jun 20, 2012)

  • Removed false positives for buttons with missing OnClick-event handlers, but where ModalResult was set in some cases
  • Fixed some code parsing issues
  • Fixed error reporting loop-variables read after loop

New in Pascal Analyzer 6.1.2 (Jun 20, 2012)

  • Removed false positives for section "Function Result not set" in some cases
  • Removed false positives for section "Property Access" in some cases
  • Fixed error resolving implementation of overloaded methods
  • Fixed error resolving identifiers in some cases

New in Pascal Analyzer 6.1.1 (Jun 20, 2012)

  • Fixed error parsing attributes with nestled "["
  • Fixed error resolving identifiers in some rare cases
  • Warnings Report, Duplicate Lines, now skips lines starting with "//"
  • Warnings Report, Duplicate Lines, jump to location in source did not work
  • If "PALOFF" used for parent type like record or class, also child elements will be suppressed
  • Fixed problem resolving pointer type declarations in some cases
  • Fixed error resolving assignment of identifiers om some cases
  • Fixed error parsing case-structures in some cases
  • New PALWiZ5.DLL for Delphi XE2 (needed for users that do not have Delphi XE)
  • Fixed error parsing set type in record fields

New in Pascal Analyzer 6.1.0 (Jun 20, 2012)

  • Added support for Delphi XE2, all compiler targets
  • Fixed error with Namespaces setting
  • Fixed error with the "align" directive in Delphi XE2
  • Improved message for parser errors in some situations
  • Fixed error with ToDo report setting in project template
  • Fixed error parsing property read declaration in some situations
  • Fixed error recognizing function pointers in typed constants
  • Fixed error parsing UTF-8 source files starting with blank line
  • Fixed error recognizing array elements
  • Fixed error parsing type declarations containing constants
  • Fixed error parsing type declarations with arithmetic expressions
  • Fixed error parsing var declaration with generic type
  • Fixed error parsing property declaration with generic type
  • Fixed error parsing $IF-expressions in some cases

New in Pascal Analyzer 6.0.0 (Jun 20, 2012)

  • New Help Report
  • New Searched Strings Report
  • new Map File Report
  • Improvements in the Third-Party Report
  • New sections and improvements in the Memory Report
  • New sections and improvements in the Warnings Report
  • Improvements in the Complexity Report
  • Improvements in the Literal Strings Report
  • Improvements for multi-projects
  • Improvements for PALCMD.EXE

New in Pascal Analyzer 5.1.9 (Jun 20, 2012)

  • Fixed error when displaying results for multi-reports

New in Pascal Analyzer 5.1.8 (Jun 20, 2012)

  • Fixed output format error in Third-Party Report
  • Environment variables were not resolved for excluded folders in multireports
  • Directive "experimental" was not always recognized
  • Solved problem with Reverse Call Report, where some branches were not always included

New in Pascal Analyzer 5.1.7 (Jun 20, 2012)

  • Prevented stack overflow if bad include directive
  • Fixed minor parser error

New in Pascal Analyzer 5.1.6 (Jun 20, 2012)

  • Improved handling of exception types in Convention Report
  • Removed false positives with strings in Reduction Report, "Unneeded boolean comparisons"
  • PAL.EXE now supports address spaces larger than 2GB (the IMAGE_FILE_LARGE_ADDRESS_AWARE flag is set in the EXE header)
  • PAL.EXE does not any more loads PALWIZ.DLL at startup

New in Pascal Analyzer 4.6.3.0 (Apr 13, 2010)

  • if XML reports were written to a single file, the surrounding tag was not written correctly
  • links to reports in HTML could be misformed in some cases
  • better error handling for multi reports when main file was not found
  • OS envvars also supported, not only those added in Delphi IDE
  • environment variable can be used for main path
  • removed some false positives for "Danger Raise" in Warnings Report
  • fixed error when an object could be registrered as created instead of set, leading to errors in Cross Reference and Memory Reports
  • fixed bad formatting for some numeric values in Complexity Report rating lists
  • improved parsing of $IF-expressions
  • Reduction Report, unused local variable section: paramater belonging to a subprogram that is not used, is now not reported (as it says in the docs, but was not so)
  • Control Warnings Report, now only reports buttons/menuitems with missing OnClick, if ModalResult is not set
  • Reduction Report, "Boolean assignment can be shortened" now only reports simple assignments (not when there are several statements in each branch)

New in Pascal Analyzer 4.6.2.0 (Nov 19, 2009)

  • bad counter value for previous analysis for a few reports
  • bad file name for index HTML file

New in Pascal Analyzer 4.6.1.0 (Oct 13, 2009)

  • misformed filename suggested when saving new projects
  • fixed error parsing anonymous methods