RFR: JDK-8236949: javadoc -Xdoclint does not accumulate options correctly

Jonathan Gibbons jonathan.gibbons at oracle.com
Thu Jan 30 01:25:39 UTC 2020


Please review a moderately simple fix to a regression in the way that 
javadoc handles doclint options.

The feature was introduced in JDK 8, and at that time, the doclet 
options were accumulated in a list.

The regression was introduced when the standard doclet was rewritten in 
JDK 9, and perhaps because of the introduction of other new doclint 
options, the options were changed to accumulate in a map, with "last one 
wins" semantics for like-named options. This is the root cause of this 
issue.

The fix is to revert to accumulating options in a list, as originally 
intended. In addition, the detection of whether doclint should be 
enabled or not is improved, compared to JDK 8, such that doclint is only 
enabled if either specific groups or all groups are enabled. Previously, 
it would only be disabled if just -Xdoclint:none was specified.

The penance for not writing a better unit test in JDK 8 is to write a 
better regression test now.  One other test (added in JDK 9) was relying 
on the bug, and needed to be updated.

In this changeset ...

HtmlConfiguration.java ... the collection is changed to a list

HtmlOptions ... the options are transformed into doclint options (as 
before) and accumulated in the list, but only if they pass the initial 
check. There is also some minor cleanup ... the option for 
-Xdocrootparent is moved out of the group of doclint options, and some 
minor warnings highlighted by the IDE were fixed.

WorkArounds ... the primary change here is better analysis of the 
doclint options to determine if doclint should be enabled. Comments are 
added, and the "TODO: fix this up correctly" is removed ;-)

The new test uses a source file that will trigger different doclint 
diagnostics, depending on which are enabled. It then runs javadoc with 
different doclint options to verify that (just) the expected diagnostics 
are generated.

-- Jon


JBS: https://bugs.openjdk.java.net/browse/JDK-8236949
Webrev: http://cr.openjdk.java.net/~jjg/8236949/webrev.00/



More information about the javadoc-dev mailing list