
Diagnostic development chart in PVS-Studio

More than 8 years have passed since the appearance of the PVS-Studio product, and all this time we have been implementing new diagnostic rules in it. And we’re not going to stop. If you are concerned about questions, have we lost courage over the years, and have PVS-Studio stopped developing, then the chart in the article will remove these questions. The analyzer is actively developing, and the rate of development only increases over the years.
At the time of writing, 669 diagnostics are implemented in PVS-Studio, and many of them are complex. For example, we see no reason to chase quantity and create two separate diagnostics for cases: the condition is always false, the condition is always true. Someone does the same, someone splits such diagnostics into several. For example, you can find tools in which such diagnostics are split up: always a false boolean expression, a null pointer is used as a condition, and so on. So the number of diagnostics in itself does not mean anything, and moreover, it is not worth comparing different analyzers based on the number of diagnostics. But it’s interesting to see how the PVS-Studio analyzer evolved over time. And for this, I decided to build a timeline for the appearance of new diagnostics.
To come up with an idea with a schedule was much easier than to implement. We did not have a sign, how many diagnostics were in this or that version of PVS-Studio. Somehow, even no one ever thought to start writing down these values. I had to use ingenuity and hard work.
Our site has a list of all the changes that occurred in the releases of PVS-Studio. Including, the added diagnostics are listed there. I asked my colleague Nastya to conduct an archaeological research of the list of changes and write down the release dates, as well as the number of diagnostics added. A simple but painstaking task. Nastya, thanks for the help. So, here is the resulting schedule.

On the graph, you can observe 2 bursts. The first surge dates back to the end of 2015 - the beginning of 2016 and is associated with the addition of C # language support. The second surge refers to the end of 2018 - the beginning of 2019 and is associated with the implementation of support for the Java language, as well as the beginning of work to support the MISRA standard.
In fact, the third surge begins to form, which is not yet visible on the chart. After the first batch of MISRA-diagnostics, we took a break and now are again activated in this direction. Therefore, a new surge in activity should appear on the chart, starting in mid-2019.
The graph shows that the development of the PVS-Studio analyzer is proceeding at a brisk pace. Moreover, if by the end of 2015 the development was very linear, then “leaps” began to appear. Due to the “jumps”, the graph began to take on a non-linear form and, possibly, in the future it will be possible to interpolate it with a parabola.
As you can see, we are full of energy and enthusiasm to develop the PVS-Studio code analyzer, support new versions of compilers, adapt plugins to the latest versions of Visual Studio / SonarQube / IntelliJ IDEA. Use PVS-Studio and make your code more reliable, better and safer.
If you want to share this article with an English-speaking audience, then please use the translation link: Andrey Karpov, Anastasiya Mozaleva. PVS-Studio Graph of Diagnostic Abilities Development .