Unified CodeCounter (UCC): Comprehensive Tool for Software Code Counting and Differencing
The Unified CodeCounter (UCC) is a robust tool designed for the consistent counting of software lines of code (SLOC) and comparability between different baselines. Developed by researchers from The Aerospace Corporation and the University of Southern California, UCC addresses common issues with current code counters by providing standardized methods, support for multiple programming languages, and the ability to determine code changes through powerful differencing functionality. Its platform-independent nature and user-friendly interface make it a valuable asset for accurate software project analysis.
Unified CodeCounter (UCC): Comprehensive Tool for Software Code Counting and Differencing
E N D
Presentation Transcript
Unified CodeCounter (UCC) with Differencing Functionality Marilyn Sperka1, Vu Nguyen2, Ryan Pfeiffer1 1 The Aerospace Corporation 2 University of Southern California 24th International Forum on COCOMO 10/03/2009
What Does a Code Counter Do? • Determines software size • Leads to more reliable metrics: • Cost • Schedule • Productivity • Valuable analysis of existing projects • Better predictions for new software systems cost and schedule
Don’t We Do That Already? • Many code counters available now • Various problems: • Some are proprietary, others are public domain • Inconsistent counting rules • May or may not be maintained • Big problem: they count differently • Inconsistent or biased conclusions
Why Develop Yet Another? • NRO Cost Group (NCG) needed a tool to: • Count software lines of code • Consistently • With documented standards • Ability to easily add new languages • Support and maintenance • Compare different baselines of software • Determine addition, modification, deletion • Identify duplicate files • Determine complexity
How Did It Get Started? • USC wanted real-world projects for students • USC CSSE: University of Southern California Center for Systems and Software Engineering • Non-biased, industry-respected • Aerospace management recognized the potential of a USC/Aerospace team • A collection of existing code counting tools was donated to USC • Northrop Grumman, TRW, Boeing
Where Is It Now? • CodeCount is developed and maintained at USC • Graduate students get credit for directed research while interning • Code counters are continuously being checked and updated by USC students • New languages are added every semester • Aerospace provides validation and verification • Active involvement in class projects
Latest Release: UCC • The latest release of UCC unifies the code counters and differencing functions into a single application • UCC = Unified CodeCounter • Common interface • Easy to use • Consistent output reports
Links • http://sunset.usc.edu/research/CODECOUNT/ • Open source code and documentation • http://sunset.usc.edu/csse/affiliate/private/codecount.html • Beta release code to affiliates • http://brown.usc.edu:8080/ • Wiki information • nguyenvu@usc.edu • To report bugs or make suggestions
Features • Platform independent • Command line interface • Modes: Code counting only or counting plus differencing • Counts multiple files and languages in a single pass • Output reports • Robust processing • Options to improve performance • Error log
Code Counting • Counts logical and physical SLOC, comments, and blank lines • Counts multiple languages in one run • Creates separate output reports for each language • Also creates grand total report • Identifies duplicate files • Reports those counts separately
Differencing • Compares two baselines of files • Counts each same as in code counting • Matches files between baselines • Compares the code and counts: • SLOC added to second baseline • SLOC deleted from first baseline • SLOC modified in second baseline • SLOC unmodified between baselines
Differencing, Continued • Reports on files in one baseline but not the other • Identifies duplicate files in each baseline • Reports counts separately • Options for performance enhancement
Languages Supported Code Counting: Differencing: C/C++ C# Java SQL Ada Perl ASP • JSP • HTML • CSS • JavaScript • VB • VBScript • PhP • C/C++ • C# • Java • SQL • Ada • Perl • ASP • JSP • HTML • CSS • JavaScript • VB • VBScript Code counters are developed first, then differencing is added
Output Reports • A variety of reports are output • Counting, differencing, duplicates, complexity, errors • Users can customize their reports • Several .csv reports • Load directly into Excel
Current Projects • Code counters and differencing for Python, Unix shell script, Ruby, ColdFusion, Fortran, PhP, X-Midas, Assembly, COBOL • Add GUI front end interface • Improve complexity counting