June 17, 2003

My contribution to free software

Today a beta release containing my contribution to the free software movement was released. I made a feature I personally find very useful for the JDEE project, which is the Java Development Environment for Emacs. The feature is a call cross-referencer that will build up a database of all the method calls in your program, and allow you to find all the places that call a particular function. You can also find uncalled functions, and display a call-tree that displays several levels of who-calls-who information. This is enormously useful for figuring out the logic of a program. Of course the information is incomplete, because you cannot factor in calling functions through reflection, so the user must keep this in mind.

I started this project before my daughters were born, since I knew my free time was soon to run out. I strongly believe in free software, and I personally have benefitted from it greatly. It was time to give something back. So I whipped up this thing in about a week, and through subsequent weeks and months rewrote parts, expanded parts, and increased the functionality a bit. I wound up learning quite a bit about this sort of thing. Basically it works by parsing Java class files in emacs itself (not the typical use of emacs), and creating a call database, which is cached and loaded on a package-by-package basis. It was more complicated than I first thought, with interfaces and inheritance muddying the waters of what it or what is not a call to a particular method. But largely it's been in the JDEE's cvs code unchanged for the last few months. Now it's seen the light of day, and I get to field everyone's problems with it. I just learned that my reliance on UTF-8 conversion may have been foolish, since xemacs does not always come with MULE (the multilanguage extention).

To check it out yourself, go to the JDEE webpage (see the link above), and download the latest version (2.3.3 beta or above).

Posted by ahyatt at June 17, 2003 10:06 PM
Comments
Post a comment














To post a comment, please type in the number of hours in a day (this is to help protect this site from spam by ensuring you are a human):