As of my push a few minutes ago, Gradle compiling on 9x WILL FAIL if there are any warnings in the code. See LUCENE-9411. I’ve finally finished suppressing over 8,000 warnings in Solr, so could check this in. Many thanks to Dawid for helping me with the Gradle parts. The goal now is to not add any _more_ SuppressWarnings if at all possible. I hope we can start taking the suppressions out when we’re working on code, so when working on code please consider removing some of them.
I was hoping that we could also fail ant builds, but there are some tricky dependencies in third party code that weren’t easy to resolve in the ant world due to licensing issues, if you’re interested in details, see the JIRA or ping me on Slack. One consequence of this is that 8x will NOT fail on warnings, neither will Ant builds on 9x. If someone wants to try working that out, please feel free but I’m just really tired of banging my head against that wall. So please, Please, PLEASE start compiling 9x with Gradle or cover your ears to keep from hearing me complain. And I’ve been taking lessons from my 3 1/2 year old grandson on doing that LOUDLY. About SuppressWarnings. There were so many of them that there was no hope of actually fixing the underlying causes in one go. I’ve enhanced the BadApples report to start reporting on the number of SuppressWarnings in each file week to week when they increase or decrease. I’ll be nudging people if the number of SuppressWarnings starts going up, starting Monday. I can’t help but think understanding generics will be improved by working through new warnings. A couple of side notes for IntelliJ users (IDK about other IDEs, but I’d be surprised if there weren’t similar capabilities): - When you just open the project, Gradle is automatically configured. There’s no need to execute the “gradlew idea” task. - You can execute tasks in IntelliJ _really easily_ by clicking on them in the gradle window, it’s on the extreme right. It seems much more robust than trying the same thing in Ant. -- The “assemble” task will bring up a convenient window showing errors (including warnings) that you can click on and get right to the offending code. “classes” and “testClasses” are also very useful tasks to execute in this context. - The “inspections” in IntelliJ point out a lot of things, but not anything with SuppressWarnings. It may be worth coming to consensus on which inspections are worth enabling. And perhaps distributing a configuration. For instance, do we really care for inspections reporting “blah could be final”? They’re highlighted in yellow in my setup, and I’ve done nothing special. Spend some time looking at those when you’re working on code… the number of “method may return null” inspections is scary. Have we’ve ever had the released code generate an NPE or anything like that <snark/>. - Please do NOT suppress the _inspections_ in IntelliJ. One of the choices IntelliJ offers is to suppress an inspection, and it adds a “suppressInspection” comment to the source code specific to IntelliJ. This is different than Javas’s SuppressWarnings, and we shouldn’t include comments in the code specific to a particular IDE. - The motivation here is that we need all the help from the compiler we can get when it comes to as large and complex a code base as Lucene/Solr. Yes, it feels constraining. Yes, it means we won’t feel as productive because we have to take time to address things we’ve been ignoring. The leap of faith is that if we spend a bit of time up front, we can avoid having to spend a lot _more_ time fixing errors later in the release cycle. The time it takes to fix a problem goes up exponentially the farther down the cycle it’s caught. Fixing something when developing may take T minutes. Some time later when test start failing, it takes T*X. And when you consider community-wide implications of releasing code, getting feedback from the field, filing a JIRA, trying to reproduce the problem, checking the code, and pushing a fix, the cost of fixing something after it’s released goes up enormously. I’m not saying that addressing all the complaints something like IntelliJ’s inspections show will magically make it unnecessary to make point releases, but avoiding just a few is a win. <rant/> Erick --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org