NAME cca - Analyzes C conditional compilation logic and outputs a summary report of metrics and a graphical representation of the logic. SYNOPSIS Normal usage cca [options] -f infile To get the usage statement cca [-h|-help |-?] DESCRIPTION cca takes input from a C source file infile and analyzes the complexity of the conditional compilation logic in that file. The output of the program is a summary report containing complexity metrics (written to outfile) and a graphical structure chart of the logic (written to graphfile). The summary report contains the total lines of code in the file, the number of lines of conditional control logic, McCabe's V(g) and V'(g) for the conditional control logic, a list and the number of conditional directives used, a list and the number of names and constant expressions used, and a comprehensive listing of the conditional logic. The structure chart shows the "name" and/or constant expression used at each conditional node, which line number the #directive is on, and the number of lines of code. The numbers at the top of each graphical output page indicate page ordering. The numbers are in the form (X,Y), where X and Y are cartesion coordinates starting at (0,0). X grows to the right, and Y grows downward. OPTIONS All non-conflicting options will be used. If there are any conflicting options, the last one specified will be used. -C (Default) Output comprehensive listing of conditional compilation directives with their associated line numbers and expressions. -c Do not output comprehensive listing (see -C option). -D Output a list of the unique conditional directives used and the number of times each one is used. -d (Default) Do not output conditional directives list (see -D option). -E Output a list of the unique expressions used and the number of times each one is used. -e (Default) Do not output expressions list (see -E option). -L (Default) Output total number of lines of code in the input file. -l Do not output total number of lines of code (see -L option). -T (Default) Output number of lines of conditional compilation logic. -t Do not output number of lines of conditional compilation logic (see -T option). -V (Default) Output McCabe's V(g) and V'(g) for the conditional compilation logic. -v Do not output McCabe's V(g) and V'(g) (see -V option). -o outfile outfile is the file to write the summary report to. If it is not specified, the report is written to STDOUT. -g[p|1|2|4|8|16] graphfile graphfile is the file to write the graphical structure chart to. This is a PostScript file. The options p, 1, 2, 4, 8, and 16 specify what scaling is desired for the graphical output. p designates "page" scaling, where the entire output will be scaled to fit on one 8.5"x11" page. This is the default scale. 1 designates a scaling of .125" square graphical blocks which yields 64x80 (XxY) blocks per page. 2 designates .25" blocks with 32x40 blocks per page. 4 designates .5" blocks with 16x20 blocks per page. 8 designates 1" blocks with 8x10 blocks per page. 16 designates 2" blocks with 4x5 blocks per page. If this option is not used, no graphical output will be generated. EXAMPLES The standard call to cca will specify an input file, use the default flags, and output the summary report to STDOUT: cca -f foo.c or the summary report can be written to a file foo.out: cca -o foo.out -f foo.c The contents of the summary report can be changed by choosing flags explicitly. The following example will print only the listing of unique expressions: cca -cdEltv -f foo.c To generate the graphical structure chart, specify the name of the PostScript file to write to and the scale factor to be used. The following example will scale the chart to fit on one page and print it to the file foo.ps: cca -gp foo.ps -f foo.c SEE ALSO The CCA Software Support Document and CCA User's Manual are distributed with the program. The support document gives an in-depth description of the program and all its components. The user's manual gives an overview of the program and the user interface. AUTHORS Charles Cary, Jason Evans, Sean Jones, and Noah Sutherland, Department of Computer Science, University of Idaho, Moscow, ID 83843. {cary8741|evans911|jone9333|suthe922}@cs.uidaho.edu.