Table 2 Source structure in the rules library

include/

HPCodeGuideConstructs.h

 

 

Contains the APIs required for (re)writing the rules to enforce coding guidelines.

 

HPCodeGuideDiagnosticTags.h

 

 

Contains the various diagnostic tags that you can use to emit the diagnostics

 

 

from the rules library.

 

 

 

lib/

libcodeguide.a

 

 

This is provided to fill in the implementation stubs for recompilation of the rules'

 

 

library, and must be linked in while compiling the rules' library.

 

librules.s[lo]

 

 

This is the default rules' library that is available with cadvise.

 

 

 

src/

HPCodeGuideRules.C

 

 

The file where all rules are implemented. You can modify this file to incorporate

 

 

more rules and/or modify the existing ones.

 

HPCodeGuideRulesDriver.C

 

 

The driver from where the rules are invoked on the various program constructs.

 

Makefile

 

 

The default makefile for rebuilding the rules' library from the above sources.

 

 

 

The sample rules towards naming convention that are available with the current release are as follows:

1.Functions that returns a bool must start with is.

2.Names of abstract classes should begin with Interface.

3.Class names should start with a capital letter.

4.Names of global variables should start with a capital letter.

5.Names of local variables should start with a small letter.

An example of writing a rule to enforce the naming convention of private data members being suffixed with an '_' is as follows:

Example 5 Writing a rule to enforce naming convention

void Field::checkNamingConventions() {

//Private data members of class should end with "_" if(name() && isPrivate()) {

char ch = *name() + strlen(name()); if(ch != '_')

warning("Private data member \"%s\" not suffixed with \"_\"", 2000053, name());

}

}

NOTE: Cadvise reports do not currently have support for Coding Guideline diagnostics. Use the -teeoption to view these messages.

18 Using Cadvise