Proposed source code and regression test suite improvement projects for JDK 9
Joe Darcy
joe.darcy at oracle.com
Tue Dec 17 16:14:49 PST 2013
Hi Stuart,
On 12/17/2013 01:57 PM, Stuart Marks wrote:
> Hi Joe,
>
> +0.9999998! :-)
That's close enough to 1.0 for me ;-)
>
> I think that it's a fine goal to complete all of the efforts we began
> in JDK 8. But there should be some priorities assigned here. As you
> know, I'm a champion of warnings cleanup. But I think dealing with the
> test failures is *more* important than warnings. If we're
> warnings-free at the end of JDK 9 but we still have test failures, I
> think we'd have missed the boat.
>
> As you know, the situation is essentially that we cannot get a
> complete test run without at least one test failure. This makes it
> difficult to assess the quality of a change being tested, it wastes
> time, generally slows things down, and is a barrier to introducing a
> more streamlined system for building, testing, and integration.
>
> I'd like to see us focus our efforts at getting us test-failure-free
> as quickly as feasible in the JDK 9 development cycle, while
> continuing warnings and doclint cleanup as a side activity.
I agree that in terms of impact, test stabilization is more important.
However, I don't think they are mutually exclusive. For example, while
waiting for your test run to come back, you can work on knocking back
some warnings :-)
-Joe
>
> Thanks,
>
> s'marks
>
>
>
> On 12/13/13 11:13 AM, Joe Darcy wrote:
>> Hello,
>>
>> With JDK 9 about to get underway, I'd like to propose several source
>> code and
>> regression test suite improvement efforts to tackle during this release.
>>
>> Over the years, the JDK code base has accumulated a bit of technical
>> debt in
>> various areas. In JDK 8, efforts have already been underway to pay
>> down that
>> technical debt including:
>>
>> * doclint cleanup: core libs is now doclint-clean and over 1,000 of
>> the doclint
>> warnings in client libs have been fixed [1]
>>
>> * javac lint cleanup: many lint issues have been resolved [2] and a
>> number of
>> lint categories are configured to cause fatal errors if they are
>> found when
>> building the jdk repo [3]
>>
>> * test stabilization: numerous regression tests in the jdk repo failed
>> intermittently, ran for an unnecessarily long time, or suffered from
>> other flaws
>> that have been corrected [4]
>>
>> For JDK 9, I propose we complete these initiatives for the code in
>> the langtools
>> and jdk repositories (then possibly extend to jaxp, jaxws, etc.):
>>
>> * Source code in java.* and javax.* is doclint clean for public and
>> protected
>> elements and the docs build is configured to fail on a doclint issue.
>> The
>> generated javadoc is also tidy clean.
>>
>> * Java sources compile cleanly under "javac -Xlint:all -Werror" and
>> the build is
>> configured to fail if a lint issue is introduced.
>>
>> * There are no chronic intermittently failing tests and clean jdk
>> test runs are
>> a common occurrence.
>>
>> Reducing C/C++ build warnings would be a worthwhile goal too, but is
>> complicated
>> by the number of C/C++ compilers used across different supported
>> platforms. In
>> addition, various structural properties of javadoc should be
>> regularized ({@code
>> Foo} instead of <code>Foo</code>, package-info.java instead of
>> package.html,
>> @throws instead of @exception, etc.) and the Java source code should use
>> contemporary coding idioms (lambda, diamond, etc.).
>>
>> There are thousands of lint and doclint issues remaining, but they
>> can largely
>> be addressed in parallel without interfering with each other, as was
>> seen in JDK
>> 8. While some effort will be required to get these issues addressed
>> initially,
>> once the source code and tests are in a clean state, we would benefit
>> from
>> tooling support to prevent certain classes of errors from being
>> introduced.
>>
>> Comments?
>>
>> Thanks,
>>
>> -Joe
>>
>> [1]
>> https://bugs.openjdk.java.net/issues/?jql=project%20%3D%20jdk%20and%20fixVersion%20%3D%208%20and%20resolution%20%3D%20Fixed%20and%20labels%20%3D%20doclint
>>
>>
>>
>> [2]
>> https://bugs.openjdk.java.net/issues/?jql=project%20%3D%20jdk%20and%20fixVersion%20%3D%208%20and%20resolution%20%3D%20Fixed%20and%20labels%20in%20(lint%2C%20fixit)
>>
>>
>>
>> [3] JDK-8024643 Turn on javac lint checking in building the jdk repo
>> https://bugs.openjdk.java.net/browse/JDK-8024643
>>
>> JDK-8024603 Turn on javac lint checking for auxiliaryclass, empty,
>> and try in
>> jdk build
>> https://bugs.openjdk.java.net/browse/JDK-8024603
>>
>> [4]
>> https://bugs.openjdk.java.net/issues/?jql=project%20%3D%20jdk%20and%20fixVersion%20%3D%208%20and%20resolution%20%3D%20Fixed%20and%20labels%20%3D%20teststabilization
>>
>>
More information about the jdk9-dev
mailing list