Ben Clews
Ben Clews

Reputation: 81

How to enforce Delphi Coding Standards

I want to enforce coding standards for our Delphi codebase.

A few colleagues have suggested Code Healer and Pascal Analyzer. I've had a look at these tools and they aren't suitable.

I was hoping to be able to do the same thing that CheckStyle for Java or StyleCop for C# can do

Upvotes: 8

Views: 3933

Answers (4)

Warren  P
Warren P

Reputation: 68922

The best one is Pascal Analyzer (PAL) by Peganza, which you said you tried and found unsuitable, but did not say why. I will say a bit in its favor: It's Commercial, inexpensive, and so worth it. They recently released version 5, and if version 5 doesn't do what you want, you should tell them what you want, because they have always answered my requests whenever I have mentioned a feature I wish the product would add.

We use it instead of the high-end SKUs of Delphi's metrics because it costs less and does more than the built-in $3000 stuff. I think it costs about $160 us.

I am a happy customer. Here is a sample of some of the metric areas that I like:
convention compliance - class names that don't start with T, exception types don't start with E, class fields not in private, identifiers with goofy names, class visibility confusion or bad order, local identifier/unit outer scope identifier clashes. Inconsistent case, Many many many more!

alt text

The weakness is that the output is plain text in a "TMemo" control. Of course, I have found a lot of ways to take that output and write my own small sort/filter utilities to mine even more useful stuff from the reports. A powerful tool that you won't be able to live without once you try it.

I realize you said in your answer that you tried that already, but if it's not what you want, it's already the best LINT like tool for Pascal that currently exists.

Upvotes: 4

Chris Thornton
Chris Thornton

Reputation: 15817

If you're into writing your own style checking, you can write a .exe in Delphi to look for bad things being committed. Call that in a pre-commit hook into your repository.
You can examine the differences of a checkin by using SVNLOOK. ex:

excerpt from pre-commit.bat

SVNLOOK diff -t "%2" "%1" | MyCustomFilter.exe
IF %ERRORLEVEL% == 0 GOTO EOJ
EXIT 1
:EOJ
EXIT 0

Upvotes: 0

RBA
RBA

Reputation: 12584

It seems those 2 are the most used. You can also try:

http://jedicodeformat.sourceforge.net/

Upvotes: 3

mjn
mjn

Reputation: 36654

Some newer editions of Delphi offer Audits and Metrics in the Model view, which can also be configured to set allowed limits. They do not run from command line for build integration afaik so I found them not very helpful.

I know the highly customizable Java (and .Net tools) like PMD, FindBugs and CheckStyle which generate XML or HTML statistic reports, and also integrate very well with build tools (Ant, Maven, Hudosn) - but for Delphi nothing comparable has crossed my road so far.

Upvotes: 3

Related Questions