Weblog
Big Bump
Earlier this week the Mono 2.0 branch was tagged for preview #2. Included with it, inside mono-tools, is the updated Gendarme.
Most of the changes between now and the first preview are not very visible. Like promised a lots of rules were tweaked to reduce false positives. Some of them were also optimized to be (quite a bit) faster. A big thanks to everyone for the feedback (and the patches too ;-). Hopefully I'll have time to get more fixes into the branch before the release candidate in early September.
So what's the most visible change ? Well from now on Gendarme version will match Mono version numbers. This should avoid any confusion (e.g. bug reports) concerning the versions and it also answers the feedback I received that 0.2 was not very representative of Gendarme's status.
This second preview is also a good time to update the performance table of my previous blog entry. Again I compared the time needed for Gendarme 0.0.5.1, shipped with Mono 1.9.1 (confusing heh?), versus the 2.0p2 release (less confusing :-) by executing each rule category (and default one) on all (72) Mono 2.0 assemblies.
| Gendarme 0.0.5.1 | Gendarme 2.0 p2 | Change | Mean time per rule delta | ||||
| # rules | time | # rules | time | rules factor | time factor | ||
| BadPractice | 7 | 9.839234 | 13 | 20.940601 | 186% | 212.83% | 0.21 |
| Concurrency | 3 | 10.03967 | 6 | 14.167014 | 200% | 141.11% | -0.99 |
| Correctness | 7 | 11.229753 | 13 | 15.350205 | 186% | 136.69% | -0.42 |
| Design | 25 | 4.437044 | 33 | 3.738977 | 132% | 84.27% | -0.06 |
| Exceptions | 2 | 9.743716 | 7 | 16.194831 | 350% | 166.21% | -2.56 |
| Interoperability | 4 | 9.044328 | 5 | 14.150847 | 125% | 156.46% | 0.57 |
| Maintainability | 0 | 0 | 6 | 17.895726 | N/A | N/A | N/A |
| Naming | 11 | 8.482943 | 12 | 2.145394 | 109% | 25.29% | -0.59 |
| Performance | 13 | 155.027838 | 25 | 33.18588 | 192% | 21.41% | -10.60 |
| Portability | 4 | 11.598787 | 5 | 21.198526 | 125% | 182.77% | 1.34 |
| Security | 10 | 6.734685 | 10 | 8.593943 | 100% | 127.61% | 0.19 |
| Serialization | 0 | 0 | 7 | 1.349845 | N/A | N/A | N/A |
| Smells | 6 | 652.531303 | 6 | 686.105971 | 100% | 105.15% | 5.60 |
| UI | 3 | 3.272789 | 3 | 0.114405 | 100% | 3.50% | -1.05 |
| TOTAL | 95 | 891.98209 | 151 | 855.132165 | 159% | 95.87% | -3.73 |
| default | 89 | 174.698965 | 145 | 67.466905 | 163% | 38.62% | -1.50 |
So the new total percentage of 95.87% is a bit better than the previous one (99.15%). Not surprising since the smells are taking a huge amount of time, compared to all other rules, and have not been much optimized since the first preview (but I got ideas for them too ;-).
However there's a bigger difference for the default rule set (what the console runner execute unless instructed otherwise). It nows takes 38.62% of the time (versus 57.54% for the first preview). In both cases the times are compared to the version 0.0.5.1 and includes the 56 additional rules.
The win32 installer for Gendarme 2.0p2 will be available shortly on the google group file section. Linux packages (i.e. mono-tools) should be available early next week.
8/14/2008 19:33:21 | Comments | Permalink
The views expressed on this website/weblog are mine alone and do not necessarily reflect the views of my employer.
