Sounds good to me, I'm a little tied up just now, but I might be able to
help later.

Ian

On Mon, 24 Dec 2018, 15:38 Andrea Aime <andrea.a...@geo-solutions.it wrote:

> Hi all,
> I was wondering if it might be time, and or it might be useful, to add
> some static code analysis in our build
> chain, as a profile that build servers can run (especially Travis).
>
> Looking at the code quality related tools we added in the last year, the
> code formatting compliance checks,
> breaking the build at misbehavior, have worked, while the OWASP checks,
> being a daily check, have largely
> been ignored.
>
> With this in mind, I think static analysis should be of the kind that can
> break the build, or setting it up might
> end up being a waste of time.
>
> A second observation is about what the static analysis checks, it should
> be a set of obvious bugs and not
> too many that getting the build in compliant state would be an impossible
> undertaking, otherwise we'd
> not be able to get started.
>
> Looking around I've found basically PMD, which is a source code analyzer
> and somewhat old, and two
> bytecode analyzer, spotbugs (the successor of the dead findbugs) and
> Google's errorprone.
>
> PMD <https://pmd.github.io/pmd-6.10.0/index.html> checks source code
> directly, has maven integration and it's well configurable.
> The default setup is not usable imho, as it finds over 1000 violations
> just in gt-main, with all sorts
> of issues in the mix, however it's easy to configure and lowering down to
> priority=1
> there is only a single thread safety related failure in main (an
> improperly implemented double checked
> locking, not using a volatile field as the synch variable).
> Upping the level of the checks to priority 2 makes the code report a ton
> of "using new Boolean(...)" instead of "Boolean.valueOf"
> which does not seem that important to me.... (well, if it's used in a
> tight loop it's gonna kill performance, ok,
> but believe there should be worse issues to care for). A sample build
> failure report at priority 2 is attached.
> Going up to level 3 throws in a ton of checks that border on trivial, I
> would not go there.
> If you want to try out, I have a branch here:
> https://github.com/aaime/geotools/tree/pmd
> To use it, do a "mvn clean pmd:check -Ppmd" (mind the profile, otherwise
> the configuration won't be used)
>
> Spotbugs <https://spotbugs.readthedocs.io/en/latest/> can break the
> build, but seems to be mostly geared towards doing reports. The maven
> integration
> can be configured to list the types of checks one want, but I cannot find
> the list of all bug analyzers to
> configure it with a smaller number.
> Even with the lowest analysis effort and the highest confidence effort
> setups I get 284 errors reported
> on gt-main only (report attached).
> If you want to try it out, I have a branch here:
> https://github.com/aaime/geotools/tree/spotbugs
> To use it, do a "min install -DskipTests" (did not manage to get it into a
> profile yet, that part would be easy though).
>
> ErrorProne <https://github.com/google/error-prone> is a compiler
> plugin/javac replacement that adds more checks during the compile phase.
> As per Google's philosophy, it's opinionated and leaves little room to
> configuration, on the brighter side,
> on our code base it's reporting relatively few issues, 42 on the gt-main
> module (report attached to this mail),
> and relatively obvious ones.
> One downside, it seems to have issues
> <https://github.com/google/error-prone/issues/1205> with JDK 11, however,
> we can activate it only with JDK 8 if needs be.
> If you want to try it out, I have a branch here:
> https://github.com/aaime/geotools/tree/errorprone
> To use it, do a "min install -DskipTests -Perrorprone"
>
> Personally I haven't liked spotbugs, seems too hard to configure, but if
> someone manages to reduce
> the errors reported a few important ones I might change my mind about it
> :-D
>
> PMD is quick and easy, although there are very few issues categorized at
> priority 1, High, in the documentation
> <https://pmd.github.io/pmd-6.10.0/pmd_rules_java.html>,
> going to level 2 seems to introduce already a bunch that are debatable,
> but not too bad. I would not go priority level 3.
> Also, if there is no one helping, PMD seems at priority "1" seems to be
> suitable for a "one man job".
>
> ErrorProne seems to have a better balance, not too many issues reported
> and the ones that I see appear
> to be "reasonable", downside, pretty much no configuration, so if we
> stumble into something we don't like,
> well, we're toast. And it's still reporting enough issues that I'm not
> sure I can do it alone.
>
> Opinions?
> Anyone "excited" about the topic enough to help?
>
> Cheers
> Andrea
>
> == GeoServer Professional Services from the experts! Visit
> http://goo.gl/it488V for more information. == Ing. Andrea Aime @geowolf
> Technical Lead GeoSolutions S.A.S. Via di Montramito 3/A 55054 Massarosa
> (LU) phone: +39 0584 962313 fax: +39 0584 1660272 mob: +39 339 8844549
> http://www.geo-solutions.it http://twitter.com/geosolutions_it
> ------------------------------------------------------- *Con riferimento
> alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 -
> Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni
> circostanza inerente alla presente email (il suo contenuto, gli eventuali
> allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i
> destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per
> errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le
> sarei comunque grato se potesse darmene notizia. This email is intended
> only for the person or entity to which it is addressed and may contain
> information that is privileged, confidential or otherwise protected from
> disclosure. We remind that - as provided by European Regulation 2016/679
> “GDPR” - copying, dissemination or use of this e-mail or the information
> herein by anyone other than the intended recipient is prohibited. If you
> have received this email by mistake, please notify us immediately by
> telephone or e-mail.*
> _______________________________________________
> GeoTools-Devel mailing list
> GeoTools-Devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/geotools-devel
>
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to