Donate Share

C and C++ Code Counter

File Release Notes and Changelog

Release Name: 3.pre84

Notes: README.TXT for CCCC version 3.0 =============================== This is a new version of the program CCCC (C and C++ Code Counter). This program exists to analyze and report measurements on source code in C, C++ and Java. The languages Ada83 and Ada95, which were supported in previous versions are presently not supported, although support for these languages may be restored at some time in the future if there is demonstrable demand. The Internet site for CCCC development is: http://cccc.sourceforge.net (hosting kindly donated by sourceforge.net to whom I am grateful). CCCC is a command line tool, originally implemented for Linux and other POSIX-style platforms, but also buildable on the Win32 platform. Files to be analyzed are listed (typically on the command line, although support does exist for the list of files to be read from standard input. The program analyzes the files and generates a one or more reports in HTML format on the content. This distribution is intended to be a single package containing everything which is required to compile and install CCCC on either a POSIX or Win32 platform. Whereas previous distributions contained only a single directory, containing the source code of CCCC, this distribution is divided into a number of subdirectories, with the following contents: * A full distribution of the Purdue Compiler Construction Toolset (PCCTS) by Terence Parr and others, now maintained by Tom Moog of Polhode Inc. PCCTS is required to compile CCCC: in the past the distribution has relied on the existence of a PCCTS package on the compilation platform, while this distribution chooses to include it as part of CCCC's own package. * The source of a new version of CCCC, which I hope will turn out to be more efficient, accurate and useful than previous versions, although it is very similar in spirit and interface. * The source of an accessory program called CcccDevStudioAddIn.dll which provides integration between the command line CCCC program and the Microsoft Visual Studio IDE (version 5.0 or 6.0). * A directory of minimal test cases for the command line CCCC tool. * Miscellaneous makefiles and Microsoft Visual Studio workspace and project files to support building, testing and installing the software under POSIX and Win32. The pccts directory contains software for which I am not the original author. The software has been placed in the public domain, with the expectation that appropriate credit will be given for use. As of version 3.pre63, the recommended way of building the software is by using the BAT and SH scripts in the top directory of the distribution as appropriate for your platform. On Win32, the script build_w32vc.bat builds the software with Microsoft Visual C++ version 5 or 6 (locations within the script may need to be modified according to which you have and whether it is installed at the default position in the filesystem). Thee is also a script to build the software using the Borland command line C++ compiler, although the version this builds presently crashes during the execution of the unit tests in the distribution (patches to fix this would be gratefully received). On Linux and similar platforms the shell script build_posixgcc.sh should work. If you wish to try the Visual Studio integration, there are some additional steps to perform. Within Visual Studio, select menu option "Tools/Customize", then click on the "Macros and AddIns" tab. Within this control, click on the "Browse" button, change the file type from "*.dsm" to "*.dll", browse to the directory C:\Program Files\CCCC, and select the CcccDevStudioAddIn.dll file before pressing "OK". This should cause Visual Studio to load the add-in, and a tool bar should appear with four different icons containing the text "C4" and six white icons. The fourth of the "C4" icons has a device like a steering wheel on it and is used to configure the add-in. Press this icon and a dialog box should appear containing 8 strings, of which the first should read "C:\Program Files\CCCC\CCCC.EXE" and the next should contain some path to Internet Explorer (IEXPLORE.EXE). Verify that the path to IE is valid (or substitute a path to Netscape, Mozilla, Opera or any other HTML browser according to your tastes). The add-in can now be used to run CCCC on either the current file (the "C4" icon with a "f" subscript), all files in the current active project ("C4" with a "p" subscript), or all files in any project in the current workspace ("C4" with a "w" subscript). The add-in can also have up to 6 other commands set in the configuration dialog defined above, which will be bound to the six blank icons on the toolbar. Each command will run in character mode and standard output from each should be captured and redirected to the "Macros" tab in the Visual Studio Output window. This may be useful for programs which generate messages in the same format as the Visual Studio compiler error messages or Find in Files, as conformance to this format allows Visual Studio to implement the convenient "jump to source line" behaviour. I have on my list of issues for CCCC to convert the parser syntax error messages to this format, but it hasn't happened yet. The add-in is experimental at this stage. I am aware of some issues with projects in locations with spaces in the path, and I have also found that the logic I am using to deduce the home directories of .dsp and .dsw files is not always correct. As well as the addin, the current version includes a directory which contains a script to build a wizard-style installer for the program under Win32. Binary releases of the software made using this directory may be released in the near future. The binary release provides Windows start menu access to a DOS prompt set up with an environment to enable CCCC to be run easily, and also provides a shortcut to the HTML documentation. The installer can be built from the supplied scripts using the splendid free Inno Setup and Extensions packages by Martin Laan (Inno Setup) and Jordan Russell (extensions), available from http://www.jrsoftware.org. Previous versions of CCCC have been released like PCCTS into the public domain with no restrictions, other than the pious hope that should anyone base a derivative work on it I will be given due credit. I have considered applying the GNU Public License, not because of any strong adherence to the GPL philosophy so much as because GPL is something of a standard for free software and it may ease the work of software collators for people to adhere to the standard. I would be interested in hearing from such people whether GPL would or would not make CCCC a more likely candidate for inclusion in distributions. CCCC was originally developed as a proof-of-concept tool for some ideas relating to software metrics which I was investigating as an academic research project. I have now completed the project and been awarded my PhD. I am still getting a steady stream of enquiries about CCCC, and I am keen to put out a high quality reference version of the software as a way of thanking the people who have assisted me by participating in the various stages of my research. The research project is described at http://www.chs.ecu.edu.au/~tlittlef. This page includes a link to a downloadable PDF version of the PhD thesis. I am grateful to a number of people for assistance on this project, including Terence Parr and his co-workers, and Tom Moog for the development and ongoing maintenance of the excellent PCCTS tool; my academic supervisor, Dr Thomas O'Neill; a number of developers who have contributed source patches; and many people who have mailed me with constructive suggestions or merely to confirm that they were using the tool. Feedback on the value or otherwise of CCCC is always welcome, and will help me to decide how much effort I put into maintaining it over the coming months and years. Tim Littlefair (tim_littlefair@hotmail.com) updated August 2003 -------------- This and future distributions of CCCC and related tools should be available for the forseeable future from http://cccc.sourceforge.net


Changes: CHANGE LOG FOR CCCC This change log was begun at the suggestion of Kenneth H. Cox. A number of early beta releases were done for CCCC in 1999, but this file only tracks changes after the first public beta release of 2000, which was version 3.pre36. version 3.pre37 Fixed problems prn1 and prn2 reported by Kenneth H. Cox. These related to the processing of preprocessor commands. Regression tests prn1.cc and prn2.cc added to the distribution. Information added to the "About CCCC" section of the generated report to nag people to participate in TJL's research project. Change log added version 3.pre40 Many changes relating to making code compile using Borland CBuilder. Changes include: - modified pccts/dlg/output.c to generate code in CLexer.cpp and CParser.cpp which CBuilder can compile - changed tracein(char*), traceout(char*) to tracein(const char*), traceout (const char*) to eliminate CBuilder warning - modified flag buffer length in cccc_utl.cc to eliminate overrun write detected by CodeGuard - fixed nasty bug in Win32 filename globbing logic which would have caused files with directories in their names not to be found - added support for CBuilder to makefile and ccccdist.dsw NB Making the code compile under CBuilder has been done as an exercise in portability, and has helped identify real problems in the code which can be addressed and will improve quality on all platforms. The CBuilder port is not recommended as a production platform at this time. version 3.pre48 This version was the latest packaged version at SourceForge for over a year but I note to my shame that I didn't record any changes against it. version 3.pre54 Relative to 3.pre48, this version has the following features: redid build technology to rely on .bat files under win32 rather than shipping a prebuilt binary of GNU make; added build technology to build using Borland command line C++ compiler (this version crashes in some of the unit tests at present, patches to prevent this would be very welcome); fixed minor syntax problems to enable the code to compile under GCC 2.95.3 (3.pre48 was released when EGCS 2.91.66 was current). version 3.pre55 Various changes to accommodate GCC 3.0.2, including: hacking in the PCCTS source code to prevent #endif directives having trailing information (commented or otherwise); fixing the type of an iterator to std::vector; introducing a using directive from strstream. When GCC 2.95 becomes old enough that I don't need to support it any more I will need to modify the strstream stuff to use stringstream instead. version 3.pre63 Added support for a setup program for Win32 using Inno Setup. Fixed a lot of parse issues with the Java parser. All example programs in the Sun Java tutorial now parse without (mentioning) errors. Modified the support URLs in various places to point to the email address of the SourceForge cccc-users list rather than my own email address. version 3.pre81 Fixed the diff.bat script to reflect the true outcome of the comparison. Made cccc_met.cc round down to eliminate a difference in the output on prn14. Added XML format output. Fixed command line environment for Windows XP. Modified URLs to research project to reflect new naming at ecu.edu.au. version 3.pre82 Implemented workaround for prn16. This was a problem reported by Colin Watson, giving different test case output on different architectures. The problem turns out to be due to unexpected (and so far unexplained) actions being invoked from the parser, the workaround consists of filtering the record_XXXXXX_extent functions so that they take no action if parameters which are expected to be non-empty strings turn out to be empty. This change has modified the expected output for many of the test cases: on inspection the new behaviour appears to be at least as valid in each case, however users should be aware that this fix changes CCCC's opinion on what is a module to exclude the names of types which only appear in parameter lists. version 3.pre84 Recoded use of strstreams to use stringstreams instead and eliminate warnings with GCC 3.2. Added prn16 into list of tests which get executed and corrected reference output files.