Diagram of the development of diagnostic capabilities in PVS-Studio

Diagram of the development of diagnostic capabilities in PVS-Studio


Development of PVS-Studio

Since the advent of the PVS-Studio product, more than 8 years have passed, and all this time we have been implementing new diagnostic rules in it. And we are not going to stop. If you are concerned about questions, have we not lost courage over the years, and does not stop PVS-Studio in development, then the graph in the article will remove these questions. The analyzer is actively developing, and the rate of development over the years only increases.

At the time of this writing, 669 diagnostics have been implemented in PVS-Studio, and many of them are complex. For example, we see no reason to pursue quantity and create two separate diagnostics for cases: the condition is always false, the condition is always true. Someone does the same, someone crushes similar diagnostics into several. For example, you can find tools in which such a diagnosis is crushed: 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 all the more you should not compare different analyzers based on the number of diagnostics. But it is interesting to see how the development of the PVS-Studio analyzer proceeded in time. And for this I decided to build a timeline for the emergence of new diagnostics.

To come up with an idea with the schedule was much easier than to implement. We did not have a label, how many diagnostics were in one or another version of PVS-Studio. Somehow, even no one ever thought to start recording these values. Had to use ingenuity and hard work.

We have a site a list of all the changes that have occurred in the PVS-Studio releases. Including, there are listed added diagnostics. I asked colleague Nastya to conduct an archaeological study of the list of changes and write down the release dates, as well as the number of diagnostics added. Simple, but painstaking task. Nastya, thanks for the help. So, before you the resulting schedule.

Number of diagnostics


On the graph you can see 2 spikes. The first burst refers to the end of 2015 - the beginning of 2016 and is associated with the addition of support for the C # language. The second burst 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, a 3rd surge begins to form, which is not yet noticeable on the graph. After the first portion of the MISRA-diagnostics, we had a little rest and now have once again intensified in this direction. Therefore, a new surge of activity should appear on the chart, starting in mid-2019.

The graph shows that the development of the PVS-Studio analyzer is progressing at a brisk pace. Moreover, if until the end of 2015, development was very linear, then "jumps" began to arise. Due to the “jumps”, the graph began to acquire a non-linear form and, possibly, in the future it can be interpolated with a parabola.

As you can see, we are full of energy and enthusiasm to develop the PVS-Studio code analyzer, to support new versions of compilers, to adapt plugins for new 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 link to the translation: Andrey Karpov, Anastasiya Mozaleva. PVS-Studio Graph of Diagnostic Abilities Development .

Source text: Diagram of the development of diagnostic capabilities in PVS-Studio