-
Notifications
You must be signed in to change notification settings - Fork 6k
8344159: Add lint warnings for unnecessary warning suppression #24882
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
/csr |
@archiecobbs has indicated that a compatibility and specification (CSR) request is needed for this pull request. @archiecobbs please create a CSR request, with the correct fix version, for at least one of the issues associated with this pull request. This pull request cannot be integrated until all the CSR request are approved. |
@archiecobbs this pull request can not be integrated into git checkout JDK-8348611+suppression
git fetch https://git.openjdk.org/jdk.git master
git merge FETCH_HEAD
# resolve conflicts and follow the instructions given by git merge
git commit -m "Merge master"
git push |
Closing - obsoleted by #25167 |
This PR adds support for warning about
@SuppressWarnings
annotations and-Xlint:-foo
flags that are unnecessary because they don't actually suppress any warnings.The change is a new requirement to ensure that all warning suppression is "validated". That means knowing when any warning that is currently being suppressed would have been generated had it not been suppressed. This requirement is satisfied automatically in most cases - i.e., when
log.warning()
to log a warning without explicit manipulation of the currentLint
instance. Other cases have been updated to ensure proper validation.The new warning reveals hundreds of unnecessary suppressions in the JDK which are spread all over the place, and there is a steady trickle of new ones being added all the time. Instead of trying to patch both the compiler and hundreds of Java source files all at once, this PR just disables the new lint categories in those components that would otherwise fail to build with
-Werror
. Those unnecessary suppressions can then be addressed separately per-component over time.Summary of changes:
suppression
warns about recognized@SuppressWarnings
values that don't actually suppress any warningssuppression-option
warns about-Xlint:foo
flags that don't actually suppress any warnings (also requiresoptions
)Log.warning()
now also automatically validates the current suppression of the lint category, if anyLint.isActive()
tests whether a category is enabled or suppression of the category still needs validationLint.isEnabled()
andLint.isSuppressed()
to optionally also validate any current suppressionLintMapper
now also keeps track of which suppressions are validated and (later) warns about those that never areDependencies:
Progress
Warning
6723459: javac to flag where warning suppression is not required
Issues
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/24882/head:pull/24882
$ git checkout pull/24882
Update a local copy of the PR:
$ git checkout pull/24882
$ git pull https://git.openjdk.org/jdk.git pull/24882/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 24882
View PR using the GUI difftool:
$ git pr show -t 24882
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/24882.diff