PVS-Studio Graph of Diagnostic Abilities Development

Andrey Karpov
Articles: 390

More than 8 years have passed since the PVS-Studio product was released, and all this time we've been implementing new diagnostic rules in it. Moreover, we are not going to stop. If you care about whether we have lost our vivacity over the years, and whether PVS-Studio stops developing, the graph given in the article will take this issue off the table. The analyzer is actively developing, and the speed of development only increases over the years.

At the time of writing, PVS-Studio has implemented 669 diagnostics; in addition, many of them are comprehensive. For example, we see no point in chasing the quantity and creating two separate diagnostics for these cases: the condition is always false, the condition is always true. Someone does the same, someone splits such diagnostics by a few. For example, you can find tools in which such diagnostics are split: always false boolean expression, a zero pointer is used as a condition and others. Therefore, the number of diagnostics in itself doesn't mean anything, and especially it is not worthy to compare different analyzers, drawing on the number of diagnostics. What's actually interesting is to see how the PVS-Studio analyzer has been developing in time. For this I decided to build a timeline of the new diagnostics emergence.

It was much easier to come up with an idea with a graph than to implement it. We didn't have a chart of how many diagnostics there were in various versions of PVS-Studio. Somehow, no one ever thought to start writing down these figures. I had to apply ingenuity and hard work.

We have a list of all the changes that took place in PVS-Studio releases. Including, added diagnostics are listed there. I asked my colleague Nastya to conduct an archaeological study of the changes list and write down release dates, as well as the number of diagnostics added. A simple but painstaking task. Nastya, thank you for your help. So, below you can see the graph that we got.

There are two bursts on the graph. The first spate dates back to the end of 2015 - the beginning of 2016, and is related to the addition of the language support. The second spate dates back to the end of 2018 and early 2019, and is related to the implementation of Java language support, as well as the start of working on the MISRA standard support.

In fact, now the 3rd peak begins to form, which is not yet visible on the graph. After the first part of MISRA diagnostics we took a little break and now stepped-up in this direction again. Therefore, the graph must show a new surge of activity, starting in mid-2019.

The graph shows that the development of the PVS-Studio analyzer is progressing at a brisk pace. Moreover, the development was quite linear before the end of 2015, after that the "jumps" began to emerge. Due to these "jumps" the graph began to acquire a non-linear appearance and, perhaps, in the future it can be interpolated by a parabola.

As you can see, we are full of strength and enthusiasm to develop the PVS-Studio code analyzer, support new versions of compilers, adapt plug-ins to the fresh versions of Visual Studio / SonarQube / IntelliJ IDEA. Use PVS-Studio to make your code safer, better and more secure.

Use PVS-Studio to search for bugs in C, C++, C# and Java

We offer you to check your project code with PVS-Studio. Just one bug found in the project will show you the benefits of the static code analysis methodology better than a dozen of the articles.

goto PVS-Studio;

Andrey Karpov
Articles: 390

Bugs Found

Checked Projects
Collected Errors
13 764