Before I code more on OpenGrok, I need some tools. Last time I added FindBugs, and this time I add Emma, to be able to measure how well our unit tests are. Now I should be ready for some refactoring in HistoryGuru.java 
The procedure for running Emma analysis on our unit tests could be easier, but it is all described in README.txt.
How well are we doing? I'd say we have room for improvement. Happily, Trond has lots of spare time these days 
[EMMA v2.0.5312 report, generated Fri Jun 06 00:09:25 CEST 2008] ------------------------------------------------------------------------------- OVERALL COVERAGE SUMMARY: [class, %] [method, %] [block, %] [line, %] [name] 23% (51/218)! 14% (230/1658)! 10% (5307/55863)! 9% (1083.2/12656)! all classes OVERALL STATS SUMMARY: total packages: 22 total classes: 218 total methods: 1658 total executable files: 141 total executable lines: 12656 COVERAGE BREAKDOWN BY PACKAGE: [class, %] [method, %] [block, %] [line, %] [name] 0% (0/1)! 0% (0/4)! 0% (0/41)! 0% (0/12)! org.opensolaris.opengrok 0% (0/10)! 0% (0/57)! 0% (0/1449)! 0% (0/314)! org.opensolaris.opengrok.search 0% (0/11)! 0% (0/95)! 0% (0/4063)! 0% (0/985)! org.opensolaris.opengrok.search.context 0% (0/26)! 0% (0/145)! 0% (0/4421)! 0% (0/835)! org.opensolaris.opengrok.search.scope 0% (0/3)! 0% (0/9)! 0% (0/291)! 0% (0/62)! org.opensolaris.opengrok.search.scope.editor 20% (1/5)! 3% (2/65)! 1% (23/2533)! 1% (4/628)! org.opensolaris.opengrok.analysis.java 3% (1/36)! 0% (1/270)! 1% (89/8166)! 1% (23.7/1909)! org.opensolaris.opengrok.history 20% (1/5)! 3% (2/65)! 1% (28/2366)! 1% (3/594)! org.opensolaris.opengrok.analysis.lisp 25% (1/4)! 3% (2/64)! 1% (28/2350)! 1% (3/588)! org.opensolaris.opengrok.analysis.document 25% (1/4)! 5% (2/37)! 1% (16/1105)! 1% (3/290)! org.opensolaris.opengrok.analysis.sql 20% (1/5)! 3% (2/65)! 1% (44/2960)! 0% (3/741)! org.opensolaris.opengrok.analysis.tcl 20% (1/5)! 3% (2/65)! 3% (84/2569)! 0% (3/628)! org.opensolaris.opengrok.analysis.c 40% (4/10)! 21% (9/42)! 4% (86/2349)! 4% (16/390)! org.opensolaris.opengrok.analysis.executables 6% (2/34)! 6% (10/158)! 4% (262/6109)! 3% (35.8/1170)! org.opensolaris.opengrok.index 60% (3/5)! 25% (31/122)! 19% (196/1026)! 24% (69.4/289)! org.opensolaris.opengrok.configuration 80% (4/5)! 39% (26/67)! 22% (641/2900)! 23% (160/693)! org.opensolaris.opengrok.analysis.sh 100% (9/9) 41% (50/123)! 26% (1069/4076)! 28% (283/1008)! org.opensolaris.opengrok.analysis.plain 67% (6/9)! 48% (19/40)! 29% (249/851)! 25% (42.2/167)! org.opensolaris.opengrok.analysis.archive 50% (6/12)! 49% (34/70)! 38% (1259/3297)! 33% (260.5/798)! org.opensolaris.opengrok.web 50% (6/12)! 39% (27/70)! 39% (931/2405)! 27% (120.6/445)! org.opensolaris.opengrok.analysis 40% (2/5)! 37% (7/19)! 49% (219/443)! 46% (46/101)! org.opensolaris.opengrok.util 100% (2/2) 67% (4/6)! 89% (83/93) 78% (7/9)! org.opensolaris.opengrok.analysis.data -------------------------------------------------------------------------------

