SolidFX - Fact Extractor for C/C++
The Fact Extractor (SolidFX) is a standalone, non-intrusive framework for static analysis of industry-size projects written in the C and C++ programming languages. SolidFX uses proprietary technology to analyze even the most complex C/C++ code bases efficiently and robustly. SourceFX offers predefined analysis scenarios for:
- reverse engineering C/C++ code;
- detecting potential threats and bugs;
- measuring code quality, maintainability, modularity.
SolidFX supports a wide range of tasks. SolidFX supports most C and C++ dialects and platforms and is able to quickly analyze multi-million line projects, even if the code is incorrect and/or incomplete. The extracted information can be queried at levels ranging from detail information over each line of code to automatic reverse-engineered, full system architectural diagrams.
SolidFX comes with several visualization plug-ins showing diagrams, call-graphs, and tens of quality metrics ranging from individual lines of code to entire subsystems. New plug-ins can be easily added to compute custom quality checks and to interface with third-party tools.
The SolidFX framework provides several tools that can be used together or separately:
The fact extractor
The core of the framework that can parse, type check, and analyze the full C and C++ languages;
Small applications for easy configuration of the fact extractor with settings specific to several compilers (gcc, Visual C++, Kyle C) and platforms (Linux, Windows, Solaris, Mac OS);
The fact database
A scalable database that manages a wide range of static information: syntax, semantics (types), preprocessor, metrics, patterns, and dependency graphs;
Off-the-shelf tools for quick, automated analyses of structural metrics, dependencies, call graphs, class information;
Tools for visual inspection of source code, call and dependency graphs, system diagrams and software metrics.
SolidFX comes in two versions: Professional and Express. The main differences between the two are in the set of features that are available.
- SolidFX Express contains the fact extraction engine and a standard collection of software analysis tools. Intended for users who need a quick and simple access to static information from the fact database and usage of off-the-shelf standard analyses.
- SolidFX Professional offers all the features of the Express version and additional APIs to query, analyze, and extend the fact database. Intended for users who wish to build advanced custom static analyses or fine-grained integration of the SolidFX functionality in existing third-party analysis frameworks.
|Fact extraction engine.|
|XML-based query language for custom analyses.|
|Collection of XML queries for standard investigations (e.g., computation of software metrics such as Cyclomatic Complexity).|
|C++ API access to the fact database for complex analyses and integration with third party analysis frameworks.|
|Analysis applications (FXMetrics, FXUses, FXCall, FXCCheck, FXClass, FXView)|
|GCC and CL compiler proxies for easy integration in the build environment.|
Intended audienceSourceFX addresses several roles within a project:
- Project managers: enables informed decision making for software development, refactoring, migration;
- Software architects: reverse engineer code, detects crosscutting concerns, quality problems, and deficient design code areas;
- Developers: understand code and detects potential problems.
- Decision making support
- Easy-to-understand visual presentations of analysis;
- Documentation and analysis report generation;
- Support what if analysis scenarios;
- Assess system maturity and stability;
- Support in and outsourcing buy/sell decisions.
- Quality improvement
- Measure and monitor software quality;
- Support targeted refactoring and maintenance;
- Detect potential bugs and safety problems in code;
- Check reverse engineered design against source code.
- Cost reduction
- Plan maintenance and migration more effectively;
- Reduce understanding and development time;
- Code faster, cleaner, safer.
Integration in client environment
SolidFX is a non-intrusive framework, easy to integrate in the client environment. SolidFX requires no changes to the existing development process. SolidFX can be installed side-by-side with existing compilers such as Visual Studio or g++, but can also run standalone. Custom analysis engines can be added as plug-ins during a hot integration. There are no development risks associated to removing SolidFX from the client environment.
|Problem||How to perform refactoring activities in a cost-effective and safe manner?|
|Approach||Inspect the reverse engineered system structure. Compute and visualize code duplication and system modularity. Use these facts to plan and execute refactoring scenarios with reduced risks and costs. Iterate the tool-supported refactoring process during the entire product life-cycle.|
|Added value||Support low-cost, low-risk refactoring by providing structural overviews and detail information.|
|Problem||How to improve the system quality and reduce maintenance costs?|
|Approach||Assess the quality of code and architecture by computing several quality metrics. Visualize the metrics correlated with the (reverse engineered) system architecture. Detect weak spots. Understand the interplay of concerns in large, complex code bases at a glance.|
|Added value||Support maintenance by targeting effort where it is most needed.|
|Problem||How do test scenarios cover the software source code stack?|
|Approach||Visualize the test scenario data combined with the (reverse engineered) system architecture. Detect improperly covered areas at a glance. Adapt test scenarios accordingly.|
|Added value||Correlate testing with development in a cost-effective way.|
Please contact us for more detailed information on licensing SolidFX, upgrading and custom quotations.
Tool customization services can be purchased for $ 150 per hour (excl. VAT). This type of support can be used for the development of tool extensions, plug-ins, and integration with third-party tools and with the work environment of the customer.
PC compatible workstation 800MHz CPU, 1GB RAM, 50 GB HDD (depending on the analyzed project). A fast graphics card with 128 MB is recommended. MS Windows NT/2000/XP/Vista operating system. For UNIX-like systems contact us.