Prolint

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. So subscribe, and then don't forget to go to your subscription details to enable the e-mail notification!


Prolint tables and fields in round table

We are using prolint within round table.
I was wondering if anyone had done something to lint tables and fields (instead of source code) and have created any rules for this. (Using the roundtable info for validation)

Regards,
Focco van der Vegt
Red Bee Media (UK)


Progress DB access via VM

Hi,

I'm using Progress 10.1c in Linux(ubuntu 10.04) which runs on a Windows machine via VM. The databases are running in Linux as local databases i.e. without specifying any port numbers. How can I access the DB's running on Linux from Windows.
Is i possible at all?

Regards,
Akshay


Prolint with Proparse.Net

I have completed the work necessary to get Prolint running with Proparse.Net. You will find downloads and instructions at http://www.joanju.com/proparse/.

This means that, on Windows, you will be able to run Prolint against 10.2 ABL syntax.

It also means that any new development done on Prolint can take advantage of direct access to Proparse's classes and objects, just like you can with other .Net assemblies.


ABBREVKWD: false positive on field names assigned using :: shortcut

Issue

When using the :: shortcut for hb:BUFFER-FIELD("language":U):BUFFER-VALUE, hb::language the ABBREVKWD rule complains that language is an abbreviated keyword for LANGUAGES.

Test case


DEFINE TEMP-TABLE tt NO-UNDO
FIELD language AS CHARACTER.

DEFINE VARIABLE hb AS HANDLE NO-UNDO.

hb = TEMP-TABLE tt:DEFAULT-BUFFER-HANDLE.
hb:BUFFER-CREATE().
hb::language = "nl":U.


NOUNDO: false positive on dataset-handles

Fix:

Add to inspectnode prolint/rules/noundo.p:

WHEN "DATASETHANDLE":U THEN IF vartype='parameter':U THEN
/* suppress warning on "DEFINE .. parameter dataset-handle ..." */
ASSIGN havevar = FALSE.


How to install Prolint?

Hi all!


nohardcodeemail.p bug?

If hard coded email is found in an include file, this rule shows the original procedure as source.
E.g. if I have procedure proc.p which is

/* proc.p body */
/* ... some code */
{inc.i}
/* ... some code */

hard coded email is in inc.i

Though proLint will show me that source is proc.p, not inc.i. The line will be the correct line in inc.i

Attached is a changed rule, which seems to work fine.

Yuri


The Prolint project is seeking a volunteer for ABL + (.Net or Java) programming!

UPDATE:

This work has been completed!

Original post:

Project goal: Quickly get Prolint working with Proparse.Net, so that Prolint can work with 10.2 syntax.

Required skills: ABL, and *either* .Net (C# preferred) or Java.

Project scope: Relatively small and certainly has a fixed scope. You will know when you are done...


Varusage.SkipNewShared not implemented correctly

In the query using the SkipNewShared it is used in the wrong way, resulting in wrong results when SkipNewShared is no.
The code:

tt_object.newshared <> SkipNewShared

should be changed to:

(not tt_object.newshared or not SkipNewShared)


do1.StatementSkipList

A while ago we implented the StatementSkipList for rule do1.
I suggest we add BLOCK_LABEL to the default-list. Otherwise a DO without label is skipped, but one with label gives a warning.

run SetProlintProperty ("rules.do1.StatementSkipList", "CASE,DO,FOR,IF,REPEAT,BLOCK_LABEL").


Check if propsuper is running

Logwin8.w => save log as => tabfile.p gives an error about dynamic function ProlintProperty.
This is because Prolint does: RUN DecrementProlintPropertySubscribers. which tells propsuper to shutdown (if no-one is actively listening)

tabfile.p (responsible for the call) or Logwin8.w (responsible for the button)
should check if propsuper is running with a construction like in core/prolint.p


rule tablename false positives when forward function decl. <> function decl

This was resolved on issue 1403, but the find "prototype" should be find FIRST "prototype" on line 394.


rule message gives warning on hide message

One could perhaps argue that "hide message" may never be necessary when you never use "message" in the first place, but I think a lot of "own implementations" of messages result in the progress-message to be used.
So I adjusted the rule to skip "hide message" (statehead=HIDE).

Niek

P.S.
In this rule IgnoreAb is also implemented in a way I think won't work or I don't understand.


wait-for close of logwin

I would like to run Prolint from our own application (not through desktop.w).
Actually, our application will start a new progress-session with propath and db's prepared and with a startup-procedure which runs Prolint.
What would be the best way to program the "wait-for close of logwin"? So I can quit the progress-session (without getting an editor).


Ignore AB-stuff

Tried to get this to work and found some bugs.
Jurjen, can you please verify and checkin?
Perhaps complete the default appbuilder-function-list (_CONTROL-LOAD, _DEFAULT-DISABLE, _DEFAULT-ENABLE etc.) in ignoreab.p

Niek


#
Syndicate content