Hi Marc, after some troubles understanding your mail, I think I now get what your main question seems to be.
You are correct in that whatever JaCoCo might return as a result, the analyzed code still is the same. It is exactly as good or bad as it was before running the analysis. Whatever change you did in the past to JaCoCo, including the change I propose here, does not change that at all. However, and this is the important part, JaCoCo is not used to change code. It is used to see where code should be changed by the developer. For example, developers see which code is not tested. This makes the developer write more tests. These tests are of real value to the project (you might say tests are not strictly necessary for perfect code, but I think we both agree that good tests are very valuable). So, JaCoCo helps in identifying necessary changes ("Here's a scary blob of red code!"), and making sure the problem is solved after the developer adds more tests ("Hey, look, it's green now! Go find some other red blob!"). We need to talk about false positives now. I believe JaCoCo is correct ("sound") in the sense that no uncovered code is marked as covered/green. However, it is "incorrect" in the sense that covered code might be reported as uncovered/red. I'd like to call this problem "incomplete" instead of "incorrect" or "unsound". Any opcode marked as uncovered, although it in fact is covered, is a false positive. The obvious goal is to have as few of these false positives as possible, while still being correct/sound as explained above. JaCoCo is quite good at this, and this (together with the reporting, EclEmma, and a reasonable execution speed penalty) is the main reason for its success. I really like JaCoCo and EclEmma! However, there still are false positives. Every single false positive is annoying, and confuses the user. As an extreme example, a virus scanner which detects all infected files, but also has a false positive every few minutes is just useless. You can't write a letter without being disturbed ten times by that virus scanner. The same principle can be applied to JaCoCo. If there are too many false positives reported by JaCoCo, the developer using it gets annoyed and needs more manual analysis. Depending on how demanding the developer is, and how many false positives are reported, this could lead to the developer not using or trusting JaCoCo at all. The change I am proposing has the only advantage of decreasing the number of false positives. In other words, it does not change code. It does not directly add value to the project. However, it helps JaCoCo users, and helps them having the results they really need. Thus, they spend less time dealing with false positives, and can use this time to work on the actual uncovered code (leading to better tests, and more value). If you look at past comments and questions, some posted to this mailing list, you see that JaCoCo users are confused by false positives, and would like to have this problem solved. So, I hope this covers the "what does it all mean" part of your question. As a rather personal remark, I'd like to add that the percentage number reported by JaCoCo can also be used to provide value. For example, in a multi million Euro project done for a well known company with several 100,000s of employees, we used measurements including code coverage to answer the following questions: Should we throw away the existing code and start all over? Should we just refactor it? Where exactly are the problems that should be solved soon? Which parts of the code base are not as bad? How bad is it, and how much do we want that to change? Having a more precise percentage reported by JaCoCo leads to better decisions and, thus, to more value. I answered your more detailled questions below. On Mon, Nov 10, 2014 at 9:18 PM, Marc R. Hoffmann < hoffm...@mountainminds.com> wrote: > It would be interesting to see some examples of highlighted source code > for both versions of JaCoCo. > Sadly, my reports (generated by maven) do not allow me to see highlighted source code. Do you know how that can be changed easily? I can provide the HTML reports generated for the projects I mentioned in my previous report, though. In these you can see (and directly compare) the percentages and absolute numbers of missed instructions for individual packages/classes/methods. > > What do you think about having a separate version of JaCoCo which is > more precise (and, sadly, slower)? > > Speaking for the JaCoCo project we will stay with one version. We can't > handle multiple versions and this will also confuse users as many users use > JaCoCo in different tools. > OK, so we're talking about an inclusion of the changes, or a fork (as I really feel the need to get rid of this annoying incompleteness). > > Can you think of a way to speed up JaCoCo while still having better > coverage results? > > Not sure whether this can be implemented but I'm thinking about installing > exception handlers with the instrumented code since quite some time. > I also experimented with this approach. Sadly, this approach is worse, as you'd need a probe for every single opcode which might throw an exception, in addition to said handler(s). Best regards, Carsten -- Carsten Otto carsten.o...@gmail.com www.c-otto.de -- You received this message because you are subscribed to the Google Groups "JaCoCo and EclEmma Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to jacoco+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.