SEURAT is a research project that attempted this. I was a test subject for it a while back and found it pretty interesting. But its implementation at the time was an Eclipse plugin that probably hasn't been kept up todate. You can find a paper on it on the ACM digital library:
http://dl.acm.org/citation.cfm?id=1368215
I'm sure the dissertation is available somewhere on cs.wpi.edu, too.