Justin Leet created METRON-615: ---------------------------------- Summary: Prevent warnings in code from future contributions Key: METRON-615 URL: https://issues.apache.org/jira/browse/METRON-615 Project: Metron Issue Type: Improvement Reporter: Justin Leet Priority: Minor
After cleaning up most of the warnings in METRON-612, there's a question of locking out additional warnings in the code from Error Prone. This leads to the more general question of avoiding the addition of warnings in the future in general, not just from Error Prone but from javac or any other tooling we may add. The Hadoop project itself does something pretty extensive, e.g. [Hadoop QA|https://issues.apache.org/jira/browse/HADOOP-13827?focusedCommentId=15678418&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15678418]. Settings up something like that might be pretty involved and overkill for where we are, but it might be a nice end goal. As an parallel measure, we can potentially turn Error Prone's warnings into errors for warnings we've stamped out. METRON-612's PR ([Github PR|https://github.com/apache/incubator-metron/pull/389]), assuming no additional warnings have come in on master, allows for 4 to be upgraded. [SynchronizeOnNonFinalField|http://errorprone.info/bugpattern/SynchronizeOnNonFinalField] [BoxedPrimitiveConstructor|http://errorprone.info/bugpattern/BoxedPrimitiveConstructor] [ClassCanBeStatic|http://errorprone.info/bugpattern/ClassCanBeStatic] [ClassNewInstance|http://errorprone.info/bugpattern/ClassNewInstance] Of these, I'm personally in favor of promoting SynchronizeOnNonFinalField, BoxedPrimitiveConstructor, and ClassNewInstance. ClassCanbeStatic I'm pretty neutral on. In particular, SynchronizeOnNonFinalField is a correctness issue. BoxedPrimitiveConstructor is a perf / code quality issue. ClassNewInstance avoids some issues around reflection. Both BoxedPrimitiveConstructor and ClassNewInstance are expected to have the originating problems become deprecated in Java 9 in favor of the more correct construction. [~dlyle]'s opinion per the PR: {quote} Totally For Erroring on: SynchronizeOnNonFinalField Not against it for: BoxedPrimitiveConstructor ClassCanBeStatic Okay with it for ClassNewInstance with additional input. I get why it's harmful, but is it more harmful than reflection in general? Or do you just want to not insert known future deprecated code? {quote} -- This message was sent by Atlassian JIRA (v6.3.4#6332)