[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [ANNOUNCE] Code checking tree / xen-checker-queue.hg



Hi all,

I've been working on-and-off on applying various forms of static checking to 
the Xen tree.  All the stuff I'm doing is based on open source - the 
Linux "sparse" checker, "splint", the Linux coding style checker, etc.  The 
motivation for this work is that the available Free code checkers are 
becoming rather powerful; sparse in particular is quite a pragmatic solution 
written by Torvalds for checking the Linux source tree and has regularly 
found real bugs since its introduction.  Using static checkers is perhaps not 
as low-effort as switching on compiler warnings but has the potential to 
detect rather higher-level errors such as locking bugs, incorrect address 
space accesses, unchecked pointer usage, etc.

Eventually I hope this to be useful in rooting out unknown bugs and corner 
cases in the Xen tree itself; for now I think a more useful and realistic 
goal would be to enhance the process of patch review, both for maintainers 
and for code originators, by making certain classes of problems quicker and 
easier to spot.

I'm posting here to make people aware of the work that is going on and invite 
interested parties to make comments and suggestions or to set up some kind of 
collaborative work - patches and suggestions are very welcome at this point 
and anybody who is interested in being involved at any level should get in 
touch with me at their leisure.

A short digression: another avenue we might want to persue is submitting the 
Xen codebase is to look at the www.coverity.com product, to which open source 
projects may be submitted for analysis.  I'd be happy to try to take this 
forward if the core developers are interested.  However, I still think it's 
worth having an open suite of basic static checking tools that anyone can run 
against their patches for immediate feedback.

My public mq tree is at: http://xenbits.xensource.com/maw/xen-checker-queue.hg

I started out doing this in an ordinary Mercurial repository but have since 
switched to using the Mercurial Queues extension 
(http://www.selenic.com/mercurial/wiki/index.cgi/MqExtension) so you'll want 
this extension enabled if you try to clone.

This tree contains a patch queue of various code quality work I've been doing.  
Some of it is a bit gross ;-)  Current features in the patchqueue include:

* checking of the Xen tree via sparse (splint support should be forthcoming 
but it may not work for the moment)
* checking of XenLinux using sparse from the toplevel Xen makefile 
(integrating with wider checking under Xen; easily done since linux already 
has sparse support.  We should sparse check our patches for upstream, too.)
* basic Xen coding style description
* Xen coding style patch checker
* automated test harness to read a load of patches, apply them to a Xen tree 
and perform static analysis and coding style conformance testing to each one 
in turn (cumulatively) then produce a test report

Features that aren't far off include:

* testing of the tools code, using sparse / splint on the C parts and pylint 
(and maybe pychecker) on the Python
* better report summary output
* more versatile commandline controls for the testing harness
* test all the incoming / outgoing changesets relative to a remote hg tree 
(use to check a developer tree before requesting a pull)

Potential features that are further off but I'm thinking about:

* an analysis daemon that automatically grabs patches from the mailing lists, 
checks them, then either posts back the test reports or sticks them online 
somewhere
* hg hooks to auto-run analysis
* add some Xen-related smarts to sparse (or some optional code annotations to 
Xen).

Anyhow, any comments welcome, send them to the list, or to me privately, or to 
both - whatever makes you happy!

Cheers,
Mark

-- 
Push Me Pull You - Distributed SCM tool (http://www.cl.cam.ac.uk/~maw48/pmpu/)

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.