[ 
https://issues.apache.org/jira/browse/METRON-615?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15730011#comment-15730011
 ] 

Justin Leet commented on METRON-615:
------------------------------------

Yeah, I agree about new (and even current) contributors.  Whatever we do, 
documenting it for contributors is important, because I also don't want people 
to get turned off because things blow up that they don't expect.

There should also be documentation around what tools we're using and how we 
enable / disable things like this. These particular things aren't restrictive 
while something is being built or improved, but I can see cases where you'd 
want to disable/downgrade errors or warnings while you're working locally. To 
the best of my knowledge, this doesn't exist in a fleshed out form and should 
probably end up on the wiki somewhere.

> 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)

Reply via email to