Update on DXR work

As I wrote previously, I’ve switched to DXR work for the summer, and have been making some good progress over the past month.  I wanted to show you some of the things I’ve done, and where I’m going in the coming weeks.

Much of my work thus far has been a backend rewrite.  This was long overdue and somewhat painful, but has enabled me to start fixing bugs and adding new features really easily.  We’ve setup a DXR instance at Mozilla, which you can find at http://dxr.mozilla.org.  I’ve also put my Dehydra/JSHydra debugging tool there, too (see http://dxr.mozilla.org/viewsource).  Note: not all of the features I’ll be discussing below are installed on dxr.mozilla.org yet, but they will be soon.

I’ve been fixing things in the UI, and starting to layer new kinds of data into the index.  The first was to add compiler warnings.  You can now search the warnings using keywords and optionally limiting to certain paths:

Search for Warnings

The more common use of this warning info is encountering it within the source while looking at a piece of code.  Warnings appear with an ‘!’ icon beside them, and hovering over the line shows the warning text.  Here’s an example:

Warnings in Source

Another feature I’ve had numerous requests for, and is now implemented, is source code navigation aids. When you are in a large file, and looking at line 2456, it would be nice to know that this line is part of Foo::Bar(), and the signature of Bar(). Here’s what it looks like:

Navigation Sync

Notice that AddRequest is highlighted in the sidebar, and a light-blue signature bar has appeared at the top of the source. These happen as you move your mouse, depending on the line, and disappear on their own.

I’m now moving on to improve/replace the current source info popup. I haven’t decided whether to use an improved popup, add another panel to the left sidebar, or do something with inline expanding divs. The way Flickr’s new popup works is one way I could go:

Improved popup idea for DXR

The inline expanding divs might work like this:

I’m going to spend another week or two on UI fixes before moving on to data analysis fixes and index improvements (there are some great build system changes coming soon that are going to make this easier–hello xpidl.py, I’m looking at you!).  If you have UI input, please give it to me soon.  Meanwhile, the fearless Joshua Cranmer, my lone and valued contributor, is working on making DXR generalized for projects other than Mozilla.  I hope to integrate some of his build/index changes coming up.

More to come soon!

This entry was posted in CDOT, DXR, Mozilla, Mozilla Education, Seneca. Bookmark the permalink. Both comments and trackbacks are currently closed.

4 Comments

  1. jonathan
    Posted August 6, 2010 at 3:28 pm | Permalink

    That’s great! Any chance you can set up an instance of it for comm-central as well? There’s a lot of legacy code in there that would be much easier to navigate with such aids.

  2. Colby Russell
    Posted August 6, 2010 at 7:08 pm | Permalink

    When you are in a large file, and looking at line 2456, it would be nice to know that this line is part of Foo::Bar(), and the signature of Bar(). … These happen as you move your mouse, depending on the line, and disappear on their own.

    You shouldn’t have gone through the effort; there can only be one on-screen function body whose signature isn’t already visible.

  3. Posted August 6, 2010 at 7:45 pm | Permalink

    woooooooooo!

  4. Posted August 7, 2010 at 6:13 am | Permalink

    Nice to see that dxr is using the dojotoolkit!