Proposed source code and regression test suite improvement projects for JDK 9

Joe Darcy joe.darcy at oracle.com
Tue Dec 17 16:20:43 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, expanding on your sentiment, I don't think warnings cleanup and 
test cleanup 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