Unicorn with delicious cookie
Nous utilisons des cookies pour améliorer votre expérience de navigation. En savoir plus
Accepter
to the top
>
>
On the good of automated filtering of i…

On the good of automated filtering of identical messages

14 Déc 2011

From the very beginning duplicates of messages in our analyzer PVS-Studio have been eliminated. For example, if a diagnostic message is generated for a code in an .h-file included into several .cpp-files, our tool will generate it only once. Some other analyzers don't do that and when they check .cpp-files, they show you messages every time on the same strings in .h-files. So it turns out that our analyzer generates fewer messages compared to such tools. But we had no chance to estimate how useful it is before. Now we've got such an occasion, and the results are really impressive.

To clarify the point let me first cite a code sample. Assume we have the Foo class defined in the Foo.h file:

class Foo {
  int iChilds[2];
  ...
  bool hasChilds() const { return(iChilds > 0 || iChilds > 0); }
  ...
}

There are two files Usage.cpp and Play.cpp, both containing the following string:

#include "Foo.h"

When checking these files, a message will be generated: "V501. There are identical sub-expressions to the left and to the right of the 'foo' operator". The message will be generated twice (because two compilation units have been checked), but the user will see it only once, since the repeated message will be automatically filtered.

If there were no filtration, you would see 2 V501 messages: one for the Usage.cpp file and another for the Play.cpp file.

We have recently checked the source code of Mozilla Firefox. Although Firefox's code is built with Visual C++, it still doesn't contain .sln-files and is compiled through makefile. It is this makefile we have built a call of the console version of PVS-Studio into for each file (as described in the documentation). The messages in this mode are written all in a row into one large "raw" report file that can be later opened with PVS-Studio from Visual Studio. Then this "raw" report can be saved as .plog (PVS-Studio's xml-report). During conversion repeated messages are automatically filtered.

So, there were about 2 000 000 messages (with numerous duplicates) in the "raw" report. In the converted report, there were only 80 000 messages, i.e. 25 times fewer. It is this number that enables us to estimate the amount of message duplicates which are automatically filtered.

This example also confirms the idea that a static analyzer is a complex system, and it's not enough just to print error messages into stdout.

Popular related articles

S'abonner

Comments (0)

close comment form
close form

Remplissez le formulaire ci‑dessous en 2 étapes simples :

Vos coordonnées :

Étape 1
Félicitations ! Voici votre code promo !

Type de licence souhaité :

Étape 2
Team license
Enterprise licence
** En cliquant sur ce bouton, vous déclarez accepter notre politique de confidentialité
close form
Demandez des tarifs
Nouvelle licence
Renouvellement de licence
--Sélectionnez la devise--
USD
EUR
* En cliquant sur ce bouton, vous déclarez accepter notre politique de confidentialité

close form
La licence PVS‑Studio gratuit pour les spécialistes Microsoft MVP
close form
Pour obtenir la licence de votre projet open source, s’il vous plait rempliez ce formulaire
* En cliquant sur ce bouton, vous déclarez accepter notre politique de confidentialité

close form
I want to join the test
* En cliquant sur ce bouton, vous déclarez accepter notre politique de confidentialité

close form
check circle
Votre message a été envoyé.

Nous vous répondrons à


Si l'e-mail n'apparaît pas dans votre boîte de réception, recherchez-le dans l'un des dossiers suivants:

  • Promotion
  • Notifications
  • Spam