The Wise Developers’ Guide to Static Code Analysis featuring FindBugs, Checkstyle, PMD, Coverity and SonarQube
Chapter I: Welcome to static code analysis, that thing you aren’t doing
Read it later! (PDF download)
“The quality of your code is a weak spot in almost every software project you’ll ever touch. This is because ongoing development ensures that even the bits you were once proud of become, over time, first less elegant, then rough, and finally incomprehensible.”
— Oleg Shelajev, Java Developer/Author
As developers, we should be shaping the world, not waste time on process issues that automation, provisioning and release management tools can solve easily.
In the past, I’ve written a lot about Jenkins, Mercurial (see all the cool links below) and other tools that we use at ZeroTurnaround. Today, I thought I’ll share with you how we manage multiple branches in Mercurial while still enabling a Continuous Integration experience for our development teams. I’ll concentrate on one of our products, LiveRebel (which, incidentally, we actually use to release over 30 applications of our own, twice a week, all without impacting our users. Dogfooding it baby!)
Our approach uses tools freely available on the market and some custom scripts. If you have multiple branches and struggling with CI, then this article might give you some ideas.
Have you ever thought about taking a vacation from your IDE?
Recently, RebelLabs published a report, Getting started with IntelliJ IDEA as an Eclipse User, which among other things also gives users of one IDE an opportunity to test another IDE more easily based on some shortcuts and tips we provided. I wish that there was some guide like this for Java 8 with IDEs, because when it came out, I wanted to start using it right away with Eclipse….
Do you use tools that help you identify and fix issues in your code? These are often called “code quality tools”, and as we can see in the graph above (taken from Developer Productivity Report 2013 which surveyed just over 1000 developers), a slight majority of respondents (51%) do not take action of any kind regarding code quality problems. And if only 8% fix all code quality problems they see, does this mean that 92% of apps out there are running with bugs that could have been fixed before they even went live?
Oleg Shelajev, a Java developer in Estonia, expressing his confusion discreetly, thereby avoiding an awkward social scene.
Estonian software engineer, Oleg Shelajev, was nearly hospitalized the other day after suffering shock followed by extended period of confusion and unhappiness as a result of unexpected technology usage by his colleague, software engineer Michael Rasmussen.
As we did with our previous guest post, we asked our friends Martijn Verburg and Kirk Pepperdine at jClarity if we could share this great blog post with RebelLabs readers. The original post, Why didn’t my app throw an OutOfMemoryError?, was crafted by Kirk back in January, and we are posting it here with their permission.
Every once in a while I run into someone that has a Hotspot JVM that is running back to back garbage collections and yet the heap is still almost full after each attempt! When they discover that their problem is related to the JVM not having enough memory they often ask the question, why didn’t the JVM throw an
OutOfMemoryError (OOME)? After all, my application is not making any forward progress and the reason is Java heap is almost completely exhausted, right?