Prolint is a tool for automated source code review of Progress 4GL code. It reads one or more sourcefiles and examines it for bad programming practice
When you are interested Prolint, you are encouraged to subscribe to this group where you find the on-line tools to collaborate and discuss Prolint. There is a discussion forum, you can submit issues (for bugs and enhancement requests), you can modify the on-line documentation, and best of all: there is an e-mail list. So subscribe, and then don't forget to go to your subscription details to enable the e-mail notification!
have two procedures that work that can called from trigger level within trigger. They passed a number of paramters including one temp-table containing create/delete information , the 2nd program accepts the current new record and the old record
WRITE TRIGGER
DEF TEMP-TABLE ttnewCustomer LIKE Customer.
CREATE ttnewcustomer.
BUFFER-COPY customer TO ttnewcustomer.
DEF TEMP-TABLE ttoldCustomer LIKE customer.
CREATE ttoldcustomer.
BUFFER-COPY oldcustomer TO ttoldCustomer.
I have two sessions and one shows the lower half (Compilation Unit, Lint this c.u. again, Help on this rule, etc.). Is there some setting for this? I cannot find anything.
Currently i'm getting a parsing error when using ProLint on code with a new 10.1C keyword (FINALLY). I suppose that other keywords aren't supported either yet. I would like to have these added to the parser.
When creating a new program, we need to ensure the SVN header was added before checking the code in. What rule could I look at or copy with slight modifications for this? I noticed a couple of different approaches and I want the one that' most efficient.
Basically, I'm thinking all I need to do is see if SVN is somewhere in a comment at the top of the program.
I'm trying out the ProParse/ProLint utilities and can't find a solution on how to deal with the following situation:
- use of Varusage to check on defined variables that are never used
- If there are variables that are only used in &if-blocks (and at the moment of the check this &if-statement gives a false result) I will get the message that this variable is defined but never used.
Now in this cases the next step I should do is to delete these unused variables but it is possible that the variable is used if the &if-statement give a positive result (so the variable has to be defined).
When I run 'Lint Files' I get a few stange messages:
- Expected proparse version 3.1b, found 3.1c02
I've downloaded the latest ProParse and Prolint, why do I get this message??? Can't I use the latest ProLint with the latest ProParse??
- Multiple Lines with '8:50: unexpected token: no-undo'
Whats the reason for this message in Prolint??
Prolint Version 72
ProParse 3.1c02
Progress OpenEdge 10.1A230
Attached is a fix to the RELEASE rule. It flagged false positives on RELEASE OBJECT, and now no longer does so.
I am scheduled to do some Prolint consulting, starting mid-October. We will be setting up Prolint on a server, where it will monitor file changes and generate reports as a batch-style process.
My hope is that I'll be able to start them off right away using the new proparse.jar rather than the old proparse.dll. This means I'll have to move fast on a new version of Prolint.
I have hooked up Prolint to Roundtable as best I can tell. The lint button appears, and I can click it. When I do, it tries to compile the currently selected object (good). However the compile fails because the propath and databases do not appear to have been set from the current workspace/task. It simply says that compile failed on the program. If I click on compile or compile w/xref buttons from roundtable, the procedure compiles cleanly. What have I missed?
Something broke in release 71 or 72 in the results window. When you click on the button to load an historical session from the database, nothing appears. I select an existing session with 170 warnings recorded (I can see them on the session compare), and click Load. There is a slight pause, it appears it is reading through the warnings, but then the Prolint node appears to the left and no child-nodes nor entries in the browse. I'm guessing the subscribed signature has changed?
Greetings.
v9.1A :(
I installed first time Prolint, and followed tutorial, but first file linted issues a (247) error (sorry, don't know english message, but is something like: Impossible to understand following to-- NOT LOGICAL (247)
c:\archivos de programa\progress\prolint\filters\exclude.p
and is the following line:
IF NOT LOGICAL(DYNAMIC-FUNCTION("ProlintProperty", "filters.excludelist")) THEN
RETURN.
That means I can't run on 9.1A?
Any help will be appreciated very much.
Godspeed.
Hi,
Prolint returns an error with blocks such as enable_UI and disable_UI eg...
PROCEDURE enable_UI :
/*------------------------------------------------------------------------------
Purpose: ENABLE the User Interface
Parameters:
Notes: Here we display/view/enable the widgets in the
user-interface. In addition, OPEN all queries
associated with each FRAME and BROWSE.
These statements here are based on the "Other
Settings" section of the widget Property Sheets.
Consider this example code:
METHOD PUBLIC OVERRIDE VOID CreateThis ():
SUPER:CreateThis().
/* add some custom stuff to 'this' */
END METHOD.
METHOD PUBLIC OVERRIDE VOID DeleteThis ():
SUPER:DeleteThis().
/* remove the custom stuff from 'this' */
END METHOD.
As you can see, SUPER:DeleteThis() is now the first statement in the DeleteThis method but I believe it makes more sense, generally, when it is the last statement.
I have no idea how to automate such a code review though.
The above rule does not work for DataServers - _file is being checked in ALL connected databases, it should only be checked in the Progress databases since they are the only ones that contain _file meta info. Insert the following at line 99:
if dbtype( v-idx ) <> "PROGRESS":U then
next dbscan.
The rule "defaultframe" gives this message when it finds instances of DISPLAY and UPDATE statements that are not using a previously defined frame.
Why use this rule?
This can be useful when you are trying to identify user interface components in your code base. It can also be helpful for applying standards.
Solution
Frames should be defined with either a DEFINE FRAME or FORMAT ... WITH statement.