SlideShare ist ein Scribd-Unternehmen logo
1 von 4
Downloaden Sie, um offline zu lesen
Comparing PVS-Studio with other code
analyzers
Author: Evgeniy Ryzhkov

Date: 14.10.2009


Abstract
The article discusses comparison of PVS-Studio code analyzer with other solutions in this sphere. As PVS-
Studio contains modules for diagnosing 64-bit and parallel errors, it is compared to various types of
tools.


The approach to comparison
Programmers-users and developers of static code analyzers know how difficult it is to compare tools of
this type. For besides different classes of diagnosed errors, it is often very difficult to formalize diagnosis
of errors of even one type to "yes/no" estimate. However, such a comparison may be needed to make it
possible to select from several tools a solution fit for some particular task best.

In this article, we compare PVS-Studio code analyzer developed by OOO "Program Verification Systems"
with similar solutions. The article is intended for those users of the tool who want to have a basis for
choosing a code analyzer for their tasks.


What is compared to what?
The comparison is based on other articles by our authors where it is described more thoroughly what
had been compared and in what way. The readers who would like to make out the comparison methods
and principles may see additional materials.

We will single out two types of errors:

    •   "64-bit errors" - errors occurring when migrating from 32-bit systems to 64-bit ones or when
        developing new 64-bit applications;
    •   "parallel errors" - parallel programming errors occurring when using OpenMP technology
        incorrectly.

In the category "64-bit errors", the following four solutions participate: PVS-Studio (Viva64), PC-Lint,
C++-test, /Wp64 switch of Visual C++ or diagnostics emitted by Visual C++ x64 compiler. The choice is
explained by the fact that only these solutions have special support of diagnosing 64-bit errors described
in the documentation.

In the category "parallel errors", two solutions are compared: PVS-Studio (VivaMP) and Intel Parallel
Studio (Parallel Lint). These two tools allow diagnosing parallel errors when using OpenMP technology
on Windows-systems.

All the tools listed perform diagnosis of errors in C/C++ code.
Comparison of the tools was performed in the following way. For each group of errors (64-bit and
parallel errors) we created a base of patterns of errors described in the documentation for the tools
being compared. The tools to be compared were tested on the ability to detect errors of each type. The
results are given in the articles providing detailed comparisons of the tools. Proceeding from the results,
we gave a total estimate for each tool. This was done in the following way. If an error had been
diagnosed fully, the tool got 1 point; if partly, 0.5; if the error had not been diagnosed at all, 0 points.
Then a total estimate was calculated in per cent: 100% - all the error patterns had been detected; 0% -
no error patterns had been detected.


Diagnosis of 64-bit errors




                    Figure 1 - Results of comparing the tools for 64-bit error diagnosis

Here is an article providing a description of the base of error patterns and a detailed description of
comparison: "Comparison of analyzers' diagnostic possibilities at checking 64-bit code".

Let's explain the comparison results. It is not that some code analyzer is better and some other is worse.
But when diagnosing a particular type of errors ("64-bit errors") the analyzers show different results
and, fortunately, we can make our choice objectively.

We should specially mention the compiler switch /Wp64 in Visual Studio environment. Although this
switch is not a code analysis tool unlike other solutions mentioned here, it participated in the
comparison as well. Yet, its abilities of diagnosing 64-bit errors are very limited and this explains its low
total estimate. To learn more about it see the article "64 bits, Wp64, Visual Studio 2008, Viva64 and all
the rest...".


Diagnosis of parallel errors




              Figure 2 - Results of comparing the tools for OpenMP parallel error diagnosis

Here is an article with a description of the base of error patterns and a detailed description of
comparison:"An unsuccessful attempt to compare PVS-Studio (VivaMP) and Intel C/C++ ("Parallel Lint")".

This kind of comparison is much more incorrect than comparison in the sphere of 64-bit error diagnosis.
The point is that the number of error patterns diagnosed in Intel Parallel Studio is rather large. But
documentation on these patterns is too poor. Ideally, the base of patterns should be enlarged with the
errors diagnosed by Intel Parallel Studio but we cannot do this yet. That is why Intel Parallel Studio got
few points. This situation is described more thoroughly in the article with the detailed description of
comparison.


Comparison results
This article's point was not to try to show weak points of other developers' tools. We just tried to show
those tasks at which PVS-Studio is good. There are two such tasks:

    •   diagnosis of 64-bit errors;
    •   diagnosis of parallel OpenMP errors.

What these two tasks is concerned, our tool surpasses other similar solutions. For other tasks, it is
reasonable to use more suitable tools.


References
    1. Andrey Karpov. Comparison of analyzers' diagnostic possibilities at checking 64-bit code.
       http://www.viva64.com/art-1-2-914146540.html
2. Andrey Karpov. 64 bits, Wp64, Visual Studio 2008, Viva64 and all the rest...
   http://www.viva64.com/art-1-2-621693540.html
3. Andrey Karpov. An unsuccessful attempt to compare PVS-Studio (VivaMP) and Intel C/C++
   ("Parallel Lint"). http://www.viva64.com/art-3-2-1186541094.html

Weitere ähnliche Inhalte

Was ist angesagt?

Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case StudyModel-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Dharmalingam Ganesan
 

Was ist angesagt? (20)

Testing parallel programs
Testing parallel programsTesting parallel programs
Testing parallel programs
 
Static analysis as part of the development process in Unreal Engine
Static analysis as part of the development process in Unreal EngineStatic analysis as part of the development process in Unreal Engine
Static analysis as part of the development process in Unreal Engine
 
AspectMock
AspectMockAspectMock
AspectMock
 
test
testtest
test
 
Vs c# lecture6
Vs c# lecture6Vs c# lecture6
Vs c# lecture6
 
Comparing static analysis in Visual Studio 2012 (Visual C++ 2012) and PVS-Studio
Comparing static analysis in Visual Studio 2012 (Visual C++ 2012) and PVS-StudioComparing static analysis in Visual Studio 2012 (Visual C++ 2012) and PVS-Studio
Comparing static analysis in Visual Studio 2012 (Visual C++ 2012) and PVS-Studio
 
test
testtest
test
 
Automatic Test Case Generation
Automatic Test Case GenerationAutomatic Test Case Generation
Automatic Test Case Generation
 
.Net Debugging Techniques
.Net Debugging Techniques.Net Debugging Techniques
.Net Debugging Techniques
 
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case StudyModel-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
Model-based Testing using Microsoft’s Spec Explorer Tool: A Case Study
 
Lesson 7. The issues of detecting 64-bit errors
Lesson 7. The issues of detecting 64-bit errorsLesson 7. The issues of detecting 64-bit errors
Lesson 7. The issues of detecting 64-bit errors
 
Why to choose HP UFT: Automation testing tool
Why to choose HP UFT: Automation testing toolWhy to choose HP UFT: Automation testing tool
Why to choose HP UFT: Automation testing tool
 
Automated Test Case Generation and Execution from Models
Automated Test Case Generation and Execution from ModelsAutomated Test Case Generation and Execution from Models
Automated Test Case Generation and Execution from Models
 
Static and Dynamic Code Analysis
Static and Dynamic Code AnalysisStatic and Dynamic Code Analysis
Static and Dynamic Code Analysis
 
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
 
150412 38 beamer methods of binary analysis
150412 38 beamer methods of  binary analysis150412 38 beamer methods of  binary analysis
150412 38 beamer methods of binary analysis
 
Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDD
 
Unit Tests And Automated Testing
Unit Tests And Automated TestingUnit Tests And Automated Testing
Unit Tests And Automated Testing
 
Analysis of PascalABC.NET using SonarQube plugins: SonarC# and PVS-Studio
Analysis of PascalABC.NET using SonarQube plugins: SonarC# and PVS-StudioAnalysis of PascalABC.NET using SonarQube plugins: SonarC# and PVS-Studio
Analysis of PascalABC.NET using SonarQube plugins: SonarC# and PVS-Studio
 
Error handling and debugging in vb
Error handling and debugging in vbError handling and debugging in vb
Error handling and debugging in vb
 

Andere mochten auch

Andere mochten auch (20)

VivaMP, system of detecting errors in the code of parallel C++ programs using...
VivaMP, system of detecting errors in the code of parallel C++ programs using...VivaMP, system of detecting errors in the code of parallel C++ programs using...
VivaMP, system of detecting errors in the code of parallel C++ programs using...
 
Case Study: Porting a set of point cloud and triangle mesh processing C++ lib...
Case Study: Porting a set of point cloud and triangle mesh processing C++ lib...Case Study: Porting a set of point cloud and triangle mesh processing C++ lib...
Case Study: Porting a set of point cloud and triangle mesh processing C++ lib...
 
Interview with Issam Lahlali, one of the CppDepend tool creators
Interview with Issam Lahlali, one of the CppDepend tool creatorsInterview with Issam Lahlali, one of the CppDepend tool creators
Interview with Issam Lahlali, one of the CppDepend tool creators
 
Difficulties of comparing code analyzers, or don't forget about usability
Difficulties of comparing code analyzers, or don't forget about usabilityDifficulties of comparing code analyzers, or don't forget about usability
Difficulties of comparing code analyzers, or don't forget about usability
 
Lesson 24. Phantom errors
Lesson 24. Phantom errorsLesson 24. Phantom errors
Lesson 24. Phantom errors
 
Lesson 17. Pattern 9. Mixed arithmetic
Lesson 17. Pattern 9. Mixed arithmeticLesson 17. Pattern 9. Mixed arithmetic
Lesson 17. Pattern 9. Mixed arithmetic
 
Viva64: working up of 64-bit applications
Viva64: working up of 64-bit applicationsViva64: working up of 64-bit applications
Viva64: working up of 64-bit applications
 
Development of a static code analyzer for detecting errors of porting program...
Development of a static code analyzer for detecting errors of porting program...Development of a static code analyzer for detecting errors of porting program...
Development of a static code analyzer for detecting errors of porting program...
 
64-bit Loki
64-bit Loki64-bit Loki
64-bit Loki
 
Lesson 11. Pattern 3. Shift operations
Lesson 11. Pattern 3. Shift operationsLesson 11. Pattern 3. Shift operations
Lesson 11. Pattern 3. Shift operations
 
Lesson 23. Pattern 15. Growth of structures' sizes
Lesson 23. Pattern 15. Growth of structures' sizesLesson 23. Pattern 15. Growth of structures' sizes
Lesson 23. Pattern 15. Growth of structures' sizes
 
Mobile CRM Webinar: 6 Steps to Mobile ROI for Government Agencies
Mobile CRM Webinar: 6 Steps to Mobile ROI for Government AgenciesMobile CRM Webinar: 6 Steps to Mobile ROI for Government Agencies
Mobile CRM Webinar: 6 Steps to Mobile ROI for Government Agencies
 
Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)
Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)
Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)
 
Traps detection during migration of C and C++ code to 64-bit Windows
Traps detection during migration of C and C++ code to 64-bit WindowsTraps detection during migration of C and C++ code to 64-bit Windows
Traps detection during migration of C and C++ code to 64-bit Windows
 
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
 
Debugging and optimization of multi-thread OpenMP-programs
Debugging and optimization of multi-thread OpenMP-programsDebugging and optimization of multi-thread OpenMP-programs
Debugging and optimization of multi-thread OpenMP-programs
 
Optimization in the world of 64-bit errors
Optimization  in the world of 64-bit errorsOptimization  in the world of 64-bit errors
Optimization in the world of 64-bit errors
 
Lesson 21. Pattern 13. Data alignment
Lesson 21. Pattern 13. Data alignmentLesson 21. Pattern 13. Data alignment
Lesson 21. Pattern 13. Data alignment
 
Some examples of the 64-bit code errors
Some examples of the 64-bit code errorsSome examples of the 64-bit code errors
Some examples of the 64-bit code errors
 
PVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a solution for developers of modern resource-intensive applicationsPVS-Studio, a solution for developers of modern resource-intensive applications
PVS-Studio, a solution for developers of modern resource-intensive applications
 

Ähnlich wie Comparing PVS-Studio with other code analyzers

Diving into VS 2015 Day2
Diving into VS 2015 Day2Diving into VS 2015 Day2
Diving into VS 2015 Day2
Akhil Mittal
 

Ähnlich wie Comparing PVS-Studio with other 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
 
Difficulties of comparing code analyzers, or don't forget about usability
Difficulties of comparing code analyzers, or don't forget about usabilityDifficulties of comparing code analyzers, or don't forget about usability
Difficulties of comparing code analyzers, or don't forget about usability
 
Difficulties of comparing code analyzers, or don't forget about usability
Difficulties of comparing code analyzers, or don't forget about usabilityDifficulties of comparing code analyzers, or don't forget about usability
Difficulties of comparing code analyzers, or don't forget about usability
 
PVS-Studio for Visual C++
PVS-Studio for Visual C++PVS-Studio for Visual C++
PVS-Studio for Visual C++
 
Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...
 
What do static analysis and search engines have in common? A good "top"!
What do static analysis and search engines have in common? A good "top"!What do static analysis and search engines have in common? A good "top"!
What do static analysis and search engines have in common? A good "top"!
 
64 bits, Wp64, Visual Studio 2008, Viva64 and all the rest...
64 bits, Wp64, Visual Studio 2008, Viva64 and all the rest...64 bits, Wp64, Visual Studio 2008, Viva64 and all the rest...
64 bits, Wp64, Visual Studio 2008, Viva64 and all the rest...
 
Comparison of static code analyzers: CppCat, Cppcheck, PVS-Studio and Visual ...
Comparison of static code analyzers: CppCat, Cppcheck, PVS-Studio and Visual ...Comparison of static code analyzers: CppCat, Cppcheck, PVS-Studio and Visual ...
Comparison of static code analyzers: CppCat, Cppcheck, PVS-Studio and Visual ...
 
Diving into VS 2015 Day2
Diving into VS 2015 Day2Diving into VS 2015 Day2
Diving into VS 2015 Day2
 
Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...Static analysis is most efficient when being used regularly. We'll tell you w...
Static analysis is most efficient when being used regularly. We'll tell you w...
 
How PVS-Studio does the bug search: methods and technologies
How PVS-Studio does the bug search: methods and technologiesHow PVS-Studio does the bug search: methods and technologies
How PVS-Studio does the bug search: methods and technologies
 
Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers
Comparing Functionalities of PVS-Studio and CppCat Static Code AnalyzersComparing Functionalities of PVS-Studio and CppCat Static Code Analyzers
Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers
 
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...
 
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
 
A Long-Awaited Check of Unreal Engine 4
A Long-Awaited Check of Unreal Engine 4A Long-Awaited Check of Unreal Engine 4
A Long-Awaited Check of Unreal Engine 4
 
Searching for bugs in Mono: there are hundreds of them!
Searching for bugs in Mono: there are hundreds of them!Searching for bugs in Mono: there are hundreds of them!
Searching for bugs in Mono: there are hundreds of them!
 
How the PVS-Studio analyzer began to find even more errors in Unity projects
How the PVS-Studio analyzer began to find even more errors in Unity projectsHow the PVS-Studio analyzer began to find even more errors in Unity projects
How the PVS-Studio analyzer began to find even more errors in Unity projects
 
Viva64: What Is It, and Who Is It for?
Viva64: What Is It, and Who Is It for?Viva64: What Is It, and Who Is It for?
Viva64: What Is It, and Who Is It for?
 
How to Improve Visual C++ 2017 Libraries Using PVS-Studio
How to Improve Visual C++ 2017 Libraries Using PVS-StudioHow to Improve Visual C++ 2017 Libraries Using PVS-Studio
How to Improve Visual C++ 2017 Libraries Using PVS-Studio
 
VivaMP - a tool for OpenMP
VivaMP - a tool for OpenMPVivaMP - a tool for OpenMP
VivaMP - a tool for OpenMP
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

Comparing PVS-Studio with other code analyzers

  • 1. Comparing PVS-Studio with other code analyzers Author: Evgeniy Ryzhkov Date: 14.10.2009 Abstract The article discusses comparison of PVS-Studio code analyzer with other solutions in this sphere. As PVS- Studio contains modules for diagnosing 64-bit and parallel errors, it is compared to various types of tools. The approach to comparison Programmers-users and developers of static code analyzers know how difficult it is to compare tools of this type. For besides different classes of diagnosed errors, it is often very difficult to formalize diagnosis of errors of even one type to "yes/no" estimate. However, such a comparison may be needed to make it possible to select from several tools a solution fit for some particular task best. In this article, we compare PVS-Studio code analyzer developed by OOO "Program Verification Systems" with similar solutions. The article is intended for those users of the tool who want to have a basis for choosing a code analyzer for their tasks. What is compared to what? The comparison is based on other articles by our authors where it is described more thoroughly what had been compared and in what way. The readers who would like to make out the comparison methods and principles may see additional materials. We will single out two types of errors: • "64-bit errors" - errors occurring when migrating from 32-bit systems to 64-bit ones or when developing new 64-bit applications; • "parallel errors" - parallel programming errors occurring when using OpenMP technology incorrectly. In the category "64-bit errors", the following four solutions participate: PVS-Studio (Viva64), PC-Lint, C++-test, /Wp64 switch of Visual C++ or diagnostics emitted by Visual C++ x64 compiler. The choice is explained by the fact that only these solutions have special support of diagnosing 64-bit errors described in the documentation. In the category "parallel errors", two solutions are compared: PVS-Studio (VivaMP) and Intel Parallel Studio (Parallel Lint). These two tools allow diagnosing parallel errors when using OpenMP technology on Windows-systems. All the tools listed perform diagnosis of errors in C/C++ code.
  • 2. Comparison of the tools was performed in the following way. For each group of errors (64-bit and parallel errors) we created a base of patterns of errors described in the documentation for the tools being compared. The tools to be compared were tested on the ability to detect errors of each type. The results are given in the articles providing detailed comparisons of the tools. Proceeding from the results, we gave a total estimate for each tool. This was done in the following way. If an error had been diagnosed fully, the tool got 1 point; if partly, 0.5; if the error had not been diagnosed at all, 0 points. Then a total estimate was calculated in per cent: 100% - all the error patterns had been detected; 0% - no error patterns had been detected. Diagnosis of 64-bit errors Figure 1 - Results of comparing the tools for 64-bit error diagnosis Here is an article providing a description of the base of error patterns and a detailed description of comparison: "Comparison of analyzers' diagnostic possibilities at checking 64-bit code". Let's explain the comparison results. It is not that some code analyzer is better and some other is worse. But when diagnosing a particular type of errors ("64-bit errors") the analyzers show different results and, fortunately, we can make our choice objectively. We should specially mention the compiler switch /Wp64 in Visual Studio environment. Although this switch is not a code analysis tool unlike other solutions mentioned here, it participated in the comparison as well. Yet, its abilities of diagnosing 64-bit errors are very limited and this explains its low
  • 3. total estimate. To learn more about it see the article "64 bits, Wp64, Visual Studio 2008, Viva64 and all the rest...". Diagnosis of parallel errors Figure 2 - Results of comparing the tools for OpenMP parallel error diagnosis Here is an article with a description of the base of error patterns and a detailed description of comparison:"An unsuccessful attempt to compare PVS-Studio (VivaMP) and Intel C/C++ ("Parallel Lint")". This kind of comparison is much more incorrect than comparison in the sphere of 64-bit error diagnosis. The point is that the number of error patterns diagnosed in Intel Parallel Studio is rather large. But documentation on these patterns is too poor. Ideally, the base of patterns should be enlarged with the errors diagnosed by Intel Parallel Studio but we cannot do this yet. That is why Intel Parallel Studio got few points. This situation is described more thoroughly in the article with the detailed description of comparison. Comparison results This article's point was not to try to show weak points of other developers' tools. We just tried to show those tasks at which PVS-Studio is good. There are two such tasks: • diagnosis of 64-bit errors; • diagnosis of parallel OpenMP errors. What these two tasks is concerned, our tool surpasses other similar solutions. For other tasks, it is reasonable to use more suitable tools. References 1. Andrey Karpov. Comparison of analyzers' diagnostic possibilities at checking 64-bit code. http://www.viva64.com/art-1-2-914146540.html
  • 4. 2. Andrey Karpov. 64 bits, Wp64, Visual Studio 2008, Viva64 and all the rest... http://www.viva64.com/art-1-2-621693540.html 3. Andrey Karpov. An unsuccessful attempt to compare PVS-Studio (VivaMP) and Intel C/C++ ("Parallel Lint"). http://www.viva64.com/art-3-2-1186541094.html