|
|
|
PVS-Studio Static Code Analyzer for 64-bit and parallel C/C++ code
|
02.09.2010
Feeling the new Intel Parallel Studio XE 2011 betaSo I've gotten to try the C++ compiler included into Intel Parallel Studio XE 2011 beta at last. »
30.08.2010
Five days for fixing a two-character error, or a myth of almighty technologies aiding software developmentIn this blog, you may often read posts about how this or that software tool or software development technology helps make fewer errors, find them faster and correct them easier. »
30.08.2010
d'Artagnan and Internet, or working on the problem of bad linksFriends, it is high time we stopped considering links only in the context of their number and buying/ selling and counting PR of the site they are laid out on. »

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. »

16.08.2010
We released a new version of PVS-Studio code analyzer - PVS-Studio 3.62 »
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. »
|
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.
- V123 Allocation of memory by the pattern "(X*)malloc(sizeof(Y))"
- 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
You can download full PVS-Studio documentation as single file here.
|
© 2008 - 2010, OOO "Program Verification Systems" 300027, Russia, Tula, P.O. Box 1800. Office: Russia, Tula, Kutuzova 100-73
|