• PVS-Studio and Hostile Environment

    This is another story about programs having a hard time trying to interact with the external world. At first glance, a static analyzer should face no problems at all. It just gets files and some additional information at the input and generates a log-file out of it. But the Devil is, as usual, in the detail. Read more
  • Twitter for C++ Programmers (updated)

    This small post is for those programmers who use Twitter or are just about to start doing this. I'm sure developers will find some useful information here. Read more
  • Reflections on the Null Pointer Dereferencing Issue

    As I have recently found out, the question whether or not the code &((T*)(0)->x) is correct appears to be quite complicated. I decided to write a small post on this subject. Read more
  • The tyranny of averages

    Let us begin with mentioning that this article is completely non-serious. New Year is coming, holidays are almost there and there is no reason to do anything deliberate. That is why we decided to write an article about, suddenly, statistics. Read more
  • PVS-Studio Probes into Linux' Innards (3.18.1)

    For the sake of advertisement, we decided to analyze the Linux kernel with our static code analyzer. The difficulty of this task makes it especially interesting. Linux' source codes have been checked and are still checked by numbers of different tools. So finding anything new was hardly probable. But if we succeeded, it would be a nice advertisement for the PVS-Studio analyzer's capabilities. Read more
  • Analysis of the The Powder Toy Simulator

    The Powder Toy is a free physics sandbox game, which simulates air pressure and velocity, heat, gravity and a countless number of interactions between different substances. The game provides you with various building materials, liquids, gases and electronic components which can be used to construct complex machines, guns, bombs, realistic terrains and almost anything else. You can browse and play thousands of different saves made by the community or upload your own. However, not everything is that good in the game: for a small project of about 350 files, it triggers too many warnings from our static analyzer. In this article, I'm going to show you the most interesting issues found in the project. Read more
  • Note about diagnostics fine-tuning

    Despite the fact that our analyzer is stated to be one of the simplest tools in installing and everyday usage (everything is working "out-of-the-box" and does not require any unintuitive tweaks), some users lacks flexibility of some of the diagnostic rules. Unfortunately, usability and flexibility is if not totally opposite, but sometimes those features conflict with each other. In this note, we shall be talking about additional mechanism of tuning some diagnostic rules, which can be useful for some of our valuable users. Read more
  • Note about hotkeys

    Even if our product, PVS-Studio, position itself as a tool for programmers, and it is the reason why almost all questions sent to tech support are highly specialized (i.e. usually we are not replying something like "Have you tried turning it off and on again?"), sometimes we actually have to reply in Captain Obvious style. One of the questions that is lying in this category is why don't you have a hotkey mapped to check current file / check solution or why hotkeys mapped to "Go to Next Message" and "Go to Previous Message" (Alt+'[' and Alt+']') are chosen to be so inconvenient? OK, let us try to figure out how could have that been happened. Read more
  • Why Students Need the CppCat Code Analyzer

    CppCat is a simple static code analyzer capable of detecting bugs in C/C++ programs. We started granting free academic licenses to all interested (students, teachers, and so on). For the sake of popularizing CppCat among students, I decided to write this post about errors that can be found in student lab work tasks posted at Read more
  • Why We Need the Suppression Mechanism for Analyzer-Generated Messages

    Every software product has its own origin and development history. A project may be new and small or it may have a dozen of years of commercial success behind it and include thousands of source files. When integrating a static analyzer into the development process, apart from the technical issues of tool integration as such, other important questions also arise such as: how to process analysis results correctly? should we have all the analyzer-generated warnings fixed?... In this article, we are going to talk about a new method of processing static analyzers' output. Read more