Project status report

PicInfo sample application v1.0 <2006-02-11>

System size

There are 717 lines in the system (LLINES). It is a small system. Of these lines, 371 are code, 173 are pure comment lines and 173 are empty. Thus, 52% is code lines, 24% is comment lines and 24% is empty lines.

Distribution of logical lines

Other size metrics:

Number of statements: 374 (STMT)
Number of procedures: 29 (PROCS)
Kilobytes of source code: 27 kB
Source files: 12
Forms: 1


All in all, there are 224 meaningful comments (MCOMM) in the system (compared to 371 code lines). By meaningful we mean a comment that has some text in it, not just separators or empty comments.

The comment density (meaningful comments per code line, MCOMM%) is 60%. In other words, there is a comment for every 1.7 lines of code. We recommend a density of over 20% so that there is at least 1 comment for every 5 lines of code.

Anything to improve? There are no files with comment density less than 15%. You should consider adding more commentation to files that fall below this limit. There is 1 procedure having no commentation.


The average cyclomatic complexity (CC) of a procedure is 2.7.

Anything to improve? There are no moderate risk procedures (CC 11..20), 1 high risk procedure (CC 21..50) and no very high risk procedures (CC over 50). The total number of procedures is 29.

Cyclomatic complexity (CC) is counted as decisions+1. Decisions include statements such as If, ElseIf, Case, For, While and Until. The higher CC, the riskier are code changes to that procedure. If CC exceeds 20, you should consider it alarming. Procedures with a high cyclomatic complexity should be simplified or split into several smaller procedures.

Conditional nesting

The average depth of conditional nesting (DCOND) is 0.8. Thus, on average, there are so many nested conditional statements (nesting levels) in a procedure.

Anything to improve? There are no procedures with DCOND>5. Too many nesting levels make the code difficult to understand and can lead to errors in program logic. Consider splitting these procedures. You may also find a way to rewrite the logic with a Select Case statement or an easier-to-read If..Then..ElseIf..Else structure.

DCOND Depth of conditional nesting

Procedure length

The average procedure (LINES/proc) is 18.7 lines. Shorter procedures are easier to understand than longer ones.

Anything to improve? There is 1 procedure that exceeds one page when printed (66 lines).

LINES Physical lines

File length

The average file (LINES/file) is 145.0 lines. Shorter files are easier to understand than longer ones.

Anything to improve? There are no files that exceed 1000 lines. No file has over 50 procedures. No file declares over 50 variables and no file declares over 50 constants.

LINES Physical lines


The average number of procedure parameters (PARAMS) is 1.3.

Anything to improve? There should be max 5 parameters in a procedure. In this system, this count is exceeded in 4 procedures. Consider simplifying or splitting those procedures.

PARAMS Procedure parameters

Class design

The maximum depth of class inheritance tree (maxDIT) is 0. This should be 6 or fewer.

Class variables should always be declared private to avoid accidental changes. In this system this succeeds at a rate of 100%. Of all the 3 classes, no class has problems in this regard.

Project Metrics Viewer v4.0.01