Fair point on the name both being more representative of what it does and being 
less scary. Wish we could think of something alpha-adjacent to "ant jar" so 
folks that are thinking "I want to build this thing" immediately see both 
options; the ant -p output is getting pretty long.

On Tue, Nov 8, 2022, at 9:35 AM, Derek Chen-Becker wrote:
> "ant skip-code-checks" might be more discoverable (and less intimidating) 
> than "ant unsafe". I'm a +100 on enabling more static 
> analysis/linting/coverage reporting for full builds. 
> 
> On Tue, Nov 8, 2022, 6:42 AM Josh McKenzie <jmcken...@apache.org> wrote:
>> __
>> We used to do linting years ago, and our approach was basically "the past is 
>> past, but look for deltas of new bad things added and notify the author". At 
>> least for me personally the signal / noise ratio was quite valuable (and not 
>> just for my own code; i.e. this wasn't *just* a "Josh Problem" ;) )
>> 
>> I was thinking about this w/the checkstyle additions; we need the ability to 
>> bypass these easily for incremental change / test cycles while working on 
>> something so devs don't have to pay the "analyze the entire code-base" tax 
>> on each small local change. I'm a strong +1 on having these tools in here 
>> and on by default for build or jar targets.
>> 
>> Maybe it'd be more friendly to have something like "ant unsafe" (or "ant 
>> jar-unsafe" so it's adjacent) that just does a quick jar w/out that stuff so 
>> it's more discoverable than multiple -D params?
>> 
>> On Tue, Nov 8, 2022, at 5:40 AM, Miklosovic, Stefan wrote:
>>> I confused Jacoco to be code analysis tool instead of code coverage one. 
>>> Early morning I guess :) I was thinking more about tooling like Sonar. What 
>>> do you think about that? Any pros / cons to Spotbugs?
>>> 
>>> ________________________________________
>>> From: Miklosovic, Stefan <stefan.mikloso...@netapp.com>
>>> Sent: Tuesday, November 8, 2022 11:36
>>> To: dev@cassandra.apache.org
>>> Subject: Re: [DISCUSSION] Add SpotBugs to the build
>>> 
>>> Hi David, all
>>> 
>>> what is the position of Jacoco in Cassandra as this point? I see it in 
>>> build.xml there are some targets and infrastructure around that.
>>> 
>>> What is wrong with using Jacoco instead more heavily for static analysis? 
>>> Why do we need to introduce this?
>>> 
>>> Regards
>>> 
>>> ________________________________________
>>> From: David Capwell <dcapw...@apple.com>
>>> Sent: Tuesday, November 8, 2022 0:10
>>> To: dev
>>> Subject: [DISCUSSION] Add SpotBugs to the build
>>> 
>>> NetApp Security WARNING: This is an external email. Do not click links or 
>>> open attachments unless you recognize the sender and know the content is 
>>> safe.
>>> 
>>> 
>>> 
>>> 
>>> I was thinking that it would be good to add SpotBugs 
>>> (https://spotbugs.github.io) into our build to help find bugs earlier in 
>>> the life cycle.  SpotBugs is LGPL but as it is used only in the build and 
>>> not to within this project, then this should be fine with Apache.
>>> 
>>> The motivation for adding this was from CASSANDRA-17178; the Simulator has 
>>> issues with Serializable classes missing serialVersionUID (as we deal with 
>>> ClassLoaders; this field is strongly recommend in general for all 
>>> Serializable classes), but this project can add more value as there are a 
>>> large collection of potential bugs to look out for; below are a few 
>>> examples found.
>>> 
>>> * Number.valueOf vs Number.parse<size>.  In many parts of the code we do 
>>> valueOf which returns a boxed value; we then unbox for the usage; this adds 
>>> more garbage that isn’t needed
>>> * Using Number.compareTo rather than primitive compare functions (causing 
>>> boxing)
>>> * Ignoring return value for functions that don’t have a side effect.  This 
>>> happens in a few cases where we are building a StringBuilder where we call 
>>> .toString but ignore the string… then call it later on
>>> * use of putIfAbsent without looking at the return.  This was found in 
>>> CacheService where we add the SSTable reader to the cache and assume we win 
>>> the race and start using it… rather than using the object that won the race
>>> 
>> 

Reply via email to