Searchfox

Note: This post is geared towards Mozilla developers.

I would like to announce a new tool I’ve been working on for source code searching called Searchfox (http://searchfox.org). If you use MXR or DXR, I recommend you try Searchfox. Here are some of the benefits:

  • Besides C++ code, Searchfox indexes JavaScript, XBL, and IDL. You can search by property name and, in some cases, qualified property name (e.g., SessionStore.duplicateTab). IDL files link to both JS and C++ implementations and users.

    idl-1

    idl-2

    sessionstore

  • Blame in Searchfox is fast and easy. Every file includes blame information in a gray bar on the left side, and walking through the blame history takes only one click per revision. Each file in the blame chain downloads quickly, and blame goes all the way back to 1998. Say goodbye to the frustration of reaching “Free the (distributed) Lizard” at hg.mozilla.org and finding that GitHub blame times out.

    blame-3

    blame-2

  • Searchfox jumps to the actual definition of methods rather than the header file declaration.
  • C++ template handling is a little better, files download a little quicker, and other smaller improvements.

If you would like to try out Searchfox, I recommend that you change your keyword searches to point to it. Otherwise it’s too easy to forget and revert to muscle memory.

Keyword search:
http://searchfox.org/mozilla-central/search?q=%s

Keyword search to find a particular file:
http://searchfox.org/mozilla-central/search?q=&path=%s

Some help on using Searchfox can be found at http://searchfox.org.

Also, here are some reasons not to use Searchfox:

  • You frequently look at repositories besides mozilla-central. Searchfox only handles m-c.
  • You like MXR’s ability to sorta index all platforms. Like DXR, Searchfox uses a clang plugin that only analyzes Linux64 debug builds. I’m very eager to fix this problem, but it will take some time. Full-text search finds everything, of course.
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a comment