tools useful for A-A-P
The intention for A-A-P is to use existing tools as much as possible. To find
out which tools can be used this overview has been compiled.
Some tools cannot be used directly, but function as an example or can be
invoked by A-A-P (e.g., commercial tools and programs which are not portable).
Unless noted otherwise, tools are open-source.
If you find a tool that would be useful for A-A-P but is not listed here, or
when information is incorrect, send a message to
Bram AT a-a-p.org.
Note: this list is not intended to be complete. Information that is
irrelevant for A-A-P is omitted.
To be able to find your way in a project, you need to know where functions
are defined, where variables are used and where a class is documented.
To make this work fast, a database of identifiers needs to be created.
Tools to explore a file system or the internet are not included here.
Tools to manually add files to a project are considered part of an
The browser of A-A-P has these demands:
- Works for every language
- Is portable to many systems
- Works fast
- Uses multiple database files
- Does not create huge files
It might be that no existing tools is found that fulfills all these
requirements. In that case the listed tools can be used as an example or
perhaps as a starting point.
- GNU ID-utils
Works for every language.
Doesn't include info about the context of words.
Tends to create huge database files.
Exists in several versions. Exuberant Ctags is open-source and handles
many languages, therefore it is the most interesting candidate, also
because it includes info about where a word is used.
Only specifies where a word is defined, not where it is used.
Handles line inserts/deletions by using a search pattern.
The code analyzing should be useful for A-A-P.
Mainly for C and C++ code.
Both definitions and references to a word.
Has a terminal interface. Can also be integrated in editors (support
present in Emacs and Vim).
Open source (although there used to be a commercial version).
Code browser like cscope. Currently for C code only.
Does not appear to be more useful than Cscope.
C program cross referencing and documentation. Not for C++.
Appears to be of limited use for A-A-P.
Similar to ctags, with a few different languages supported.
Perhaps some language-specific parsing can be used for A-A-P.
Lists functions and function calls for C and C++ in various ways.
For analyzing and browsing C, C++, Java, Fortran and Ada.
Commercial. Includes an IDE. Comprehensive program.
Can be used for ideas.
Produces a function call graph for C programs.
Exists in several versions.
Indexing and query system for Unix. Looks more like a search engine.
Does not appear to understand context of words.
Produces multiple files in each directory.
There is also a version for use on the web: WebGlimpse.
Should provide ideas how to maintain the database.
Emacs code browser. Appears to be of limited use, since it is
Emacs O-O class browser. Works for many languages. Implemented in C++,
Java and Python; or is it elisp?
Perhaps the way code is analyzed could be interesting.
Cross referencer for use in a web browser.
Unclear how useful this is.