For impatient

java -jar casereport.jar
java -jar casereport.jar srcFileList targetFileList
java -jar casereport.jar srcAndTargetDir

        -o outfile    Output to 'outfile' instead of CaseRePort.out
        -q      Be quiet, don't report skipped files
        -xml    Output in XML format
        -h      Print this help and exit

How to use it?

You need a working java run-time environment v.5. Enter the top directory of the source tree, that you want to check for case problems and run java -jar CaseRePort.jar. If CaseRePort.jar is not in current directory, give the full path. The output will be written to CaseRePort.out file by default. Use -out option to set another file name.

Comprehencing the results

The output file lists the filenames that were referenced in wrong case. For example, you might see:

file2.c:10: f=open("File1.txt");
This means the following: file2.c at line 10 has contents f=open("File1.txt");. But there was found no File1.txt, there was file1.txt

Another case is when there are two files with name differing only in case. If their parent (grandparent, etc.) directories are different, then the tool can determine the right file from the name that precedes the filename. For example, if thre are files dir1/dir2/dir3/file1.c and dir4/dir2/dir3/FILE1.C, the tool will determine that in code ulink("dir10/dir1/dir2/dir3/file1.c"); the case of the file is probably correct. But as this check is not reliable, the source line will still be listed in the report in Looks right section:

file1.c:different cases
Looks right:
  source.c:152: ulink("dir10/dir1/dir2/dir3/file1.c");

Ignored files and directories

You must take into account, that some file and directories are not scanned at all. They include: files without extensions, directories and files starting with '.', and binary files. The reason for ignoring them is that they produce too much noise, and too little true alarms. Think about file, called "AUTHORS". Any place that uses this english word will be reported. And there will be no useful results, because this file is usually not open by the user application.

Ignored patterns

The tool ignores the places that have a filename with alphanumeric prefix or suffix. The reason is to get rid of noise like matching MyTool.cs to MyTool.cScore = 0.


If you discover a bug, or have a suggest for enhancement, please don't hesitate to write to