|
|
|
PVS-Studio Static Code Analyzer for 64-bit and parallel C/C++ code
|
28.06.2010
Why is the number of the line where an issue was found sometimes absent in the Error List in PVS-Studio?Sometimes the PVS-Studio code analyzer seems to find an issue in the code on which it generates a message, specifies the file name but does not show the number of the line with the issue as shown in the figure. »
11.06.2010
New diagnostic functions implemented in PVS-Studio 3.601. »
07.06.2010
Communication between developers and users
Abstract
When developing software products, developers need very much to get feedback from users of their programs. »

22.07.2010
Using PVS-Studio with continuous integration systemsThis article illustrates techniques required to employ the use of PVS-Studio static code analyzer together with continuous integration systems. »
06.07.2010
Comparing capabilities of PVS-Studio and Visual Studio 2010 in detecting defects in 64-bit programsIn the article, we will compare three mechanisms of code analysis from the viewpoint of detecting 64-bit errors: the Visual C++ 2010 compiler, the Code Analysis for C/C++ component included into Visual Studio 2010 and Viva64 analyzer included into PVS-Studio 3.60. »
29.06.2010
A Collection of Examples of 64-bit Errors in Real ProgramsThis article is the most complete collection of examples of 64-bit errors in the C and C++ languages. »

22.07.2010
We released a new version of PVS-Studio code analyzer - PVS-Studio 3.61 »
10.06.2010
We released a new version of PVS-Studio code analyzer - PVS-Studio 3.60. »
19.05.2010
Our workers visited the GDC2010 conference that was held on May, 14-16, 2010, in Moscow and talked to many developers who participated there. »
|
Documentation
PVS-Studio Documentation by OOO "Program Verification Systems" (www.viva64.com)
- Introduction
- Error description
- Common
- V001 Cannot process the whole file
- V002 Some diagnostic messages may contain incorrect line number
- V003 Unrecognized error found...
- Viva64
- V101 Implicit assignment type conversion to memsize type.
- V102 Usage of non memsize type for pointer arithmetic.
- V103 Implicit type conversion from memsize to 32-bit type.
- V104 Implicit type conversion to memsize type in an arithmetic expression.
- V105 N operand of '?:' operation: implicit type conversion to memsize type.
- V106 Implicit type conversion N argument of function 'foo' to memsize type.
- V107 Implicit type conversion N argument of function 'foo' to 32-bit type.
- V108 Incorrect index type: 'foo[not a memsize-type]'. Use memsize type instead.
- V109 Implicit type conversion of return value to memsize type.
- V110 Implicit type conversion of return value from memsize type to 32-bit type.
- V111 Call function 'foo' with variable number of arguments. N argument has memsize type.
- V112 Dangerous magic number N used.
- V113 Implicit type conversion from memsize to double type or vice versa.
- V114 Dangerous explicit type pointer conversion.
- V115 Memsize type is used for throw.
- V116 Memsize type is used for catch.
- V117 Memsize type is used in the union.
- V118 malloc() function accepts a dangerous expression in the capacity of an argument.
- V119 More than one sizeof() operators are used in one expression.
- V120 Member operator[] of object 'foo' declared with 32-bit type argument, but called with memsize type argument.
- V121 Implicit conversion of the type of 'new' operator's argument to size_t type.
- V122 Memsize type is used in the struct/class.
- V201 Explicit type conversion. Type casting to memsize.
- V202 Explicit type conversion. Type casting from memsize to 32-bit.
- V203 Explicit type conversion from memsize to double type or vice versa.
- V301 Unexpected function overloading behavior. See N argument of function 'foo' in derived class 'derived' and base class 'base'.
- V302 Member operator[] of 'foo' class has a 32-bit type argument. Use memsize-type here.
- V303 The function is deprecated in the Win64 system. It is safer to use the 'foo' function.
- V320 A call of the 'foo' function will lead to a buffer overflow or underflow in a 64-bit system.
- V401 The structure's size can be decreased via changing the fields' order. The size can be reduced from N to K bytes.
- VivaMP
- V1000 Did you forget to enable the /openmp compiler option?
- V1001 Missing 'parallel' keyword.
- V1002 Missing 'omp' keyword.
- V1003 Missing 'for' keyword. Each thread will execute the entire loop.
- V1004 Nested parallelization of a 'for' loop.
- V1005 The 'ordered' directive is not present in an ordered loop.
- V1006 Missing omp.h header file. Use '#include <omp.h>'.
- V1101 Redefining number of threads in a parallel code.
- V1102 Non-symmetrical use of set/unset functions for the following lock variable(s): foo.
- V1103 Threads number dependent code. The 'omp_get_num_threads' function is used in an arithmetic expression.
- V1104 Redefining nested parallelism in a parallel code.
- V1201 Concurrent usage of a shared resource via an unprotected call of the 'foo' function.
- V1202 The 'flush' directive should not be used for the 'foo' variable, because the variable has pointer type.
- V1203 Using the 'threadprivate' directive is dangerous, because it affects the entire file. Use local variables or specify access type for each parallel block explicitly instead.
- V1204 Data race risk. Unprotected static variable declaration in a parallel code.
- V1205 Data race risk. Unprotected concurrent operation with the 'foo' variable.
- V1206 Data race risk. The value of the 'foo' variable can be changed concurrently via the 'bar' function.
- V1207 Data race risk. The 'foo' object can be changed concurrently by a non-const function.
- V1208 The 'foo' variable of reference type cannot be private.
- V1209 Warning: The 'foo' variable of pointer type should not be private.
- V1210 The 'foo' variable is marked as lastprivate but is not changed in the last section.
- V1211 The use of 'flush' directive has no sense for private 'foo' variable, and can reduce performance.
- V1212 Data race risk. When accessing the array 'foo' in a parallel loop, different indexes are used for writing and reading.
- V1301 The 'throw' keyword cannot be used outside of a try..catch block in a parallel section.
- V1302 The 'new' operator cannot be used outside of a try..catch block in a parallel section.
- V1303 The 'foo' function which throws an exception cannot be used in a parallel section outside of a try..catch block.
- Customer's Specific Requests
- V2001 Consider using the extended version of the 'foo' function here: bar.
- V2002 Consider using the 'Ptr' version of the 'foo' function here: bar.
- Settings
- Using the program
- Additional information
- Articles about PVS-Studio
|
© 2008 - 2010, OOO "Program Verification Systems" 300027, Russia, Tula, P.O. Box 1800. Office: Russia, Tula, Kutuzova 100-73
|