﻿# Appreciate Static Code Analysis\!

I am really astonished by the capabilities of static code analysis even though I am one of the developers of PVS\-Studio analyzer myself\. The tool surprised me the other day as it turned out to be smarter and more attentive than I am\.

![0535_Appreciate_Static_Code_Analysis/image1.png](https://import.viva64.com/docx/blog/0535_Appreciate_Static_Code_Analysis/image1.png)

You must be careful when working with static analysis tools\. Code reported by the analyzer often looks fine and you are tempted to discard the warning as a false positive and move on\. Even I, one of the PVS\-Studio developers, fall into this trap and fail to spot bugs every now and then\. A few days ago, I opened two tickets in our bug tracker reporting the V614 diagnostic, which looks for use of uninitialized variables and arrays\.

In both cases, I was sure the analyzer was wrong and needed fixing up\. Here's the first case:

![0535_Appreciate_Static_Code_Analysis/image2.png](https://import.viva64.com/docx/blog/0535_Appreciate_Static_Code_Analysis/image2.png)

I read this code four times but saw nothing suspicious\. I concluded it was a false positive that needed fixing, but the analyzer was actually right, while I was not attentive enough\.

The _caption_ buffer remains uninitialized\. Look at the first lines: both strings are written to buffer _text_\. This is a typo and I overlooked it\.

The second case is even more epic:

![0535_Appreciate_Static_Code_Analysis/image4.png](https://import.viva64.com/docx/blog/0535_Appreciate_Static_Code_Analysis/image4.png)

PVS\-Studio warned about the use of uninitialized buffer _buf_\. Nonsense\! I reported it as a bug to be fixed since it was obvious that the _sprintf_ function did initialize the buffer and the code was fine\.

No way\! Again, PVS\-Studio was right and I was wrong\. The creation excelled the creator\. :\)

Look what the mean author of that code wrote in one of the header files:

![0535_Appreciate_Static_Code_Analysis/image5.png](https://import.viva64.com/docx/blog/0535_Appreciate_Static_Code_Analysis/image5.png)

\([definesTypes\.h](https://github.com/StarEngine/engine/blob/develop/src/definesTypes.h)\)

_sprinf_ expands into _std::printf_\. Yes, that is right, _sprintf_ does the same as _printf_ in this program\.

What a shame\! It turns out the _printf_ function uses uninitialized buffer _buf_ as a format string\.

So, appreciate and use static code analyzers\! They will help save your time and nerve cells\.