Automated Analyses and Rewrites Dehydra and Squash are now mature enough to assist with mundane tasks like renames and various kinds of tedious code inspection. If you ever suspect that part of the Mozilla hacking you are doing could be done by a tool, contact me to see if I have a suitable tool for [...]
Posted in dehydra on April 23rd, 2007 Comments Off
My last attempt at visualizing the Mozilla class hierarchy ended up being way too slow to be useful. So I based my second attempt on using a different tree layout. After quite a few scalability optimizations, the graphing performance is now bearable. This class browser uses the canvas tag to draw the pretty boxes & [...]
Posted in dehydra on April 4th, 2007 2 Comments »
Most static analysis tools don’t let you script them. Oink is an example of that. Adding a new analysis requires extending an existing tool with a feature which may not fit in smoothly or writing a new tool in C++ with the corresponding boilerplate to handle command-line arguments, etc. At the other extreme lives UNO [...]
Squash If you are working on any C++ refactoring, especially if it involves function calls, spans multiple files or feels like you need a compiler in your head to help you, drop me a note to see if squash can help. Squash provides a great deal of control over the refactoring process because it is [...]
Posted in dehydra on March 7th, 2007 2 Comments »
Dehydra does a form of basic symbolic execution now. It’s enough to avoid the unfeasable branches. It enabled me to add known_zero() and known_notzero() so dehydra supports all of the functions documented in the UNO paper. I believe dehydra can now match all of the features of uno’s DSL. Download it here. See malloc.js for [...]
A Creature so Fierce… I’ve been wrestling with control flow graphs like this. I eliminated those pesky “empty” nodes found in the previous incarnations, improved branching to track conditions and realized that what I’m really doing is developing a tool to bite off the excessive necks and heads (otherwise known as edges and basic blocks) [...]
Posted in dehydra on February 7th, 2007 1 Comment »
It is difficult to follow error messages from control-flow analyzing tools. After struggling to visualize what I was debugging, I added a a native JavaScript function to graph the CFG and display the current path through it. Now debugging control flow errors is as easy as looking at a (sometimes giant) picture of this function. [...]
Posted in dehydra on February 1st, 2007 Comments Off
Two weeks ago I finally listened to Graydon and spent some quality time playing with UNO and reading the paper on it. UNO provides a simple DSL language to traverse interesting parts of the C abstract syntax tree. It simplifies the AST down to the bare minimum of variable and function call info and iterates [...]