procedure MyProc(I : integer); begin ... I := 555; // I is not passed as reference ... end;
Here you can find answers to common questions:
1. What is Pascal Analyzer and how can it make my developer life easier?
2. I'm a registered user, where can I find updated versions of the full program?
3. Which compiler versions are supported by Pascal Analyzer?
4. Is it necessary to change my source code in order to let Pascal Analyzer do its work?
5. How can I jump from an error location in a Pascal Analyzer report to my source code?
6. How can I hide source code from Pascal Analyzer?
7. How can I exclude results from code in certain folders?
8. Where can I find the cyclomatic complexity metrics for my code?
9. How can I detect assigned value parameters?
10. Can PAL tell me if I have declared an identifier with the same name as a built-in identifier?
11. When adding a virtual abstract method to a base class, can PAL help me find all places where I need to override this method?
12. Results are often presented as lists of identifiers, sorted by name. Can I change this so that the lists are displayed sorted by module
name, and secondly by identifier name?
13. Is it possible to generate a list of global variables?
14. For a given function or procedure, is it possible to see a list of all called other functions or procedures?
15. How can I create a template for new projects, so I do not have to enter
the same settings again and again?
16. Can I integrate PAL with our build process?
1. What is Pascal Browser and how can it make my developer life easier?
2. I'm a registered user, where can I find updated versions of the full program?
3. Which compiler versions are supported by Pascal Browser?
4. Is it necessary to change my source code in order to let Pascal Browser do its work?
5. How can I make my Chinese comments show up correctly in the HTML pages?
1. What is Pascal Analyzer and how can it make my developer life easier?
Pascal Analyzer is a powerful and efficient source code analysis tool. It
will help you find all sorts of bugs, errors, and anomalies.
Pascal Analyzer supports your development process by:
2. I'm a registered user, where can I find updated versions of the full program?
Read the mail you got when you ordered Pascal Analyzer. The same instructions apply for updates.
If you cannot find this mail, let us know, and we will help you as soon as we can.
3. Which compiler versions are supported by Pascal Analyzer?
Pascal Analyzer directly supports code written for the following compilers:
By setting appropriate compiler directives and conditional defines, PAL should also handle code written for other Pascal dialects.
4. Is it necessary to change my source code in order to let Pascal Analyzer do its work?
No, not at all. Just make sure that you select a suitable compiler target. Also set any appropriate
compiler directives and conditional defines, just as you would when compiling from within the IDE.
Or use an include file with compiler directives and conditional defines.
Be aware, that if you check the option "Use Delphi project options if found", the conditional defines that may be set in the options will also be used, and merged with the conditional defines that you set in the project options.
5. How can I jump from an error location in a Pascal Analyzer report to my source code?
There are two ways:
6. How can I hide source code from Pascal Analyzer?
My project involves a lot of source code. I have no interest in finding errors in the VCL
or in some third-party libraries. What is the best way to avoid parsing and analyzing this code?
Actually the preferred strategy is to let PAL find as much code as possible. It can then better resolve and understand identifier references. To achieve this check the "Use Delphi library path" and "Use Delphi browsing path" options in the "Project Options" dialog box. Folders that still are not found, can be added to the "Search folders" text box. To exclude identifiers from reports, see the next question-answer. Also normally let PAL parse and analyze DFM files, so check that option.
7. How can I exclude results from code in certain folders?
I do not want to present results for code in some folders. What can I do?
Use the "Exclude identifiers from these folders in reports" option in the "Project Options" dialog box. It is desirable to let Pascal Analyzer find and parse all code, so it can get a better understanding (see the previous question-answer). But in this way, you can exclude results from these folders.
8. Where can I find the cyclomatic complexity metrics for my code?
Cyclomatic complexity is a measure of software complexity first introduced by McCabe.
It measures the number of linearly-independent paths through a program module.
PAL does not directly display cyclomatic complexity metrics. However, the
Complexity Report displays decision points (DP). Cyclomatic complexity is
often defined as the number of DPs plus one, so there is a direct relation between these two metrics.
9. How can I detect assigned value parameters?
For example, code like this:
procedure MyProc(I : integer); begin ... I := 555; // I is not passed as reference ... end;
In the "Warnings Report", this is reported in the section "Value parameters that are set".
10. Can PAL tell me if I have declared an identifier with the same name as a built-in identifier?
Yes, the "Convention Report" reports this in the section "Identifiers that have unsuitable names".
It lists identifiers that share the same name as keywords, directives, or identifiers from the System unit.
Example: Absolute, Round, IntToStr
11. When adding a virtual abstract method to a base class, can PAL help me find all places where I need to override this method?
Yes, the "Warnings Report" reports this in the section "Classes without override of abstract methods".
It is important to override these methods, otherwise you could get an exception at runtime.
12. Results are often presented as lists of identifiers, sorted by name. Can I change this so that the lists are displayed sorted by module name, and secondly by identifier name?
Sure, you find this in the Project Options dialog box, in the lower part of the "General" tab page.
13. Is it possible to generate a list of global variables?
The "Identifiers Report" has a section called "Global Variables", which provides exactly this.
14. For a given function or procedure, is it possible to see a list of all called other functions or procedures?
Use the "Call Index Report" for this.
15. How can I create a template for new projects, so I do not have to enter
the same settings again and again?
Set options for a new project, that you want to keep as a template. Then
select "Options|Set as Template" from the menu and the options will be used for
the new projects that you create.
16. Can I intregrate PAL with our build process?
Yes, you can. Take a look at the command-line program PALCMD.EXE. It has a whole set of options that will let you run a PAL analysis automatically.
1. What is Pascal Browser and how can it make my developer life easier?
Pascal Browser is a powerful and efficient source code documentation tool.
Just as its sibling product Pascal Analyzer, Pascal Browser will parse the source code it finds and gather all sorts of information. This information is used to create the document collection that describes the source code. The most common use of Pascal Browser will probably be to create hyperlinked HTML documents.
2. I'm a registered user, where can I find updated versions of the full
program?
Read the mail you got when you ordered Pascal Browser. The same instructions apply for updates.
If you cannot find this mail, let us know, and we will help you as soon as we can.
3. Which versions are supported by Pascal Browser?
Pascal Browser supports code written for the following compilers:
By setting appropriate compiler directives and conditional defines, PAL should also handle code written for Kylix (Delphi for Linux), and for other Pascal dialects.
4. Is it necessary to change my source code in order to let Pascal Browser do its work?
No, not at all. Just make sure that you select a suitable compiler target. Also set any appropriate
compiler directives and conditional defines, just as you would when compiling from within the IDE.
Or use an include file with compiler directives and conditíonal defines.
Be aware, that if you check the option "Use Delphi project options if found", the conditional defines that may be set in the options will also be used, and merged with the conditional defines that you set in the project options.
4. How can I make my Chinese comments show up correctly in the HTML pages when
using charset "Big5"?
When Unicode comments are used in the source code, the default templates will
not generate the correct output. The output in source code listings will display
Unicode characters, but not in the other parts of the document that show
comments.
The comments are written by PAB to the intermediate XML file, and the charset used is "iso-8859-1", and the XSLT transformation inserts a <META> tag in the resulting HTML pages that specifies "charset=iso-8859-1". The solution is to add an additional <META> tag that specifies for example the charset "Big5" (a charset for Chinese characters) in the templates, like this for Module.xsl:
<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:variable name="template">{#Template}</xsl:variable> <xsl:include href="FooterInc.xsl"/> <xsl:include href="HeaderInc.xsl"/> <xsl:include href="ToolsInc.xsl"/> <xsl:include href="TodoInc.xsl"/> <xsl:include href="ImageInc.xsl"/> <xsl:output method="html" version="1.0" encoding="iso-8859-1" indent="yes"/> <xsl:template match="/"> <xsl:variable name="Me" select="//Items/Item[@id='{#selfID}']"/> <xsl:variable name="ItemsInMe" select="//Items/Item[@modid='{#selfID}']"/> <HTML> <META http-equiv="Content-Type" content="text/html; charset=Big5"/> <xsl:call-template name="header"/> <BODY> ... |
This <META> tag will take precedence, so the resulting output is displayed with the "Big5" charset.