|
Feb 17, 2009: Announcement of the Coverity Architecture Library
Application Architecture Data of Over 2,500 Open Source Projects Now Available at Coverity Scan Site
Publicly Available Library to Help Developer Community Optimize Use of Open Source and Learn From Successful Architectures
Each of the supplied diagrams in the Library have been generated using Coverity Architecture Analyzer. The tool uses information gathered during the build of a codebase to create a comprehensive list of interdependencies in the code. These dependencies can be investigated interactively with the Architecture Analyzer desktop application. It can also be used to generate diagrams like the one shown on the right.
This diagram shows a version of the Apache webserver, displayed at the directory level, with all dependencies between files rolled up into the file's directory. Some minor directories have been omitted to simplify the diagram. A subset of the dependencies collected from Apache's server/main.c are shown below.
The layout of the diagram is explained in more detail on the Introduction page. Use the tabs above to browse the full collection of diagrams for a wide variety of C and C++ open source projects, By Category or By Name.
Introduction to the Coverity Architecture Library
The Architecture Library includes one or more block diagrams and the associated architecture data files that have been generated for each of over 2,500 open source projects. The images shown in this introduction are for 'Acunia Jam'.
Each block in the diagram represents a summary of all of the cross reference information for a set of functions, variables, structures, and #defines. In the smaller diagrams, consolidation is at the directory level. In the larger diagrams, each block represents one source file. Using the Coverity Architecture Analyzer application, the user can interactively manipulate the diagrams, moving blocks, rearranging layering, or consolidating files together with other logically associated files.
Blocks in the diagram are ordered based on the number of references between blocks. The blocks on the bottom of the diagram are those that the upper blocks build on. This normally results in the lower layers consisting of include files and library functions.
When a project's source files are all in one directory, the directory level diagram will show the project directory, and a block for the system include file directories. Larger projects will show a block for each source directory. In the file level diagrams, system include files have been omitted to save space.
The majority of relationships between files flow downward on the diagrams. The reference arrows pointing downward have been omitted for the sake of readability. Upwards arrows are relationships that are in the opposite direction to most control flow in the program. They can highlight callback mechanisms, circular data structure definitions, circular code references, or conditional compilation, such as where an #ifdef in the lower file is controlled by a #define in a higher file.
Step by step instructions to generate diagrams
- Request a copy of the Architecture Analyzer application. The program is a Java application, and can be run on Windows, Linux, OSX, and other platforms with Java support. 30 day trial licenses are available to anyone, and open source commiters may request a 1 year, renewable license. Please send requests via the 'Submit a Request' tab.
- The following instructions describe the process used to create the diagrams published in the Architecture Library. Use these steps to understand the framework of the process, then feel free to explore the many different settings that can be configured while working with the CVA files.
- Download one or more CVA files from the Architecture Library for open source projects you wish to explore in detail, or create a custom architecture description, or diagrams for.
- You will receive a license file by email. Place it in the application directory.
- In the Architecture Analyzer application, select File->New.
- In the CVA file input field, specify one of the CVA files you downloaded.
- Set the model to 'Linked'.
- Press 'Next'.
- On the Pre-transformations page, add a transformation from '/usr/bulk/*' to '/usr/{1}'. (The CVA files retain full paths for every file touched in the build process, and Pre-transformations allow you to hide irrelevant path information so it does not distract while working with the dataset.)
- Press 'Next'.
- On the Excludes page, add an exclusion depending on whether you wish to regenerate the Dir or File diagram. For the Dir diagram, exclude 'home/coverity/*' (internal build data that aren't part of the project itself) for the File diagram, we'll exclude everything except the build directory, to keep out the system and library include files - '!usr/bulk/pkgsrc/*' (The exclamation inverts the expression, so we exclude everything except the one relevant path) NOTE: There is no '/' before these exclude expressions.
- There are more options on the next page, but they are not changed for these diagrams, so hit 'Finish'.
- The architecture data is now loaded. You can explore the various Perspectives with the icons down the left edge of the window. To generate diagrams, select the Architecture Perspective (4th icon from the top).
- Select the 'Create diagram' icon
- Leave the radio button on 'Initialize diagram based on existing code', and click 'Next'.
- Set 'Depth of content' to 'All'. For File diagrams, check the 'Include files' checkbox.
- Click 'Finish'.
- Display of arrows can be controlled by the settings in the Options menu, at the top right of the diagram. Images can be saved by selection 'Options->Export'.
- Each block can be repositioned, deleted, grouped, or subsumed into another block by dragging it, and using the options on the context menu (right mouse button).
- Click on any arrow to see a list of dependencies. Click on any block to see a list of elements in that block.
- If you create a diagram and wish to have it included in the Architecture Library, releasing it under the Creative Commons Attribution license, please send it in via the 'Submit a Request' tab.
Click tabs to swap between content that is broken into logical sections.
All diagrams and CVA files published as part of the Architecture Library are released under a Creative Commons license.  Coverity Architecture Library by Coverity Inc. is licensed under a Creative Commons Attribution 3.0 United States License.
If you have any questions or would like to suggest additional projects to be added, please use the form on the 'Submit a Request' tab.
|
|
| |
|
| |
|
|
| |
“COVERITY'S
STATIC SOURCE CODE ANALYSIS HAS PROVEN TO BE AN EFFECTIVE STEP TOWARDS
FURTHERING THE QUALITY AND SECURITY OF LINUX.” |
|
| |
|
|
|
| |
|
|
| |
ANDREW MORTON,
LEAD KERNEL MAINTAINER |
|
| |
|
|
|
| |
|
| |
| |
| |
|
| |
| |
|
| |
| |
|
| |
| |
|
| |
| |
|
| |
| |
|
| |
| |
|
| |
| |
| |
Coverity detects a security hole in X Windows that allows any user with a login to gain root privileges |
|
|
| |
| |
| |
Amanda releases major version (2.5) of the popular backup and recovery software with milestone of 0 Coverity defects |
|
|
| |
| |
|
| |
| |
|
| |
| |
|
| |
|
|
|