SlideShare a Scribd company logo
1 of 6
Download to read offline
Comparing Functionalities of PVS-Studio 
and CppCat Static Code Analyzers 
Author: Andrey Karpov 
Date: 26.05.2014 
Our company develops two code analyzers to check C/C++ projects: PVS-Studio and CppCat. In this 
article, we are going to tell you about the functional differences between these two tools. 
PVS-Studio, CppCat 
PVS-Studio and CppCat are static code analysis tools. They allow developers to eliminate numbers of 
mistakes and typos at a lower cost. 
The PVS-Studio analyzer was our first software product. We tried to make it as simple and intuitive as 
possible. But we have failed, though we tried hard. 
In the course of its development, PVS-Studio grew to acquire more and more features, which inevitably 
lead to more complicated interface and settings. Implementation of custom-made diagnostic rules 
resulted in a number of possible usage modes, which also makes the tool more difficult to handle. 
However, we could not drop all that functionality. But the dream of making a simple, lightweight and 
inexpensive tool remained – thus we created a lightweight analyzer called CppCat. 
CppCat provides the basic functionality that allows one to use it in one's everyday work. The analyzer is 
easy to get started and work with. 
We advise that it is the CppCat analyzer that you should start with. And only if you feel you're missing 
some functionality, then try PVS-Studio. This article is meant to help you understand the functional 
similarities and differences between CppCat and PVS-Studio.
Brief functionality comparison 
Table 1. Functional capabilities of the CppCat and PVS-Studio analyzers. 
Detailed functionality comparison 
CppCat, PVS-Studio. Checking a whole solution or single files 
PVS-Studio and CppCat integrate into the Visual Studio environment and allow you to analyze the source 
code of applications written in the languages C, C++, C++/CLI, and C++/CX. 
You can check both an entire solution and its single files. 
PVS-Studio, in addition, allows you to check one project or a set of files selected in the project tree.
CppCat, PVS-Studio. General purpose diagnostics 
Both the analyzers provide a set of general purpose diagnostics. These diagnostics enable detection of 
the following bug patterns: 
• functions returning local variables' addresses; 
• arithmetic overflows and underflows; 
• array overrun; 
• double resource freeing; 
• dead code; 
• violation of "The Law of the Big Two". 
• inaccessible code; 
• uninitialized variables; 
• unused variables; 
• incorrect shift operations; 
• undefined/unspecified behavior; 
• incorrect handling of the HRESULT type; 
• incorrect assumptions about a function/class' operation; 
• typos (this kind of analysis is implemented especially well); 
• virtual destructor missing; 
• code formatting not meeting code execution logic; 
• errors related to Copy-Paste; 
• exception handling errors; 
• buffer overflows; 
• security vulnerabilities; 
• errors related to incorrect assumptions about operation precedence; 
• null pointer dereferencing; 
• integer division by 0; 
• loops executing more/fewer iterations than intended; 
• and so on and so forth. 
CppCat, PVS-Studio. Automatic analysis of files after compilation (incremental analysis) 
The PVS-Studio and CppCat analyzers can run automatically, which mode is enabled by default. 
Whenever they detect potentially dangerous code, they inform you by a pop-up message. 
CppCat, PVS-Studio. Support for Visual Studio 2010, 2012, 2013 
PVS-Studio and CppCat can integrate into the Visual Studio 2010, 2012, 2013 environments. 
PVS-Studio can also integrate into other environments – we will discuss this a bit further. 
For CppCat, we decided to refuse support of Visual Studio 2005 and 2008. The statistics we have 
gathered with the help of PVS-Studio show that pretty few developers use these IDE versions nowadays. 
The VS2005 and VS2008 environments are usually used in large, complex projects where moving to the 
newer versions is troublesome and expensive. To integrate into the development process in this case, 
CppCat's functionality will most likely be insufficient and you will have to use PVS-Studio. 
On the other hand, when working in one of the supported Visual Studio versions, you may specify in 
CppCat's settings to use the Visual Studio 2008 toolset. It will allow you to analyze Visual Studio 2008 
projects in Visual Studio 2013, for example. 
PVS-Studio. Specialized diagnostics: 64-bit, micro-optimizations 
PVS-Studio offers a few more additional rule sets:
1. 64-bit error diagnostics. This rule set will be useful when developing 64-bit projects handling 
large memory amounts. Static analysis is an efficient means of searching for many 64-bit errors. 
It's true that the analyzer produces quite a lot of false positives for this rule set, but the time 
spent on checking them will be greatly repaid by having your code free of hard-to-catch bugs 
that would otherwise take you weeks to hunt down. 
2. Microoptimizations. Static code analysis can help you detect fragments where 
microoptimizations can be applied. This rule set is not a full-blown substitute for profiling tools 
like Parallel Amplifier, CodeTune – it's just a small supplement to them. 
PVS-Studio. Team work support 
PVS-Studio provides a number of features that can be useful for team work on large projects. 
1. Saving the analysis report file in different formats. 
2. The possibility to specify the path to the project folder in the settings to get relative paths in the 
log file. It will allow you to open the saved log file on other computers with a different project 
location. 
3. The capability to integrate with bug tracking systems. 
PVS-Studio. Support for integration into build automation systems, MSBuild, command 
line version 
PVS-Studio supports a number of different usage modes. Which one should be chosen for a particular 
project depends on the type of the project and the intended results. Since it is impossible to provide for 
every possible mode, we help our customers integrate PVS-Studio into their development process, set 
up night builds on the server, and so on. If necessary, we also adapt PVS-Studio for customer needs or 
develop additional utilities. All these questions are solved individually. 
The main modes are: 
• Code analysis by PVS-Studio from the command line with the help of Microsoft Visual Studio or 
Embarcadero RAD Studio (provided that you have at hand vcproj/vcxproj project files for 
devenv.exe or cbproj project files for bds.exe); 
• Direct integration of the analyzer into build automation systems (when there are no project files 
.vcproj/.vcxproj/.cbproj available); 
• Direct integration into MSBuild's build process and the mode when MSBuild is integrated into 
the Visual Studio IDE. 
• Using PVS-Studio together with continuous integration systems. 
PVS-Studio. Support for Visual Studio 2005, 2008 
PVS-Studio supports integration into Visual Studio 2005 and 2008. 
PVS-Studio. Low-priority general purpose diagnostics 
PVS-Studio's diagnostics are grouped into 3 categories according to their severity level. The third level 
contains diagnostics that produce too many false positives or detect some subtle and insignificant 
defects in code. These diagnostics are turned off in PVS-Studio by default, but you may turn them on if 
necessary. The CppCat analyzer doesn't have these diagnostics at all. 
PVS-Studio. Standalone version 
PVS-Studio Standalone combines 3 main functions: 
1. Viewing analysis results (the .plog file) saved on another computer without having to run the 
Visual Studio IDE. 
2. Analyzing already prepared *.i files (obtained in any way in advance).
3. Compilation monitoring system. The analyzer monitors compiler calls and collects all the 
necessary information for further analysis. It enables you to check projects compiled by any 
build system. The monitoring process can be launched both manually and from a batch file. 
PVS-Studio. Customer's Specific Requests 
In PVS-Studio, we implement diagnostics irrelevant for most developers but urgent for some of our 
customers. New diagnostics to be added are discussed and implemented individually. 
PVS-Studio. Specific functionality, advanced settings 
PVS-Studio provides more advanced settings than CppCat. Here are some of them: 
• Control over preprocessor calls. By default, both CppCat and PVS-Studio will first try to call Clang 
to generate preprocessed files. If it fails, CL.exe (Visual C++) is then launched. In PVS-Studio, you 
may specify to use either Clang or CL. 
• You may choose to check only those files that have changed over a certain time period. 
• Specifying the number of threads for parallel analysis. 
• Turning off diagnostics individually. 
• Opening the documentation in Russian or English. 
• and so on. 
False positive suppression 
The table says nothing about the functionality of false positive suppression. False positive handling 
mechanisms are available both in PVS-Studio and CppCat, but they use different approaches. That's why 
we decided to discuss this subject separately. 
CppCat and PVS-Studio use different approaches. In CppCat, the user sees a fixed list of warnings. 
Having no choice here is not a disadvantage as it may seem at first. We have selected the diagnostics 
with a considerable ratio of useful messages to false positives. Why it is so important is discussed here 
(see the answer to the question "I have analyzed my code and found nothing. Why?"). 
PVS-Studio generates numbers and numbers of messages, for it includes custom-made diagnostics, 64- 
bit diagnostics producing lots of false positives, and so on. That's why PVS-Studio offers the mechanism 
of turning single diagnostics or their groups on/off. At the same time, we don't think this mechanism to 
be an advantage – it's just that we are forced to implement it. 
PVS-Studio allows you to: 
• turn on/off single diagnostics; 
• turn on/off warnings of different levels; 
• turn on/off warnings marked as false positives. 
Now to the question of suppressing single false positives. 
Both the tools offer the following mechanisms to eliminate false positives: 
• suppressing a false positive in a particular line by a comment of the "//-Vxxx" pattern; 
• suppressing false positives in certain macros; 
• suppressing false positives in lines containing a certain error pattern; 
• suppressing warnings for particular folders or files. 
PVS-Studio also provides the following additional mechanisms: 
• excluding files from analysis by mask; 
• excluding diagnostic messages by error description text.
All these mechanisms are described in detail in the documentation. 
References 
1. PVS-Studio for Visual C++. 
2. An Alternative to PVS-Studio at $250. 
3. Comparison of static code analyzers: CppCat, Cppcheck, PVS-Studio, Visual Studio.

More Related Content

What's hot

Using PVS-Studio analyzer together with Microsoft Visual Studio 2010 incremen...
Using PVS-Studio analyzer together with Microsoft Visual Studio 2010 incremen...Using PVS-Studio analyzer together with Microsoft Visual Studio 2010 incremen...
Using PVS-Studio analyzer together with Microsoft Visual Studio 2010 incremen...PVS-Studio
 
Android Test Driven Development
Android Test Driven DevelopmentAndroid Test Driven Development
Android Test Driven DevelopmentArif Huda
 
PVS-Studio static analyzer: advanced features
PVS-Studio static analyzer: advanced featuresPVS-Studio static analyzer: advanced features
PVS-Studio static analyzer: advanced featuresAndrey Karpov
 
Hyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkitHyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkit7mind
 
Spring Testing, Fight for the Context
Spring Testing, Fight for the ContextSpring Testing, Fight for the Context
Spring Testing, Fight for the ContextGlobalLogic Ukraine
 
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Wolfgang Grieskamp
 
Practical unit testing in c & c++
Practical unit testing in c & c++Practical unit testing in c & c++
Practical unit testing in c & c++Matt Hargett
 
Introduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightIntroduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightOpenDaylight
 
Automated Testing for Embedded Software in C or C++
Automated Testing for Embedded Software in C or C++Automated Testing for Embedded Software in C or C++
Automated Testing for Embedded Software in C or C++Lars Thorup
 
ScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency InjectionScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency Injection7mind
 
STAMP at Open Cloud Forum by OW2 2017
STAMP at Open Cloud Forum by OW2 2017STAMP at Open Cloud Forum by OW2 2017
STAMP at Open Cloud Forum by OW2 2017STAMP Project
 
Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.Deepak Singhvi
 
prohuddle-utPLSQL v3 - Ultimate unit testing framework for Oracle
prohuddle-utPLSQL v3 - Ultimate unit testing framework for Oracleprohuddle-utPLSQL v3 - Ultimate unit testing framework for Oracle
prohuddle-utPLSQL v3 - Ultimate unit testing framework for OracleJacek Gebal
 
Stamp Project presentation at OW2con'17
Stamp Project presentation at OW2con'17Stamp Project presentation at OW2con'17
Stamp Project presentation at OW2con'17STAMP Project
 
SophiaConf 2018 - P. Urso (Activeeon)
SophiaConf 2018 - P. Urso (Activeeon)SophiaConf 2018 - P. Urso (Activeeon)
SophiaConf 2018 - P. Urso (Activeeon)TelecomValley
 
20111018 boost and gtest
20111018 boost and gtest20111018 boost and gtest
20111018 boost and gtestWill Shen
 
Agile analysis development
Agile analysis developmentAgile analysis development
Agile analysis developmentsetitesuk
 
Izumi 1.0: Your Next Scala Stack
Izumi 1.0: Your Next Scala StackIzumi 1.0: Your Next Scala Stack
Izumi 1.0: Your Next Scala Stack7mind
 
Declarative Performance Testing Automation - Automating Performance Testing f...
Declarative Performance Testing Automation - Automating Performance Testing f...Declarative Performance Testing Automation - Automating Performance Testing f...
Declarative Performance Testing Automation - Automating Performance Testing f...Vincenzo Ferme
 

What's hot (20)

Using PVS-Studio analyzer together with Microsoft Visual Studio 2010 incremen...
Using PVS-Studio analyzer together with Microsoft Visual Studio 2010 incremen...Using PVS-Studio analyzer together with Microsoft Visual Studio 2010 incremen...
Using PVS-Studio analyzer together with Microsoft Visual Studio 2010 incremen...
 
Android Test Driven Development
Android Test Driven DevelopmentAndroid Test Driven Development
Android Test Driven Development
 
PVS-Studio static analyzer: advanced features
PVS-Studio static analyzer: advanced featuresPVS-Studio static analyzer: advanced features
PVS-Studio static analyzer: advanced features
 
Hyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkitHyper-pragmatic Pure FP testing with distage-testkit
Hyper-pragmatic Pure FP testing with distage-testkit
 
Spring Testing, Fight for the Context
Spring Testing, Fight for the ContextSpring Testing, Fight for the Context
Spring Testing, Fight for the Context
 
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
Model-Based Testing: Theory and Practice. Keynote @ MoTiP (ISSRE) 2012.
 
Practical unit testing in c & c++
Practical unit testing in c & c++Practical unit testing in c & c++
Practical unit testing in c & c++
 
Introduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightIntroduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylight
 
Automated Testing for Embedded Software in C or C++
Automated Testing for Embedded Software in C or C++Automated Testing for Embedded Software in C or C++
Automated Testing for Embedded Software in C or C++
 
ScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency InjectionScalaUA - distage: Staged Dependency Injection
ScalaUA - distage: Staged Dependency Injection
 
STAMP at Open Cloud Forum by OW2 2017
STAMP at Open Cloud Forum by OW2 2017STAMP at Open Cloud Forum by OW2 2017
STAMP at Open Cloud Forum by OW2 2017
 
Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.Testing and Mocking Object - The Art of Mocking.
Testing and Mocking Object - The Art of Mocking.
 
prohuddle-utPLSQL v3 - Ultimate unit testing framework for Oracle
prohuddle-utPLSQL v3 - Ultimate unit testing framework for Oracleprohuddle-utPLSQL v3 - Ultimate unit testing framework for Oracle
prohuddle-utPLSQL v3 - Ultimate unit testing framework for Oracle
 
Stamp Project presentation at OW2con'17
Stamp Project presentation at OW2con'17Stamp Project presentation at OW2con'17
Stamp Project presentation at OW2con'17
 
SophiaConf 2018 - P. Urso (Activeeon)
SophiaConf 2018 - P. Urso (Activeeon)SophiaConf 2018 - P. Urso (Activeeon)
SophiaConf 2018 - P. Urso (Activeeon)
 
20111018 boost and gtest
20111018 boost and gtest20111018 boost and gtest
20111018 boost and gtest
 
Agile analysis development
Agile analysis developmentAgile analysis development
Agile analysis development
 
Izumi 1.0: Your Next Scala Stack
Izumi 1.0: Your Next Scala StackIzumi 1.0: Your Next Scala Stack
Izumi 1.0: Your Next Scala Stack
 
Junit
JunitJunit
Junit
 
Declarative Performance Testing Automation - Automating Performance Testing f...
Declarative Performance Testing Automation - Automating Performance Testing f...Declarative Performance Testing Automation - Automating Performance Testing f...
Declarative Performance Testing Automation - Automating Performance Testing f...
 

Viewers also liked

Virtual Method Table and accident prevention
Virtual Method Table and accident preventionVirtual Method Table and accident prevention
Virtual Method Table and accident preventionAndrey Karpov
 
CppCat Static Analyzer Review
CppCat Static Analyzer ReviewCppCat Static Analyzer Review
CppCat Static Analyzer ReviewAndrey Karpov
 
A Boring Article About a Check of the OpenSSL Project
A Boring Article About a Check of the OpenSSL ProjectA Boring Article About a Check of the OpenSSL Project
A Boring Article About a Check of the OpenSSL ProjectAndrey Karpov
 
Going On with the Check of Geant4
Going On with the Check of Geant4Going On with the Check of Geant4
Going On with the Check of Geant4Andrey Karpov
 
Mathematicians: Trust, but Verify
Mathematicians: Trust, but VerifyMathematicians: Trust, but Verify
Mathematicians: Trust, but VerifyAndrey Karpov
 
An Experiment with Checking the glibc Library
An Experiment with Checking the glibc LibraryAn Experiment with Checking the glibc Library
An Experiment with Checking the glibc LibraryAndrey Karpov
 
Program errors occurring while porting C++ code from 32-bit platforms on 64-b...
Program errors occurring while porting C++ code from 32-bit platforms on 64-b...Program errors occurring while porting C++ code from 32-bit platforms on 64-b...
Program errors occurring while porting C++ code from 32-bit platforms on 64-b...Andrey Karpov
 
Scientific Work of OOO "Program Verification Systems" Company
Scientific Work of OOO "Program Verification Systems" CompanyScientific Work of OOO "Program Verification Systems" Company
Scientific Work of OOO "Program Verification Systems" CompanyAndrey Karpov
 
ADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаAndrey Karpov
 
Seven Steps of Migrating a Program to a 64-bit System
Seven Steps of Migrating a Program to a 64-bit SystemSeven Steps of Migrating a Program to a 64-bit System
Seven Steps of Migrating a Program to a 64-bit SystemAndrey Karpov
 
A 64-bit horse that can count
A 64-bit horse that can countA 64-bit horse that can count
A 64-bit horse that can countAndrey Karpov
 
Static code analysis and the new language standard C++0x
Static code analysis and the new language standard C++0xStatic code analysis and the new language standard C++0x
Static code analysis and the new language standard C++0xAndrey Karpov
 
Intel IPP Samples for Windows - error correction
Intel IPP Samples for Windows - error correctionIntel IPP Samples for Windows - error correction
Intel IPP Samples for Windows - error correctionAndrey Karpov
 
Things to Remember When Developing 64-bit Software
Things to Remember When Developing 64-bit SoftwareThings to Remember When Developing 64-bit Software
Things to Remember When Developing 64-bit SoftwareAndrey Karpov
 
Undefined behavior is closer than you think
Undefined behavior is closer than you thinkUndefined behavior is closer than you think
Undefined behavior is closer than you thinkAndrey Karpov
 

Viewers also liked (15)

Virtual Method Table and accident prevention
Virtual Method Table and accident preventionVirtual Method Table and accident prevention
Virtual Method Table and accident prevention
 
CppCat Static Analyzer Review
CppCat Static Analyzer ReviewCppCat Static Analyzer Review
CppCat Static Analyzer Review
 
A Boring Article About a Check of the OpenSSL Project
A Boring Article About a Check of the OpenSSL ProjectA Boring Article About a Check of the OpenSSL Project
A Boring Article About a Check of the OpenSSL Project
 
Going On with the Check of Geant4
Going On with the Check of Geant4Going On with the Check of Geant4
Going On with the Check of Geant4
 
Mathematicians: Trust, but Verify
Mathematicians: Trust, but VerifyMathematicians: Trust, but Verify
Mathematicians: Trust, but Verify
 
An Experiment with Checking the glibc Library
An Experiment with Checking the glibc LibraryAn Experiment with Checking the glibc Library
An Experiment with Checking the glibc Library
 
Program errors occurring while porting C++ code from 32-bit platforms on 64-b...
Program errors occurring while porting C++ code from 32-bit platforms on 64-b...Program errors occurring while porting C++ code from 32-bit platforms on 64-b...
Program errors occurring while porting C++ code from 32-bit platforms on 64-b...
 
Scientific Work of OOO "Program Verification Systems" Company
Scientific Work of OOO "Program Verification Systems" CompanyScientific Work of OOO "Program Verification Systems" Company
Scientific Work of OOO "Program Verification Systems" Company
 
ADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кода
 
Seven Steps of Migrating a Program to a 64-bit System
Seven Steps of Migrating a Program to a 64-bit SystemSeven Steps of Migrating a Program to a 64-bit System
Seven Steps of Migrating a Program to a 64-bit System
 
A 64-bit horse that can count
A 64-bit horse that can countA 64-bit horse that can count
A 64-bit horse that can count
 
Static code analysis and the new language standard C++0x
Static code analysis and the new language standard C++0xStatic code analysis and the new language standard C++0x
Static code analysis and the new language standard C++0x
 
Intel IPP Samples for Windows - error correction
Intel IPP Samples for Windows - error correctionIntel IPP Samples for Windows - error correction
Intel IPP Samples for Windows - error correction
 
Things to Remember When Developing 64-bit Software
Things to Remember When Developing 64-bit SoftwareThings to Remember When Developing 64-bit Software
Things to Remember When Developing 64-bit Software
 
Undefined behavior is closer than you think
Undefined behavior is closer than you thinkUndefined behavior is closer than you think
Undefined behavior is closer than you think
 

Similar to Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers

PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codeAndrey Karpov
 
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio
 
PVS-Studio Has Finally Got to Boost
PVS-Studio Has Finally Got to BoostPVS-Studio Has Finally Got to Boost
PVS-Studio Has Finally Got to BoostAndrey Karpov
 
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...Andrey Karpov
 
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...Andrey Karpov
 
Checking the Source SDK Project
Checking the Source SDK ProjectChecking the Source SDK Project
Checking the Source SDK ProjectAndrey Karpov
 
Static Analysis: From Getting Started to Integration
Static Analysis: From Getting Started to IntegrationStatic Analysis: From Getting Started to Integration
Static Analysis: From Getting Started to IntegrationAndrey Karpov
 
New Year PVS-Studio 6.00 Release: Scanning Roslyn
New Year PVS-Studio 6.00 Release: Scanning RoslynNew Year PVS-Studio 6.00 Release: Scanning Roslyn
New Year PVS-Studio 6.00 Release: Scanning RoslynPVS-Studio
 
What's the Difference Between Static Analysis and Compiler Warnings?
What's the Difference Between Static Analysis and Compiler Warnings?What's the Difference Between Static Analysis and Compiler Warnings?
What's the Difference Between Static Analysis and Compiler Warnings?Andrey Karpov
 
How we test the code analyzer
How we test the code analyzerHow we test the code analyzer
How we test the code analyzerPVS-Studio
 
HPX and PVS-Studio
HPX and PVS-StudioHPX and PVS-Studio
HPX and PVS-StudioPVS-Studio
 
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...Anil Sharma
 
PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)Andrey Karpov
 
Trying to Sell PVS-Studio to Google, or New Bugs in Chromium
Trying to Sell PVS-Studio to Google, or New Bugs in ChromiumTrying to Sell PVS-Studio to Google, or New Bugs in Chromium
Trying to Sell PVS-Studio to Google, or New Bugs in ChromiumAndrey Karpov
 
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...Andrey Karpov
 
How we test the code analyzer
How we test the code analyzerHow we test the code analyzer
How we test the code analyzerPVS-Studio
 
We continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellWe continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellPVS-Studio
 
PVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOps
PVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOpsPVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOps
PVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOpsAndrey Karpov
 
Analysis of merge requests in GitLab using PVS-Studio for C#
Analysis of merge requests in GitLab using PVS-Studio for C#Analysis of merge requests in GitLab using PVS-Studio for C#
Analysis of merge requests in GitLab using PVS-Studio for C#Andrey Karpov
 
Information sheet PVS-Studio
Information sheet PVS-StudioInformation sheet PVS-Studio
Information sheet PVS-StudioPVS-Studio
 

Similar to Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers (20)

PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ code
 
PVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ codePVS-Studio advertisement - static analysis of C/C++ code
PVS-Studio advertisement - static analysis of C/C++ code
 
PVS-Studio Has Finally Got to Boost
PVS-Studio Has Finally Got to BoostPVS-Studio Has Finally Got to Boost
PVS-Studio Has Finally Got to Boost
 
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
PVS-Studio Now Supports Any Build System under Windows and Any Compiler. Easy...
 
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
You can now use PVS-Studio with Visual Studio absent; just give it the prepro...
 
Checking the Source SDK Project
Checking the Source SDK ProjectChecking the Source SDK Project
Checking the Source SDK Project
 
Static Analysis: From Getting Started to Integration
Static Analysis: From Getting Started to IntegrationStatic Analysis: From Getting Started to Integration
Static Analysis: From Getting Started to Integration
 
New Year PVS-Studio 6.00 Release: Scanning Roslyn
New Year PVS-Studio 6.00 Release: Scanning RoslynNew Year PVS-Studio 6.00 Release: Scanning Roslyn
New Year PVS-Studio 6.00 Release: Scanning Roslyn
 
What's the Difference Between Static Analysis and Compiler Warnings?
What's the Difference Between Static Analysis and Compiler Warnings?What's the Difference Between Static Analysis and Compiler Warnings?
What's the Difference Between Static Analysis and Compiler Warnings?
 
How we test the code analyzer
How we test the code analyzerHow we test the code analyzer
How we test the code analyzer
 
HPX and PVS-Studio
HPX and PVS-StudioHPX and PVS-Studio
HPX and PVS-Studio
 
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
tutorials-visual-studio_visual-studio-2015-preview-comes-with-emulator-for-an...
 
PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)
 
Trying to Sell PVS-Studio to Google, or New Bugs in Chromium
Trying to Sell PVS-Studio to Google, or New Bugs in ChromiumTrying to Sell PVS-Studio to Google, or New Bugs in Chromium
Trying to Sell PVS-Studio to Google, or New Bugs in Chromium
 
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...
PVS-Studio and CppCat: An Interview with Andrey Karpov, the Project CTO and D...
 
How we test the code analyzer
How we test the code analyzerHow we test the code analyzer
How we test the code analyzer
 
We continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShellWe continue checking Microsoft projects: analysis of PowerShell
We continue checking Microsoft projects: analysis of PowerShell
 
PVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOps
PVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOpsPVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOps
PVS-Studio Is Now in Chocolatey: Checking Chocolatey under Azure DevOps
 
Analysis of merge requests in GitLab using PVS-Studio for C#
Analysis of merge requests in GitLab using PVS-Studio for C#Analysis of merge requests in GitLab using PVS-Studio for C#
Analysis of merge requests in GitLab using PVS-Studio for C#
 
Information sheet PVS-Studio
Information sheet PVS-StudioInformation sheet PVS-Studio
Information sheet PVS-Studio
 

More from Andrey Karpov

60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста60 антипаттернов для С++ программиста
60 антипаттернов для С++ программистаAndrey Karpov
 
60 terrible tips for a C++ developer
60 terrible tips for a C++ developer60 terrible tips for a C++ developer
60 terrible tips for a C++ developerAndrey Karpov
 
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Andrey Karpov
 
PVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesPVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesAndrey Karpov
 
PVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature OverviewPVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature OverviewAndrey Karpov
 
PVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокPVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокAndrey Karpov
 
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Andrey Karpov
 
Best Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' MistakesBest Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' MistakesAndrey Karpov
 
Does static analysis need machine learning?
Does static analysis need machine learning?Does static analysis need machine learning?
Does static analysis need machine learning?Andrey Karpov
 
Typical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and JavaTypical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and JavaAndrey Karpov
 
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)Andrey Karpov
 
Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?Andrey Karpov
 
C++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical ReviewerC++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical ReviewerAndrey Karpov
 
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareThe Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareAndrey Karpov
 
Static Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal EngineStatic Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal EngineAndrey Karpov
 
Safety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded SystemsSafety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded SystemsAndrey Karpov
 
The Great and Mighty C++
The Great and Mighty C++The Great and Mighty C++
The Great and Mighty C++Andrey Karpov
 
Static code analysis: what? how? why?
Static code analysis: what? how? why?Static code analysis: what? how? why?
Static code analysis: what? how? why?Andrey Karpov
 
Zero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for youZero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for youAndrey Karpov
 

More from Andrey Karpov (20)

60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста60 антипаттернов для С++ программиста
60 антипаттернов для С++ программиста
 
60 terrible tips for a C++ developer
60 terrible tips for a C++ developer60 terrible tips for a C++ developer
60 terrible tips for a C++ developer
 
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
 
PVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error ExamplesPVS-Studio in 2021 - Error Examples
PVS-Studio in 2021 - Error Examples
 
PVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature OverviewPVS-Studio in 2021 - Feature Overview
PVS-Studio in 2021 - Feature Overview
 
PVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибокPVS-Studio в 2021 - Примеры ошибок
PVS-Studio в 2021 - Примеры ошибок
 
PVS-Studio в 2021
PVS-Studio в 2021PVS-Studio в 2021
PVS-Studio в 2021
 
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
Make Your and Other Programmer’s Life Easier with Static Analysis (Unreal Eng...
 
Best Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' MistakesBest Bugs from Games: Fellow Programmers' Mistakes
Best Bugs from Games: Fellow Programmers' Mistakes
 
Does static analysis need machine learning?
Does static analysis need machine learning?Does static analysis need machine learning?
Does static analysis need machine learning?
 
Typical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and JavaTypical errors in code on the example of C++, C#, and Java
Typical errors in code on the example of C++, C#, and Java
 
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
How to Fix Hundreds of Bugs in Legacy Code and Not Die (Unreal Engine 4)
 
Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?Game Engine Code Quality: Is Everything Really That Bad?
Game Engine Code Quality: Is Everything Really That Bad?
 
C++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical ReviewerC++ Code as Seen by a Hypercritical Reviewer
C++ Code as Seen by a Hypercritical Reviewer
 
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source SoftwareThe Use of Static Code Analysis When Teaching or Developing Open-Source Software
The Use of Static Code Analysis When Teaching or Developing Open-Source Software
 
Static Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal EngineStatic Code Analysis for Projects, Built on Unreal Engine
Static Code Analysis for Projects, Built on Unreal Engine
 
Safety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded SystemsSafety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
Safety on the Max: How to Write Reliable C/C++ Code for Embedded Systems
 
The Great and Mighty C++
The Great and Mighty C++The Great and Mighty C++
The Great and Mighty C++
 
Static code analysis: what? how? why?
Static code analysis: what? how? why?Static code analysis: what? how? why?
Static code analysis: what? how? why?
 
Zero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for youZero, one, two, Freddy's coming for you
Zero, one, two, Freddy's coming for you
 

Recently uploaded

cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutionsmonugehlot87
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 

Recently uploaded (20)

cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutions
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 

Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers

  • 1. Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers Author: Andrey Karpov Date: 26.05.2014 Our company develops two code analyzers to check C/C++ projects: PVS-Studio and CppCat. In this article, we are going to tell you about the functional differences between these two tools. PVS-Studio, CppCat PVS-Studio and CppCat are static code analysis tools. They allow developers to eliminate numbers of mistakes and typos at a lower cost. The PVS-Studio analyzer was our first software product. We tried to make it as simple and intuitive as possible. But we have failed, though we tried hard. In the course of its development, PVS-Studio grew to acquire more and more features, which inevitably lead to more complicated interface and settings. Implementation of custom-made diagnostic rules resulted in a number of possible usage modes, which also makes the tool more difficult to handle. However, we could not drop all that functionality. But the dream of making a simple, lightweight and inexpensive tool remained – thus we created a lightweight analyzer called CppCat. CppCat provides the basic functionality that allows one to use it in one's everyday work. The analyzer is easy to get started and work with. We advise that it is the CppCat analyzer that you should start with. And only if you feel you're missing some functionality, then try PVS-Studio. This article is meant to help you understand the functional similarities and differences between CppCat and PVS-Studio.
  • 2. Brief functionality comparison Table 1. Functional capabilities of the CppCat and PVS-Studio analyzers. Detailed functionality comparison CppCat, PVS-Studio. Checking a whole solution or single files PVS-Studio and CppCat integrate into the Visual Studio environment and allow you to analyze the source code of applications written in the languages C, C++, C++/CLI, and C++/CX. You can check both an entire solution and its single files. PVS-Studio, in addition, allows you to check one project or a set of files selected in the project tree.
  • 3. CppCat, PVS-Studio. General purpose diagnostics Both the analyzers provide a set of general purpose diagnostics. These diagnostics enable detection of the following bug patterns: • functions returning local variables' addresses; • arithmetic overflows and underflows; • array overrun; • double resource freeing; • dead code; • violation of "The Law of the Big Two". • inaccessible code; • uninitialized variables; • unused variables; • incorrect shift operations; • undefined/unspecified behavior; • incorrect handling of the HRESULT type; • incorrect assumptions about a function/class' operation; • typos (this kind of analysis is implemented especially well); • virtual destructor missing; • code formatting not meeting code execution logic; • errors related to Copy-Paste; • exception handling errors; • buffer overflows; • security vulnerabilities; • errors related to incorrect assumptions about operation precedence; • null pointer dereferencing; • integer division by 0; • loops executing more/fewer iterations than intended; • and so on and so forth. CppCat, PVS-Studio. Automatic analysis of files after compilation (incremental analysis) The PVS-Studio and CppCat analyzers can run automatically, which mode is enabled by default. Whenever they detect potentially dangerous code, they inform you by a pop-up message. CppCat, PVS-Studio. Support for Visual Studio 2010, 2012, 2013 PVS-Studio and CppCat can integrate into the Visual Studio 2010, 2012, 2013 environments. PVS-Studio can also integrate into other environments – we will discuss this a bit further. For CppCat, we decided to refuse support of Visual Studio 2005 and 2008. The statistics we have gathered with the help of PVS-Studio show that pretty few developers use these IDE versions nowadays. The VS2005 and VS2008 environments are usually used in large, complex projects where moving to the newer versions is troublesome and expensive. To integrate into the development process in this case, CppCat's functionality will most likely be insufficient and you will have to use PVS-Studio. On the other hand, when working in one of the supported Visual Studio versions, you may specify in CppCat's settings to use the Visual Studio 2008 toolset. It will allow you to analyze Visual Studio 2008 projects in Visual Studio 2013, for example. PVS-Studio. Specialized diagnostics: 64-bit, micro-optimizations PVS-Studio offers a few more additional rule sets:
  • 4. 1. 64-bit error diagnostics. This rule set will be useful when developing 64-bit projects handling large memory amounts. Static analysis is an efficient means of searching for many 64-bit errors. It's true that the analyzer produces quite a lot of false positives for this rule set, but the time spent on checking them will be greatly repaid by having your code free of hard-to-catch bugs that would otherwise take you weeks to hunt down. 2. Microoptimizations. Static code analysis can help you detect fragments where microoptimizations can be applied. This rule set is not a full-blown substitute for profiling tools like Parallel Amplifier, CodeTune – it's just a small supplement to them. PVS-Studio. Team work support PVS-Studio provides a number of features that can be useful for team work on large projects. 1. Saving the analysis report file in different formats. 2. The possibility to specify the path to the project folder in the settings to get relative paths in the log file. It will allow you to open the saved log file on other computers with a different project location. 3. The capability to integrate with bug tracking systems. PVS-Studio. Support for integration into build automation systems, MSBuild, command line version PVS-Studio supports a number of different usage modes. Which one should be chosen for a particular project depends on the type of the project and the intended results. Since it is impossible to provide for every possible mode, we help our customers integrate PVS-Studio into their development process, set up night builds on the server, and so on. If necessary, we also adapt PVS-Studio for customer needs or develop additional utilities. All these questions are solved individually. The main modes are: • Code analysis by PVS-Studio from the command line with the help of Microsoft Visual Studio or Embarcadero RAD Studio (provided that you have at hand vcproj/vcxproj project files for devenv.exe or cbproj project files for bds.exe); • Direct integration of the analyzer into build automation systems (when there are no project files .vcproj/.vcxproj/.cbproj available); • Direct integration into MSBuild's build process and the mode when MSBuild is integrated into the Visual Studio IDE. • Using PVS-Studio together with continuous integration systems. PVS-Studio. Support for Visual Studio 2005, 2008 PVS-Studio supports integration into Visual Studio 2005 and 2008. PVS-Studio. Low-priority general purpose diagnostics PVS-Studio's diagnostics are grouped into 3 categories according to their severity level. The third level contains diagnostics that produce too many false positives or detect some subtle and insignificant defects in code. These diagnostics are turned off in PVS-Studio by default, but you may turn them on if necessary. The CppCat analyzer doesn't have these diagnostics at all. PVS-Studio. Standalone version PVS-Studio Standalone combines 3 main functions: 1. Viewing analysis results (the .plog file) saved on another computer without having to run the Visual Studio IDE. 2. Analyzing already prepared *.i files (obtained in any way in advance).
  • 5. 3. Compilation monitoring system. The analyzer monitors compiler calls and collects all the necessary information for further analysis. It enables you to check projects compiled by any build system. The monitoring process can be launched both manually and from a batch file. PVS-Studio. Customer's Specific Requests In PVS-Studio, we implement diagnostics irrelevant for most developers but urgent for some of our customers. New diagnostics to be added are discussed and implemented individually. PVS-Studio. Specific functionality, advanced settings PVS-Studio provides more advanced settings than CppCat. Here are some of them: • Control over preprocessor calls. By default, both CppCat and PVS-Studio will first try to call Clang to generate preprocessed files. If it fails, CL.exe (Visual C++) is then launched. In PVS-Studio, you may specify to use either Clang or CL. • You may choose to check only those files that have changed over a certain time period. • Specifying the number of threads for parallel analysis. • Turning off diagnostics individually. • Opening the documentation in Russian or English. • and so on. False positive suppression The table says nothing about the functionality of false positive suppression. False positive handling mechanisms are available both in PVS-Studio and CppCat, but they use different approaches. That's why we decided to discuss this subject separately. CppCat and PVS-Studio use different approaches. In CppCat, the user sees a fixed list of warnings. Having no choice here is not a disadvantage as it may seem at first. We have selected the diagnostics with a considerable ratio of useful messages to false positives. Why it is so important is discussed here (see the answer to the question "I have analyzed my code and found nothing. Why?"). PVS-Studio generates numbers and numbers of messages, for it includes custom-made diagnostics, 64- bit diagnostics producing lots of false positives, and so on. That's why PVS-Studio offers the mechanism of turning single diagnostics or their groups on/off. At the same time, we don't think this mechanism to be an advantage – it's just that we are forced to implement it. PVS-Studio allows you to: • turn on/off single diagnostics; • turn on/off warnings of different levels; • turn on/off warnings marked as false positives. Now to the question of suppressing single false positives. Both the tools offer the following mechanisms to eliminate false positives: • suppressing a false positive in a particular line by a comment of the "//-Vxxx" pattern; • suppressing false positives in certain macros; • suppressing false positives in lines containing a certain error pattern; • suppressing warnings for particular folders or files. PVS-Studio also provides the following additional mechanisms: • excluding files from analysis by mask; • excluding diagnostic messages by error description text.
  • 6. All these mechanisms are described in detail in the documentation. References 1. PVS-Studio for Visual C++. 2. An Alternative to PVS-Studio at $250. 3. Comparison of static code analyzers: CppCat, Cppcheck, PVS-Studio, Visual Studio.