[plt-scheme] Looking for a static analysis tool
Hi all,
[this message is pretty long. I'm sorry for those who might not be
interested.]
I'm currently developing an IDE for our proprietary extensions to Scheme for
true 3D solid modeling based on projective geometry. The IDE is itself
developed in Scheme using MzScheme and its various extensions. [I described
the environment a bit in an earlier post a few weeks ago.]
One of the things missing from the environment right now is a good static
analysis tool. When one develops an animation that can take days to compute,
it is really important to validate the code as much as possible before
starting the computation (usually on a cluster of workstations running PVM).
The analysis tool I am looking for shall meet the following requirements:
1. New types and primitives can be added.
Most of the SGDL primitives generate 3D volumes in some internal form.
I would like to be able to add these primitives to the set of primitives
handled by the analyzer instead of relying on the source code of the
primitives. Also, a volume (and other types as well) shall be considered
a
primitive type of the language.
2. Support for incremental analysis of multi file projects.
Our IDE manages projects composed of source files organized in
packages. Ideally, the analyzer shall be able to analyze each file
separately and then run the global analysis. When a file is modified,
the analysis of the file is done again and the whole global analysis
is run. Hopefully, doing this would be less expensive than
re-analyzing the whole project from scratch.
3. Support for "analysis extensions".
By this, I mean a way to extend the basic analysis framework with new
special forms. These special forms are implemented in the visualizer,
so the code of the corresponding macros is not necessarily available to
the analyzer. Morever, adding extensions to the analyzer has an
important advantage. It can help obtaining more accurate analysis
results.
Often, expanding the macros result in code much harder to analyze or that
gives too conservative approximations. [This results from personal
observations with an CFA-based analyzer run on code generated by an
LALR(1) parser generater I developed.]
4. R5RS Scheme only.
This means that the analyzer must not rely on any
implementation-dependent
extension of Scheme, like a module system, in order to obtain more
accurate
results. [Of course, it is the analyzed code that shall be R5RS
compliant,
not the source code of the analyzer. I hope this was obvious from the
context ;]
I already have a number of ideas regarding most of (if not all) these
requirements. I worked on similar ideas for my PhD dissertation. I can
easily do this work by myself. But I don't want to reinvent the wheel. So if
someone is already working on similar ideas, I am willing to collaborate on
the design and implementation of such a tool (i.e. on the development side
or on more theoretical aspects). This way, we could come up with a better,
more robust tool, with applications in the "real world" ;-) [SGDLstudio will
soon be distributed in many major universities and research centers across
North America, Europe, and even Asia].
I know that MrFlow is coming pretty soon. Unfortunately, I don't know if it
will
meet these requirements. I have not seen a lot of papers on it. And I don't
want to download the code without knowing the design decisions that has
driven its development. [BTW, who is developing it?]
Thanks in advance,
Dominique Boucher, Ph.D.
Senior analyst
SGDL systèmes
http://www.sgdl-sys.com