When using the option -m, --only-modified, japicmp sets the japicmp.config.Options.isOutputOnlyModifications flag. This flag is then used by the OutputFilter to filter out classes that did not change from the final report.
IMHO, the flag is incorrectly used in OutputFilter:
This code removes classes that are marked as MODIFIED but for which there is no nested MODIFIED element. This means that if the only change to a class is that (for instance) it goes from non-abstract to abstract, the class will be filtered out and removed from the final report. Even if none of the nested elements in the class have changed, this is still a breaking change and should be part of the final report.
Hi,
When using the option
-m, --only-modified
, japicmp sets thejapicmp.config.Options.isOutputOnlyModifications
flag. This flag is then used by theOutputFilter
to filter out classes that did not change from the final report.IMHO, the flag is incorrectly used in
OutputFilter
:https://github.com/siom79/japicmp/blob/ac729c69f45c36a2df3b8d5dff039e6608d2603c/japicmp/src/main/java/japicmp/output/OutputFilter.java#L180-L187
This code removes classes that are marked as
MODIFIED
but for which there is no nestedMODIFIED
element. This means that if the only change to a class is that (for instance) it goes from non-abstract to abstract, the class will be filtered out and removed from the final report. Even if none of the nested elements in the class have changed, this is still a breaking change and should be part of the final report.Wdyt?