Fact Extraction Tool Chain wiki
Welcome to the Fetch wiki, a documentation and development repository for the Fact Extraction Tool CHain, a tool chain for software analysis. Fetch consists of open-source tools only, targetting the exploration of large C/C++/Java software systems for (i) dependency analysis; (ii) pattern detection; (iii) visualization; (iv) metric calculation and similar types of static analysis.
Fetch consists of the following tools:
- Red Hat SourceNavigator: a multilanguage IDE with parsing support
- pmccabe: McCabe-style function complexity and line counting for C and C++ written by Paul Bame.
- JavaNCSS: A Source Measurement Suite for Java written by Chr. Clemens Lee.
- A set of home-made parser extensions:
- IEMetrics: a metric engine for functions/methods
- namespaceScript: a script to track namespaces and their scopes. Extended to also track usage declarations (both for namespaces and classes), as well as the scope of classes.
- snavtofamix: mines the output of the above tools, combined with home-made parser extensions, and generates a FAMIX model in Case Data Interchange Format (CDIF).
- CDIF2RSF: a set of translation scripts from CDIF to a Rigi Standard Format (RSF) style fact base.
- Crocopat: a graph query engine written by Dirk Beyer and Andreas Noack.
- Guess: a graph exploration system written by Eytan Adar.
- RSF2MSE: a translation script from our RSF format to the MSE exchange format of the Moose environment.
- RSF2GXL: a translation script from our RSF format to the GXL exchange format written by Falko Menge.
Pictures tell more than thousand words ...
The latest Fetch release is Fetch 0.7.5, released on August 21st, 2008. This release enables Fetch to be ran with command line options, a.o. for selecting the metric tool to be used, as well as to specify the output directory of models and log files.
 Release Schedule
In the shorter term, we are working on a 0.7.6 release that will include:
- Fetch acceptance test suite executing the most common usage scenarios (DONE)
- End line metrics for methods and functions.
- Model creation based on a list of input source files (e.g. in complex environments with multiple roots).
- 100% equal functionality on Cygwin/Windows.
In the longer term, we are currently working towards release 0.8, in which we will include (i) incremental parsing; and (ii) eager reference resolution through lookup tables.
There are several documentation sources.
- Skim through the preliminary introduction slides for an overview of the goals and focus of this initiative (latest Grascomp PDF, previous PDF).
- Documented Use Cases
- An Installation guide.
- A FAQ list.
- Documentation for the individual components can be found on their respective websites.
- Source Navigator has a User's Guide.
- The Crocopat 2 Introduction and Reference Manual introduces the possibilities of the tool and the associated rml format.
- The Guess manual describes the .gdf graph file format, the Guess environment as well as the possibilities with the built-in jython script environment.
- Metamodel of Fetch's abstract model (in RSF format) and the corresponding RSFFileFormat
- An overview of the included scripts.
 Developers, Developers, Developers
- [Overview] of pipes and filters architecture.
- This wiki documents the development progress (e.g., Feature list, Issues list and todo lists) as well as Development details.
- The main developers responsible for snavtofamix, CDIF2RSF and the tool chain integration are Bart Van Rompaey and Bart Du Bois, both researchers at the Lab On REengineering at the University of Antwerp.
- Matthias Ernest Rieger used Perl magic to complement the Source Navigator parser with additional information.
- Manuel Breugelmans is working on test smell detection scripts and contributed to various chain scripts. His final system (with front end in GUESS) is here.
- Some statistics on our Snavtofamix development activities are provided on Ohloh.
- Documentation about the location of Fetch artifacts on LORE servers and release procedures are described here (password protected).
 Fetch related publications
- Bart Van Rompaey and Serge Demeyer. Establishing Traceability Links between Unit Test Cases and Units under Test. 13th European Conference on Software Maintenance and Reengineering (CSMR2009). accepted.
- Bram Adams, Herman Tromp, Wolfgang De Meuter and Ahmed E. Hassan. Can we Refactor Conditional Compilation into Aspects? 8th International Conference on Aspect-Oriented Software Development (AOSD2009). accepted.
- Bart Van Rompaey, Bart Du Bois, Serge Demeyer, John Pleunis, Ron Putman, Karel Meijfroidt, Juan Duenas and Boni Garcia. SERIOUS: Software Evolution, Refactoring, Improvement of Operational & Usable System. 13th European Conference on Software Maintenance and Reengineering (CSMR2009), European Projects Track. accepted.
- Bart Van Rompaey and Serge Demeyer. Estimation of Test Code Changes using Historical Release Data. In Proceedings of the 15th Working Conference on Reverse Engineering (WCRE2008), pp 269-278, 2008.
- Bart Van Rompaey and Serge Demeyer. Exploring the Composition of Unit Test Suites. 4th International ERCIM Workshop on Software Evolution and Evolvability, co-located with the IEEE/ACM International Conference on Automated Software Engineering, L'Aquila, Italy, September 2008.
- Manuel Breugelmans and Bart Van Rompaey. TestQ: Exploring Structural and Maintenance Characteristics of Unit Test Suites. International Workshop on Advanced Software Development Tools and Techniques (WASDeTT), co-located with the European Conference on Object-Oriented Programming, July 2008.
- Bart Du Bois, Bart Van Rompaey, Karel Meijfroidt and Erik Suijs. Supporting Reengineering Scenarios with FETCH: an Experience Report. In Electronic Communications of the EASST Volume 8: ERCIM Symposium on Software Evolution, 8(2007)
This work has been sponsored by Eureka Σ 2023 Programme; under grants of the ITEA project if04032 entitled Software Evolution, Refactoring, Improvement of Operational Systems