IT/Production Acceptance/DXR

From MozillaWiki
Jump to navigation Jump to search

What is DXR?

DXR is a two things. First, it’s a method for collecting type, member, statement, macro, etc. information about C++, IDL, and soon JavaScript using Mozilla’s static analysis tools (e.g., Dehydra), a hacked build system, and a bunch of scripts. Second, it’s a web-based tool for mapping this information back onto source code, and allowing users to query and look-up this information.

You can read more about it here.

DXR was written and is being actively developed by David Humphrey.

Bugs

Task List

  • Start doing continuous re-indexing of the tree Basic code in place, need to evolve and deploy
  • Get DXR deployed on a Mozilla server (bug 524725)
  • Switch to using http get for searches Completed.
  • Show Classname:: as part of member sidebar on the right
  • Switch python web cgi to use django
  • Make search results clickable anywhere vs. just on line number
  • When searching of nsFoo, display a little summary of the class bases,derived, members
  • Fix C++ snippets in IDL to use cpp position indicators (# line file)
  • Look for speed-ups in how analysis builds are done
  • Add links for #include header files
  • Add derived:classname::method query Completed.
  • Add ability to do Users:nsIFrameFrame::GetDocShell
  • Make search sidebars links so they can be turned into searches. For example, members sidebar could be a link that takes you to a member:foo query
  • Search UI should encourage using built-in queries, for example, suggesting other keywords (members:) that could be added.
  • When navigating to search result in code for a type or member, sync the source code navigation pane accordingly
  • Lazily keep source code nav and source view in sync. Clicking any stmt should highlight/scroll into view/etc the containing member/class
  • Make source code nav panel sortable (alpha, file order)
  • Make types clickable in source code nav bar, perhaps open the popup to show type info
  • Make types in source code nav bar always clickable, and add icon to take you to decl (should be able to jump to header file from cpp)
  • Add hrefs to links in source code dom nodes on hover
  • Standardize on look and feel of source code nav bar for members and popups, etc (gray, icons, font)
  • Tighten-up look of popup box
  • Add pagination to search results
  • Add base:type search query
  • Searching for filenames should work for fullnames vs. initial portions (e.g., nsGlobal or nsGlobalWindow vs. nsGlobalWindow.cpp)
  • Add support for C source
  • Fix pop-up position so it isn't off the screen
  • Fix Users query so it includes uses of the type directly in addition to uses of derived types (e.g., nsIFoo might have direct users if not an idl type)
  • Change sort order of members in sidebar panel so it is alphabetical
  • Tokenize macros so that embedded macros are clickable (e.g., NS_ProcessNextEvent resolves to NS_ProcessNextEvent_P)
  • Investigate ways to deal with naming collisions. For example, where types, methods, or macros share the same name, sometimes we pick the wrong one for purposes of linkifying (e.g., NS_ProcessNextEvent).
  • Make IDL pages, and other decl locations do a better job at providing links
  • Add more query options to search page (e.g., looking for implementations)
  • Add support for JS source
  • Finish xpidl_xref so all parts of XPIDL are parsed (eg. c++ fragments, typedefs)
  • Add Macro decl locations
  • Add support for Obj-C/C++ source
  • Integrate callgraph: convert to using treehydra, investigate --with-static-checking in mozilla's build sys, include dwitte's callgraph.js and my dxr.js (include "callgraph.js").
  • Add Callees and Callers tabs to all popups keyed on loc
  • Add info to popups that indicates that empty popups are bugs in data/dxr or TODOs (maybe with link to this wiki page or bug filing info).
  • Show compiler warnings
  • Improve post-processing speed, investigate better parallelism Completed.
  • Investigate strategy for increment re-indexing vs. full clobbers
  • Audit web app for security
  • Fix srcdir vs. objdir links (e.g., PRInt32)
  • Collapse Type Info and Bases tabs in popups
  • Convert popup to use fewer/no tabs, and dynamic/tree regions to show data like members, bases, etc.
  • Limit search nav divs to some lower number (12?) and give a link to see the whole thing.
  • Remove .html from source file names (mod_rewrite?)
  • Add support for html/xml, perhaps with links to MDC doc pages
  • Make dxr scripts path agnostic and more portable (python path stuff)
  • Fix ctor html linkifying code so Foo::Foo works properly
  • Figure out how to deal with code being ifdef'ed out (e.g., debug vs. non-debug build)
  • Various fixes to dehydra script
  • Multi-platform indexing
  • Various front-end fixes (e.g., dojo UI stuff)
  • Add gcov support
  • Add build dependency map info - "what do I have to remake if I change something in content/html/document/src?"
  • Add control mechanism for running dxr continuously. Maybe web based? Maybe as part of buildbot with waterfall?
  • Make http://dxr.proximity.on.ca/dxr/mozilla-central/xpcom/ds/nsHashtable.h.html#144/Put work