Skip to main content

Automatic consistency checking

Yesterday evening I slapped together a small tool for consistency checking of large codebases. It's written in a similar spirit as Boost's inspect tool, just slightly more sophisticated. Written in C#, it allows you to plug in your own checks easily. At the moment, I have a generic RegEx checker (just looks if a regular expression matches) and a line ending checker in my core tests and a bunch of niven specific ones (license, interfaces with struct and not with class, file header, @file comment in header matches file name, include guards are not reused, missing @author, outdated mail addresses). Some example output:

Loading checker from 'Checks'
         .. 'CrLfCheck'
 .. 1 checker loaded
Loading checker from 'nivenChecks'
         .. 'CheckFileHeader'
         .. 'OutdatedMailAnteru'
         .. 'AuthorCheck'
         .. 'IncludeGuards'
         .. 'StructInterfaces'
         .. 'FilenameInHeader'
 .. 6 checker loaded


Running checks for 'archive.h'
 ++ OK  ... 0 failures


Running checks for 'core.h'
    Include guards      : Include guard already used
        >> Line: 9: The include guard 'NIV_CORE_H' has been already used
    Interfaces          : Interface defined with 'class'
        >> Line: 17: Interface 'IFileSystem' uses 'class' instead of 'struct'
 -- FAILED  ... 2 failures


39 failures (101 files total)

It was written against the .NET Framework 2.0, but it should work with Mono as well. On startup, it loads up your assembly and pulls the checks out of it, so it's really easy to extend. I'm running it now along with the build to see which files need some attention. By the way, anonymous comments are enabled, so you can tell me what features would you like to see from such a litte helper?