History
Pascal Analyzer - Revision History
This is a list of major changes (error fixes and enhancements) for
Pascal Analyzer.
Version 4.4.2 July 4, 2008
- problems with selected sections for some form reports
Version 4.4.1 March 14, 2008
- line number when calling external application was off by one
Version 4.4.0 February 19, 2008
- fixed minor error in Find functionality
- new section in Memory Report: "'Local objects that are created more than once without being freed in-between"
- added possibility to open source code file in external application,
- Uses
Report also reports units with initialization sections that have empty interface
part
Version 4.3.2 November 23, 2007
- removed some false warnings in the Memory Report
- fixed problems with extracting category and owner from todo item in the To-Do Report
Version 4.3.1 November 5, 2007
- directive VER190 was not set for compiler Delphi 2007 .NET
Version 4.3.0 November 2, 2007
- added support for Delphi 2007 .NET
Version 4.2.5 October 13, 2007
- fixed a problem with PALCMD.EXE, when running PAP files
Version 4.2.4 September 25, 2007
- fixed a problem with array of const declarations
Version 4.2.3 September 24, 2007
- fixed a problem with report sections "Local identifiers that 'shadow'..." in the Convention Report
- fixed problems with record helpers
Version 4.2.2 August 11, 2007
- fixed a problem with report sections "Local identifiers that 'shadow'..." in the Convention Report
Version 4.2.1 July 11, 2007
- fixed problem with record operators
Version 4.2.0 July 10, 2007
- overload handling has been improved a lot, PAL is now much better at resolving calls to overloaded methods
Version 4.1.2 June 24, 2007
- a couple of controls were misaligned in the project options pages
Version 4.1.1 June 20, 2007
- wizard options did not include Delphi 2007
- "class var" and "class property" is now allowed for Delphi 2005
Version 4.1.0 May 17, 2007
- fixed some problems with identifiers named "Name", mix-up with directive name
- in Optimization Report, section "Missing const for unmodified string parameter", now does not report parameters in subprograms marked with the "override" directive, because these subprograms cannot change their parameter lists
- added support for Delphi 2007 (Win32) from CodeGear
- default compiler is now Delphi 2007 (Win32)
- conditional directive "_PEGANZA_" is now always automatically defined
- Status Report now shows user environment variables translated to full paths, for searched folders and similar items
- now reads/writes PAL.INI from folder under "Documents and Settings"
- project files are suggested to be read/written from a folder under "My Documents"
- improved help system, now uses HTMLHelp
Version 4.0.2 February 24, 2007
- increased maximum stack size, needed for very deeply nested unit dependencies
- fixed problem with forward declared interfaces
- "Bad class visibility order" in "Convention Report", is not reported for form classes (these always start with public/published section)
- hit counters for some sections were not initialized correctly
- fixed error in search function
Version 4.0.1 January 20, 2007
- fixed problem with Inconsistent Case Report when reporting with-blocks, false positives could be created
- fixed error generating tree of reports and sections, missing section for Memory Report
- hit counts were written for some sections that do not use them
- Todo Report had initially no selected sections
- fixed error calculating hits totals for reports
Version 4.0.0 October 28, 2006
- major new version, see the What's New page
- wrong number of table columns for HTML table in Forms Report
- bad HTML formatting for Class Hierarchy Report
- jump to sections in Events Report did not work in HTML format
- project files are now saved much faster
- Complexity Report, some sections not generated
- format options, checkbox "One report file" not possible to check always
- error parsing "property Name", misinterpreted "Name" as directive
- form report, default form position changed in D8 and later from poDesigned to poDefaultPosOnly
- double-clicking in the Uses Report opens the relevant source file in the viewer
- fixed error with forward references
- fixed some problems resolving dereferenced pointers
- Third-Party Report, "Third-party identifiers directly referenced" now always includes all found identifiers, even if they are in folders excluded for reporting (otherwise you would have to include these folders, giving much bigger reports, with many irrelevant listings)
- fixed error when parsing property declarations, for code like "property Left : integer read FMyRec.Left write FMyRec.Left", the write-clause was not evaluated correctly
- option "One file for each report" also possible now, even if "Create Subfolder" is not checked
- fixed error handling "final" directive
- environment variables in paths etc were not translated in all cases
- "interrupt" keyword was not allowed in an interface section
- Options in .bdsproj files were not read for versions later than Delphi 8
- Support for "strict" directive was incomplete
- Error when parsing record types declared in "var" blocks
- changed caption to "$DEFINE/UNDEF used but no matching $IFDEF/$IFNDEF in code" for section in Conditional Symbols report
- Missing Property Report, now does not warn for missing TButton.OnClick or TBitButton.OnClick if ModalResult <> mrNone
- "class var" and "var" in class declarations were not accepted for Delphi 2005 and Delphi 2006 (Win32 personalities)
- problem with exception solved for some sections in the Warnings Report
- class functions were not allowed for old-style objects
- "class sealed" and "class abstract" were not allowed for Delphi 2005 and Delphi 2006 (Win32 personalities)
- class properties were not allowed for Delphi 2006 (Win32)
- "strict" was not allowed for Delphi 2005 (Win32)
- fixed a problem with compilation directives
- error in Warnings Report, "Destructors without override directive", warning was issued for reintroduced destructors
- support added for Delphi 2006 (Win32 and .NET)fixed problem parsing property declarations
- fixed error in Warnings Report, section for dangerous raise statements
- list of dangerous raise/exit commands were not rinsed from unreported locations in the Warnings Report
- now does not report "dangerous raise" if the raise command is just before the end of the sub (requires the "raise" keyword to be on the line just above the "end")
- fixed error for multireport, could get AV in some situations
- application splash screen is removed
- fixed problem parsing property declarations
- fixed error finding include files when path started with "\"
- fixed error generating XML for Call Index Report
- fixed error generating XML for Optimization Report
- max length for strings read from INI file was 4096 chars, changed to 32768
- for "library" module, now does not add warning for empty begin-end block (because is mandatory)
- fixed error in Third-Party Report, identifiers from excluded folders were listed
- fixed some problems handling excluded folders
- fixed parsing error with "external" keyword
- improved handling of virtual and abstract method calls
- fixed error in Warnings Report, sections always written even when deselected
- improved speed building Call Reports
- fixed error resolving identifiers in "absolute" declarations
- Memory Report now ignores destroy and close events for data modules
- fixed error in Uses Report, check if main file was project file sometimes returned wrong result
- fixed problem identifying typed constants
- fixed problem jumping to code line in include files
- fixed problem handling include file directives which contain comments
- fixed problem handling external directive with file reference
- fixed error, "object" keyword was not allowed for Delphi 2005 Win32
- fixed error handling new "inline" directive
- fixed error handling files saved in UTF8-format
- adds support for Delphi 2005 (both Win32 and .NET personalities)
- new section "Abstract methods not overridden" in Warnings Report (for existing projects, you will have to explicitly check this report section to activate it)
- new section "$DEFINE/IFDEF used but no matching $IFDEF/$IFNDEF in code" in Conditional Symbols Report (for existing projects, you will have to explicitly check this report section to activate it)
- in Status Report, now also writes the time needed to generate the reports (excluding the Status Report itself)
- fixed error in treeview list, same text for both "Tab Order Report" sections
- fixed error with browsing and library paths
- doubleclicking on include file did not always open it in the source viewer window
- XML not generated correctly for Form Report
- section "Created in try" in Memory Report generated obviously erronous results
- fixed memory leak
- fixed error in PALCMD causing AV at end of run
- fixed error recognizing typed constants
- fixed error with memory manager
- major new version, see the What's New page
- help find was not located correctly in some situations
- code like "const X : integer = $;" was not allowed by the parser
- parsing DPK files did not follow units in uses list
- error parsing assembler code when "@" used as label
- better error message for syntax errors, now includes module name
- error, (*$I inc*) was not resolved as inc.pas
- Warnings Report, section "ambiguous with" included identifiers from excluded folders
- error registering reference for numeric label
- error in Inconsistent Case report for initialized global variables
- include files were not always found when doubleclick on a report line
- improved XML reporting
- Bindings report could include identifiers from excluded folders
- error could cause broken XML file for Duplicate Identifiers Report
- Identifiers Report listed unit identifiers from excluded folders
- the range dialog for copying to the clipboard now only shows up if all reports are written to one single file
- fixed error locating files
- fixed registration error in version 2.1.7
- fixed problem related to records with variant sections
- fixed problem resolving relative paths in include directives
- numerical labels (like "30:") were not recognized
- fixed error in Prefix Reportm, false positive warnings could be issued
- fixed error in Code Reduction Report, false warnings for strings being initialized to zero could be given
- fixed problem with large fonts in options dialog
- fixed problem resolving relative paths in include directives
- fixed error printing text reports. Even if all reports selected only the current one was printed.
- fixed a problem with displaying labels in Options dialog under Windows XP
- new option "Allow multibyte characters" in the Options dialog (parser tab page), default value is false. If this option is selected, multibyte characters like in Shift-JS (Japanese) are allowed in comments
- fixed some resizing problems in the main form
- fixed error in handling exports statement
- fixed error with Shift-JS (Japanese characters) in comments
- fixed error when printing selected text
- fixed error with multi-byte characters in comments
- fixed error parsing declaration "file of byte absolute X"
- changed handling of references to object and record instances, resulting in fewer warnings
- improved handling of identifiers with unknown type, removes some irrelevant warnings
- improved handling of overloaded subprograms
- fixed error in Convention Report - as help indicates, constructors starting with "Create" etc are OK, but reported error if not exactly "Create".
- improved Code Reduction Report, now does not report identifiers that are set many times in a row, if one of two consecutive times is in a condition (if/case)
- fixed error handling built-in Str procedure
- fixed error in Duplicates Report, some identifiers were not reported in some cases
- backup files are now copied as '*.~txt' instead of '*.~tx'
- fixed error, WarningsReport "Destructor without override directive" considered even old-style objects, but in this case the override directive gives a syntax error
- fixed error, WarningsReport - 'Constructor/destructor without call to inherited', for old-style objects gave a warning, even if no ancestor existed
- fixed error, WarningsReport, 'Possible bad object creation', now does not report old style objects
- fixed error, WarningsReport, 'Variables that are read but not set', now does not report old-style objects
- fixed error parsing construct like 'case X.Y of'
- fixed error with location include files in some cases
- improved handling of form inheritance
- fixed error, compiler allows 'class' word before local subprogram, so now allowed even in PAL
- fixed error handling 'inline' code
- improved handling of uses lists for inherited forms in Uses Report, the situation when a base form uses a unit, the Delphi IDE automatically inserts this unit in the uses list of the nchild form, even if it is not referenced anywhere. These situations are detected and the unit is listed as 'used by inherited form' instead of 'unnecessary'
- fixed error in mainly Warnings Report, for 'out' parameters
- increased maximum stack size, because of stack overflow problems in NT 4 in some cases
- fixed error parsing 'absolute' directive in some cases
- fixed error handling blank lines after final 'end.' in unit code
- fixed error locating relative paths
- fixed error handling '(*$I x.pas*)' directive in some cases
- improved compression-quality for generated JPEG files
- new options to include Delphi's library and browsing paths when searching for source code
- added support for Delphi's environment variables, like $(DELPHI) and user-defined ones like $(MYLIB)
- changed captions for untyped var/out/const parameters in the Totals Report
- fixed error in handling code referencing "System.Delete", as opposed to just "Delete"
- fixed error parsing short string type like "X : string[Y]" where Y was erronously skipped by the parser/analyzer
- fixed error when entering text in the combo box text input area for "Search Directories"
- fixed error parsing ancestorlist for interface, did not register reference to ancestor
- fixed error recognizing relative paths in some cases
- fixed error, setting for "Warnings only" in the Uses Report was not used
- fixed error with checkboxes for Control Alignment and Control Size Reports
- fixed error, did not resolve references in "var MyVar : UsedUnit.TMyType" but "var MyVar : TMyType" was resolved properly
- fixed error with handling of class type references in some cases
- fixed error parsing some kinds of OLE automation code, like "FRng := FDoc.Range(start:=0,end:=0);"
- fixed error, option for backup of report files did not work
- fixed error resolving references to identifiers with same name, declared in different units in some rare cases
- fixed error that could cause AV when parsing FreeAndNil call
- fixed error when selecting search folders
- numerous new features and enhancements, see the What's New page
- new compiler option 'Delphi 7' (default)
- fixed error parsing include file specified with relative path
- fixed error relating to nested record declarations
- fixed errors parsing directives 'export' and 'abstract'
- fixed error parsing DFM file with line like 'Prop = .Owner'
- disabled printing by HTML when frames are active
- fixed error in parsing case statement
- now allows multiple $ELSE directives in a row, just like the Delphi compiler
- fixed error parsing properties with old-style objects
- fixed error parsing some directives for procedure type declarations
- fixed error detecting function result assignment in some cases
- fixed error in Optimization Report, parameters missing "const" directive were reported when the owning method was abstract
- fixed error parsing include directive in some rare cases
- fixed error parsing variant property values in DFM files
- fixed error, "with X(Y,Z)" triggered 'Multiple With'-listing in Convention Compliance Report
- fixed error parsing out-parameters, could cause the parser to fail in rare cases
- fixed error for code parsed with BP7 as target: unit file names are now expected in 8.3 format even if unit name is longer
- fixed error parsing 'write(X:Y, Z)' in some cases
- fixed error parsing 'object()', did not register ancestor reference properly for oldstyle objects
- fixed error in Control Warnings Report, section about FocusControl was sometimes omitted
- fixed error in Control Warnings Report, did not use controls on inherited forms in some situations
- new additional command-line version PALCMD.EXE
- search folders entered under Options|Properties|Parser may now contain relative paths
- fixed error, parsing statements with OleVariants could fail in some cases
- fixed error, parsing statement like 'Str(R:I:J, S)' could fail in some cases
- fixed error parsing 'forward' keyword not followed by a semicolon
- fixed error with 'Multiple With'-section in 'Convention Compliance Report'
- fixed error with double '&' char when checking FocusControl value in 'Control Warnings Report'
- fixed error with double '&' char when checking conflicting accelerators in 'Control Warnings Report'
- fixed error parsing statements like 'writeln(Number:5:2)'
- fixed error parsing 'stringresource' which was erroneously taken for a reserved word
- fixed error resolving path in some cases for units mentioned in project file
- fixed error, default prefix definitions were always added when program started. Now only added if definitions are missing in the INI file
- fixed error, parsing some uncommon type declarations could fail
- fixed error, Optimization Report reported parameter as missing "const", althought it was used as a var-parameter (or out-parameter) inside the subprogram, and thus could not be a var-parameter
- control/property value pairs are now trimmed, e.g. "TLabel ; Caption" is stored as "TLabel;Caption"
- fixed error, uses-list "in"-path in project file
was not always used
- Control Warnings Report, colon checking for label caption, now trims so ":" is equivalent to ": "
- fixed error, record fields set by initialized global record variables were not always registered
- Control Warnings Report, warnings for accelerators are not issued for controls that share a common action
- Control Size Report, fixed error, output for "Horisontal Size" and "Vertical Size" switched
- Control Warnings Report, fixed error with FocusControl section
- fixed error, parsing include file directive within comment
- fixed error, parsing absolute directive for BP7 code
- new report 'Prefix Report', warns for variables that do not follow the prefix rule for the owning type. New dialog box exists to define rules.
- new section in 'Warnings Report': 'Instance created of class with abstract methods'
- new 'Property Value Report', scans DFM-forms for selected property values, e.g. produces a listing of all SQL property values. A new dialog box exists to select which properties that are monitored.
- new section in the 'Literal Strings Report', listing constants declared as resourcestrings, instead of listing them together with the other declared constants
- section 'Identifiers not used' in 'Reduction Report', now does not report parameters, local variables etc to subprograms that are never used.
- options 'Create subfolders' and 'One file for each report' are now TRUE as default
- 'Warnings Report', 'Var parameters that are used but never set' (and similar 'probably'-report): parameters to event handlers are not reported
- 'Control Warnings Report' now does not list button/menus with missing OnClick-event when property Action is set
- 'Convention Report', section for bad identifier names, now also reports names that are similar as those predefined in the System unit (e.g. Copy, Byte, AllocMem). Only applies to Delphi 1 or higher
- every class type (new object model) is assumed to descend originally from TObject. Affects the class reports.
- the report viewer (text) now shows a greyish color when no file is loaded
- fixed error, could occur duplicate listings both in 'Local variables that are referenced before they are set' and corresponding 'possible'-report
- fixed error, 'Form Report', 'Call Index Report' and the control reports also showed identifiers from excluded folders
- fixed error, sometimes when a missing report file was selected any subsequent reports could not be seen
- fixed error, '"' were not given with the correct HTML representation
- fixed error with resolving relative paths, when deciding whether identifiers should be included in report
- fixed error in parser for class reference declared in local scope
- fixed error, parsing statements with variants, like "X.Range(start:=0;end:=1);" where X is a variant
- fixed error in evaluation version, when bad license key entered, error message appeared behind the application window
- fixed error, parsing special characters in DFM-file
- fixed error resolving file paths in some cases
- fixed error parsing code like:
initialization
SomeCall
finalization
that is when a semicolon is missing after "SomeCall"
- INI file values may now be up to 4096 characters long
- fixed error parsing variable declaration with absolute record
- fixed error parsing type identifier passed as parameter, like in
..
X := SizeOf(File);
..
- fixed error, abstract methods were reported as unused in the declaring class
- changed behaviour, if unknown structured type variable assigned, reported as set (previously reported as ref)
- now checks if report file exists before trying to load it in the text/HTML viewer window
- fixed error, when clicking in treeview report was not always found (occurred for reports with multiple words in the name)
- fixed error, value parameter that is an interface, when parameter set in subprogram, registered the interface as being set, resulting in a "value parameter set" listing
- fixed error, when changing from text to HTML mode for reports, HTML reports were not always loaded in the viewer, only after application restart
- fixed error, option to load file at startup from command-line parameter was missing, although documented in help text and tutorial
- new HTML formatting for reports, supporting frames and stylesheets
- optionally create reports in separate subfolder
- reports may be divided over multiple files
- new Form Report, reporting values for important form properties
- fixed error parsing interrupt procedures (16-bit code)
- fixed error parsing record type with string field, when semicolon is missing before final "end"
- fixed error occuring in some situations when parsing record type with case constructs
- fixed error parsing declaration of some unusual subrange types
- some optimizations added for the Complexity Report, now somewhat faster to generate
- fixed error parsing numeric labels, like "1:" at the beginning of a code line (yes, people still use labels!)
- fixed error parsing unknown identifiers with field names equivalent to keywords (like "X.Type"). Such field names are indeed valid for variants
- fixed error in the Uses Report, units that were aliased (like Windows=WinProcs+WinTypes) could create duplicate listing
- fixed error in the Complexity Report, calculating overall Chars/LOC
- fixed error parsing array of procedure type (like "type X = array[0..1] of procedure")
- The first public version of Pascal Analyzer
© Copyright 2001-2008 Peganza
All product names are trademarks or registered trademarks of their respective owners.