-
Cppcheck and PVS-Studio compared
-
Collection of interesting resources on C/C++ programming
-
All about PVS-Studio
-
Farewell to #define private public
-
Analyzing the Blender project with PVS-Studio
-
I want to sell a PVS-Studio license to the Intel company
-
What do static analysis and search engines have in common? A good "top"!
-
Wade not in unknown waters. Part three
-
PVS-Studio command line tips
-
Studying methods of attracting people to a software product's website
-
Checking WinMerge with PVS-Studio for the second time
-
The secret thing about PVS-Studio
-
Verifying projects utilizing Marmalade SDK with PVS-Studio analyzer
-
An ideal static analyzer, or why ideals are unachievable
-
Licensing of PVS-Studio: why don't we have Single User License?
-
Analyzing the TrinityCore project with PVS-Studio
-
Analyzing the Dolphin-emu project
-
FAQ for those who have read our articles
-
Reanalyzing the Notepad++ project
-
Analyzing the Quake III Arena GPL project
-
Wade not in unknown waters. Part two
-
How we managed the task of implementing trial mode in the PVS-Studio code analyzer
-
Wade not in unknown waters. Part one
-
Tips on speeding up PVS-Studio
-
On the good of automated filtering of identical messages
-
"Please check this project too..."
-
Windows Error Reporting dialog
-
About our VivaCore library
-
What amazes me while developing the static code analyzer
-
PVS-Studio: analyzing Doom 3 code
-
Myths about static analysis. The fifth myth - a small test program is enough to evaluate a tool
-
Myths about static analysis. The fourth myth - programmers want to add their own rules into a static analyzer
-
Myths about static analysis. The third myth - dynamic analysis is better than static analysis
-
Myths about static analysis. The second myth - expert developers do not make silly mistakes
-
Myths about static analysis. The first myth - a static analyzer is a single-use product
-
The largest and most interesting advertisement article (70 pages) about static code analysis
-
PVS-Studio vs Chromium - Continuation
-
Checking Intel IPP Samples for Windows - Continuation
-
PVS-Studio Output Window vs plain text stdout
-
How to add a new diagnostic rule into PVS-Studio? Days from developers' life
-
Ctrl+S and Visual Studio Output Window
-
PVS-Studio vs Clang
-
How we have solved an engineering task for several years in PVS-Studio
-
Checking Intel Energy Checker SDK (IEC SDK) with PVS-Studio
-
Leo Tolstoy and static code analysis
-
Changes in PVS-Studio's licensing policy
-
Explanations to the article on Copy-Paste
-
PVS-Studio has learned to watch over your programming
-
Using PVS-Studio analyzer together with Microsoft Visual Studio 2010 incremental assembly
-
Static analysis and ROI
-
About our clients' practice of PVS-Studio integration
-
Why you should run static code analysis regularly and not from time to time (for instance, at "each release")
-
An eternal question of timing
-
It's difficult to make it right (of one subtle error)
-
What is sizeof(&X) expression equal to, X being defined as "char *X[n];"?
-
Knee-deep in C++ s... code
-
Is it reasonable to use the prefix increment operator ++it instead of postfix operator it++ for iterators?
-
Free license for the PVS-Studio static analyzer for developers, bloggers and authors of articles in IT subject editions
-
Cases when a static code analyzer may help you
-
Analysis of the Ultimate Toolbox project
-
What is the reason for making PVS-Studio 4.00 a commercial solution? :-(
-
Static analysis and regular expressions
-
Working with PVS-Studio in Visual Studio 2010 from under multiple Windows user accounts
-
Issue with '(' and ')'characters in PATH system environmental variable while using PVS-Studio with Visual Studio 2008
-
Let the world tremble! We've released PVS-Studio 4.00 with a general-purpose analyzer!
-
Static analysis: errors in media player and bugless ICQ
-
Difference of code analysis approaches in compilers and specialized tools
-
Static analysis of source code by the example of WinMerge
-
Of complicacy of programming, or won't C# save us?
-
Searching for explicit conversion of a pointer to a 32-bit type
-
Issues of 64-bit code in real applications: and what about Linux?
-
Intel VTune Amplifier XE 2011 beta under the programmer's strict eye
-
Feeling the new Intel Parallel Studio XE 2011 beta
-
d'Artagnan and Internet, or working on the problem of bad links
-
Five days for fixing a two-character error, or a myth of almighty technologies aiding software development
-
64-bit programs and floating-point calculations
-
Big Brother helps you
-
Why is the number of the line where an issue was found sometimes absent in the Error List in PVS-Studio?
-
New diagnostic functions implemented in PVS-Studio 3.60
-
The reasons why 64-bit programs require more stack memory
-
Communication between developers and users
-
Attracting attention of potential customers with the help of articles
-
Receiving feedback from potential users
-
"What is it?" – a new option of PVS-Studio code analyzer
-
Developing code testing and verification tools
-
How to disable IntelliSence in Visual Studio 2010?
-
Parallel notes N5 - continuing to study OpenMP constructs
-
Parallel notes N4 - continuing to study OpenMP constructs
-
Parallel notes N3 - base OpenMP constructs
-
In what way can C++0x standard help you eliminate 64-bit errors
-
CruiseControl.NET - build automation platform
-
Parallel notes N2 - toolkit for OpenMP
-
Supercomputer technologies in science, education and industry
-
Description of the error of integrating Intel Parallel Studio Service Pack 1 into Visual Studio 2005/2008
-
"Improve your... Google?"
-
/Wp64 switch and template processing error
-
Parallel notes N1 - OpenMP technology
-
64-bit technologies - one more trend in the modern software
-
Visual Studio Team System, /analyze and D9040
-
Levels of Paralleling
-
Verification and validation
-
Peculiarities of virtual functions
-
Search of 64-bit errors in array implementation
-
Optimization in the world of 64-bit errors
-
Issues of 64-bit code in real programs: qsort
-
The role of "Fibonacci numbers" in the history of parallel programming
-
Embarcadero C++Builder and 64-bit code
-
Many cores is good but a fast hard disk is good too
-
One of the Answers to the Question "Who Needs All that Parallelism at All?"
-
Program Errors That Do Not Exist
-
Why A + B != A - (-B)
-
Does the result of static code analysis depend on the compiler being used?
-
Issues in real programs - what errors are not there in the world
-
Cold Tachyon
-
Tachyon and Parallel Lint
-
64-bit code issues in real programs: pointer type change
-
A nice 64-bit error in C
-
Be careful when working with atomic directive
-
PVS-Studio prints the error "Some diagnostic messages may contain incorrect line number for file ..." (continuation)
-
Are 64-bit errors real?
-
Presentation of information on the site
-
64-bit world is getting closer
-
Issues of 64-bit code in real programs: virtual functions
-
Possible issues relating to stdafx.h when using PVS-Studio
-
Cannot process the whole file "foo.cpp"
-
Magic constants and malloc() function
-
Processing of exceptions inside parallel sections
-
PVS-Studio refers to error "Some diagnostic messages may contain incorrect line number for file ..."
-
Problems of 64-bit code in real programs: magic constants
-
PVS-Studio and testing Loki
-
Atavisms in large systems
-
Testing of Linux-applications with the help of PVS-Studio in Windows
-
The function of printing an expression's type
-
OpenMP 3.0 and iterators
-
A course on static analysis
-
OOO "Program Verification Systems"'s plans on developing its own software products
-
Our first practical research in the sphere of metrics calculation
-
Use of rand() in OpenMP parallel sections
-
VivaCore, questions on documentation
-
The first impression of Intel Parallel Inspector
-
Change of type alignment and the consequences
-
OpenMP and exceptions
-
Search of explicit type conversion errors in 64-bit programs
-
Online checking of errors relating to using OpenMP technology and x64 architecture
-
Peaceful coexistence of PC-Lint and VivaMP
-
Viva64 for optimizing data structures
-
Ineffectiveness of last() in the real world
-
Problems of 64-bit code in real programs: FreeBSD
-
OOO "Program Verification Systems" Blog Launch
-
100 bugs in Open Source C/C++ projects
-
How to make fewer errors at the stage of code writing. Part N4
-
PVS-Studio advertisement - static analysis of C/C++ code
-
PVS-Studio: analyzing ReactOS's code
-
How to make fewer errors at the stage of code writing. Part N3
-
How we test the code analyzer
-
PVS-Studio vs Chromium
-
Comparing the general static analysis in Visual Studio 2010 and PVS-Studio by examples of errors detected in five open source projects
-
Difficulties of comparing code analyzers, or don't forget about usability
-
How to make fewer errors at the stage of code writing. Part N2
-
How to make fewer errors at the stage of code writing. Part N1
-
Intel IPP Samples for Windows - error correction
-
Consequences of using the Copy-Paste method in C++ programming and how to deal with it
-
Regular use of static code analysis in team development
-
Comparing capabilities of PVS-Studio and Visual Studio 2010 in detecting defects in 64-bit programs
-
A Collection of Examples of 64-bit Errors in Real Programs
-
Interview with Issam Lahlali, one of the CppDepend tool creators
-
64 bits
-
Changes in programmer tools' infrastructure
-
Static code analysis and the new language standard C++0x
-
VivaCore FAQ
-
32 OpenMP Traps For C++ Developers
-
OpenMP and static code analysis
-
Debugging and optimization of multi-thread OpenMP-programs
-
OpenMP
-
VivaMP - a tool for OpenMP
-
VivaMP, system of detecting errors in the code of parallel C++ programs using OpenMP
-
Interview with Anatoliy Kuznetsov, the author of BitMagic C++ library
-
Comparing PVS-Studio with other code analyzers
-
An unsuccessful attempt to compare PVS-Studio (VivaMP) and Intel C/C++ ("Parallel Lint")
-
64-bit Loki
-
About size_t and ptrdiff_t
-
How to estimate the process of 64-bit migration of C/C++ applications?
-
Safety of 64-bit code
-
Software code metrics
-
Parallel Lint
-
A 64-bit horse that can count
-
Seven Steps of Migrating a Program to a 64-bit System
-
Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)
-
Development of a static code analyzer for detecting errors of porting programs on 64-bit systems
-
Estimation of the minimum time of executing tasks at optimal distribution of load among processors
-
The static code analysis rules for diagnosing potentially unsafe constructions from the viewpoint of 64-bit programs
-
Parallel programs to multi-processor computers!
-
Introduction into 64 bits for the beginners or where's again the 64-bit world?
-
Case Study: Porting a set of point cloud and triangle mesh processing C++ libraries to 64-bit platform
-
Konstantin Knizhnik: static analysis, a view from aside
-
Installation of PC-Lint and its using in Visual Studio 2005
-
Parallel algorithms of data processing
-
Testing parallel programs
-
Optimization of 64-bit programs
-
AMD64 (EM64T) architecture
-
How VivaCore library appeared
-
Detection of vulnerabilities in programs with the help of code analyzers
-
It is difficult
-
Description of VivaVisualCode
-
Comparison of analyzers' diagnostic possibilities at checking 64-bit code
-
Building of systems of automatic C/C++ code logging
-
VivaCore - Quick Start
-
64 bits, Wp64, Visual Studio 2008, Viva64 and all the rest
-
Advantages of Viva64
-
Adaptation of the technology of the static code analyzer for developing parallel programs
-
Development of resource-intensive applications in Visual C++
-
Using Static Analysis in Program Development
-
Introduction into the problems of developing parallel programs
-
Brief description of the VivaCore code analysis library
-
The use of the code analysis library OpenC++: modifications, improvements, error corrections
-
The essence of the VivaCore code analysis library
-
Traps detection during migration of C and C++ code to 64-bit Windows
-
Application port to 64-bit platforms or never cackle till your egg is laid
-
The forgotten problems of 64-bit programs development
-
Viva64: What Is It, and Who Is It for?
-
Some examples of the 64-bit code errors
-
Static code analysis for verification of the 64-bit applications
-
Problems of testing 64-bit applications
-
Driver Development for Windows 64-bit
-
20 issues of porting C++ code on the 64-bit platform
-
64-bits for C++ Developers: from /Wp64 to Viva64
-
Viva64: working up of 64-bit applications
-
Peculiarities of the Development of 64-bit Applications
-
PVS-Studio Documentation by OOO "Program Verification Systems" (www.viva64.com)
-
PVS-Studio Documentation (single file)
-
Checking code with PVS-Studio from the command line (with a Visual Studio solution file present)
-
Credits and acknowledgements
-
Limitation of the analyzer
-
OmniSample, a collection of examples of 64-bit and parallel errors
-
Two words about PVS-Studio
-
Using PVS-Studio with continuous integration systems
-
Using PVS-Studio from the command line (without Visual Studio solution file). Integrating into build automation systems
-
PVS-Studio FAQ
-
Getting acquainted with PVS-Studio source code analyzer
-
The principle of constantly using PVS-Studio in the process of project development
-
Common information on working with the PVS-Studio analyzer
-
PVS-Studio's Trial Mode
-
PVS-Studio Release History
-
Settings: General
-
Settings: Common Analyzer Settings
-
Settings: Detectable Errors
-
Settings: Don't Check Files
-
Settings: Message Suppression
-
Settings: Registration
-
Settings: Viva64
-
Suppression of false alarms
-
System requirements for PVS-Studio analyzer
-
V001. A code fragment from 'file' cannot be analyzed
-
V002. Some diagnostic messages may contain incorrect line number
-
V003. Unrecognized error found
-
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>'
-
V101. Implicit assignment type conversion to memsize type
-
V102. Usage of non memsize type for pointer arithmetic
-
V103. Implicit type conversion from memsize type 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
-
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 expresion
-
V1104. Redefining nested parallelism in a parallel code
-
V111. Call of 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() operator is used in one expression
-
V120. Member operator[] of object 'foo' declared with 32-bit type argument, but called with memsize type argument
-
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
-
V121. Implicit conversion of the type of 'new' operator's argument to size_t type
-
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
-
V122. Memsize type is used in the struct/class
-
V123. Allocation of memory by the pattern "(X*)malloc(sizeof(Y))" where the sizes of X and Y types are not equal
-
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
-
V2001. Consider using the extended version of the 'foo'function here
-
V2002. Consider using the 'Ptr' version of the 'foo' function here
-
V201. Explicit conversion from 32-bit integer type to memsize type
-
V202. Explicit conversion from memsize type to 32-bit integer type
-
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
-
Working Mode
-
V004. For a more precise verification, please select x64 or Itanium configuration instead of Win32
-
V124. Function 'Foo' writes/reads 'N' bytes. The alignment rules and type sizes have been changed. Consider reviewing this value
-
V125. It is not advised to declare type 'T' as 32-bit type
-
V126. Be advised that the size of the type 'long' varies between LLP64/LP64 data models
-
V501. There are identical sub-expressions to the left and to the right of the 'foo' operator
-
V502. Perhaps the '?:' operator works in a different way than it was expected. The '?:' operator has a lower priority than the 'foo' operator
-
V503. This is a nonsensical comparison: pointer < 0
-
V504. It is highly probable that the semicolon ';' is missing after 'return' keyword
-
V505. The 'alloca' function is used inside the loop. This can quickly overflow stack
-
V506. Pointer to local variable 'X' is stored outside the scope of this variable. Such a pointer will become invalid
-
V507. Pointer to local array 'X' is stored outside the scope of this array. Such a pointer will become invalid
-
V508. The use of 'new type(n)' pattern was detected. Probably meant: 'new type[n]'
-
V509. The 'throw' operator inside the destructor should be placed within the try..catch block. Raising exception inside the destructor is illegal
-
V510. The 'Foo' function is not expected to receive class-type variable as 'N' actual argument
-
V511. The sizeof() operator returns size of the pointer, and not of the array, in given expression
-
V512. A call of the 'Foo' function will lead to a buffer overflow or underflow
-
V513. Use _beginthreadex/_endthreadex functions instead of CreateThread/ExitThread functions
-
V514. Dividing sizeof a pointer by another value. There is a probability of logical error presence
-
V515. The 'delete' operator is applied to non-pointer
-
V516. Consider inspecting an odd expression. Non-null function pointer is compared to null
-
V517. The use of 'if (A) {...} else if (A) {...}' pattern was detected. There is a probability of logical error presence
-
V518. The 'malloc' function allocates strange amount of memory calculated by 'strlen(expr)'. Perhaps the correct variant is strlen(expr) + 1
-
V519. The 'x' variable is assigned values twice successively. Perhaps this is a mistake
-
V520. The comma operator ',' in array index expression
-
V521. Such expressions using the ',' operator are dangerous. Make sure the expression is correct
-
V522. Dereferencing of the null pointer might take place
-
V523. The 'then' statement is equivalent to the 'else' statement
-
V524. It is odd that the body of 'Foo_1' function is fully equivalent to the body of 'Foo_2' function
-
V525. The code containing the collection of similar blocks. Check items X, Y, Z, ... in lines N1, N2, N3,
-
V526. The 'strcmp' function returns 0 if corresponding strings are equal. Consider examining the condition for mistakes
-
V527. It is odd that the 'zero' value is assigned to pointer. Probably meant: *ptr = zero
-
V528. It is odd that pointer is compared with the 'zero' value. Probably meant: *ptr != zero
-
V529. Odd semicolon ';' after 'if/for/while' operator
-
V530. The return value of function 'Foo' is required to be utilized
-
V531. It is odd that a sizeof() operator is multiplied by sizeof()
-
V532. Consider inspecting the statement of '*pointer++' pattern. Probably meant: '(*pointer)++'
-
V533. It is likely that a wrong variable is being incremented inside the 'for' operator. Consider reviewing 'X'
-
V534. It is likely that a wrong variable is being compared inside the 'for' operator. Consider reviewing 'X'
-
V535. The variable 'X' is being used for this loop and for the outer loop
-
V536. Be advised that the utilized constant value is represented by an octal form
-
V537. Consider reviewing the correctness of 'X' item's usage
-
V538. The line contains control character 0x0B (vertical tabulation)
-
V539. Consider inspecting iterators which are being passed as arguments to function 'Foo'
-
V540. Member 'x' should point to string terminated by two 0 characters
-
V541. It is dangerous to print the string into itself
-
V542. Consider inspecting an odd type cast: 'Type1' to ' Type2'
-
V543. It is odd that value 'X' is assigned to the variable 'Y' of HRESULT type
-
V544. It is odd that the value 'X' of HRESULT type is compared with 'Y'
-
V545. Such conditional expression of 'if' operator is incorrect for the HRESULT type value 'Foo'. The SUCCEEDED or FAILED macro should be used instead
-
V801. Decreased performance. It is better to redefine the N function argument as a reference. Consider replacing 'const T' with 'const .. &T' / 'const .. *T'
-
V546. Member of a class is initialized by itself: 'Foo(Foo)'
-
V547. Expression is always true/false
-
V548. Consider reviewing type casting. TYPE X[][] in not equivalent to TYPE **X
-
V549. The 'first' argument of 'Foo' function is equal to the 'second' argument
-
V005. Cannot determine active configuration for project. Please check projects and solution configurations
-
V550. An odd precise comparison. It's probably better to use a comparison with defined precision: fabs(A - B) < Epsilon or fabs(A - B) > Epsilon
-
V551. The code under this 'case' label is unreachable
-
V552. A bool type variable is being incremented. Perhaps another variable should be incremented instead
-
V553. The length of function's body or class's declaration is more than 2000 lines long. You should consider refactoring the code
-
V554. Incorrect use of smart pointer
-
V555. The expression of the 'A - B > 0' kind will work as 'A != B'
-
V556. The values of different enum types are compared
-
V557. Array overrun is possible
-
V558. Function returns the pointer to temporary local object
-
V802. On 32-bit/64-bit platform, structure size can be reduced from N to K bytes by rearranging the fields according to their sizes in decreasing order
-
V006. File cannot be processed. Analysis aborted by timeout
-
V559. Suspicious assignment inside the condition expression of 'if/while/for' operator
-
V560. A part of conditional expression is always true/false
-
V561. It's probably better to assign value to 'foo' variable than to declare it anew
-
V562. It's odd to compare a bool type value with a value of N
-
V204. Explicit conversion from 32-bit integer type to pointer type
-
V205. Explicit conversion of pointer type to 32-bit integer type
-
V563. It is possible that this 'else' branch must apply to the previous 'if' statement
-
V564. The '&' or '|' operator is applied to bool type value. You've probably forgotten to include parentheses or intended to use the '&&' or '||' operator
-
V565. An empty exception handler. Silent suppression of exceptions can hide the presence of bugs in source code during testing
-
V566. The integer constant is converted to pointer. Possibly an error or a bad coding style
-
V567. Undefined behavior. The variable is modified while being used twice between sequence points
-
V568. It's odd that the argument of sizeof() operator is the expression
-
V569. Truncation of constant value
-
V803. Decreased performance. It is more effective to use the prefix form of ++it. Replace iterator++ with ++iterator
-
Settings: Customers Specific Settings
-
V007. Verification of CLR projects is not implemented. Incorrect diagnostics are possible
-
V570. The variable is assigned to itself
-
V571. Recurring check. This condition was already verified in previous line
-
V572. It is odd that the object which was created using 'new' operator is immediately casted to another type
-
V804. Decreased performance. The 'Foo' function is called twice in the specified expression to calculate length of the same string
-
V220. Suspicious sequence of types castings: memsize -> 32-bit integer -> memsize
-
V573. Uninitialized variable 'Foo' was used. The variable was used to initialize itself
-
V574. The pointer is used simultaneously as an array and as a pointer to single object
-
V575. Function receives an odd argument
-
V576. Incorrect format. Consider checking the N actual argument of the 'Foo' function
-
V577. Label is present inside a switch(). It is possible that these are misprints and 'default:' operator should be used instead
-
V578. An odd bitwise operation detected. Consider verifying it
-
V805. Decreased performance. It is inefficient to identify an empty string by using 'strlen(str) > 0' construct. A more efficient way is to check: str[0] != '\0'
-
V127. An overflow of the 32-bit variable is possible inside a long cycle which utilizes a memsize-type loop counter
-
V579. The 'Foo' function receives the pointer and its size as arguments. It is possibly a mistake. Inspect the N argument
-
V580. An odd explicit type casting. Consider verifying it
-
V581. The conditional expressions of the 'if' operators situated alongside each other are identical
-
V582. Consider reviewing the source code which operates the container
-
Predefined PVS_STUDIO macro
-
V583. The '?:' operator, regardless of its conditional expression, always returns one and the same value
-
V584. The same value is present on both sides of the operator. The expression is incorrect or it can be simplified
-
V585. An attempt to release the memory in which the 'Foo' local variable is stored
-
V586. The 'Foo' function is called twice for deallocation of the same resource
-
V587. An odd sequence of assignments of this kind: A = B; B = A;
-
V806. Decreased performance. The expression of strlen(MyStr.c_str()) kind can be rewritten as MyStr.length()
-
V588. The expression of the 'A =+ B' kind is utilized. Consider reviewing it, as it is possible that 'A += B' was meant
-
V589. The expression of the 'A =- B' kind is utilized. Consider reviewing it, as it is possible that 'A -= B' was meant
-
V590. Consider inspecting this expression. The expression is excessive or contains a misprint
-
V591. Non-void function should return a value
-
V592. The expression was enclosed by parentheses twice: ((expression)). One pair of parentheses is unnecessary or misprint is present
-
V593. Consider reviewing the expression of the 'A = B == C' kind. The expression is calculated as following: 'A = (B == C)'
-
V008. Unable to start the analysis on this file
-
V2003. Explicit conversion from 'float/double' type to signed integer type
-
V2004. Explicit conversion from 'float/double' type to unsigned integer type
-
V2005. C-style explicit type casting is utilized. Consider using: static_cast/const_cast/reinterpret_cast
-
Handling the diagnostic messages list
-
V009. Intel C++ project toolset is not supported. Select Visual C++ toolset to verify this project
-
V594. The pointer steps out of array's bounds
-
V595. The pointer was utilized before it was verified against nullptr. Check lines: N1, N2
-
V596. The object was created but it is not being used. The 'throw' keyword could be missing
-
Old PVS-Studio Release History (before 4.00)
-
V597. The compiler could delete the 'memset' function call, which is used to flush 'Foo' buffer. The RtlSecureZeroMemory() function should be used to erase the private data
-
V598. The 'memset/memcpy' function is used to nullify/copy the fields of 'Foo' class. Virtual method table will be damaged by this
-
V599. The virtual destructor is not present, although the 'Foo' class contains virtual functions
-
V600. Consider inspecting the condition. The 'Foo' pointer is always not equal to NULL
-
V601. An odd implicit type casting
-
Tips on speeding up PVS-Studio
-
V602. Consider inspecting this expression. '<' possibly should be replaced with '<<'
-
V603. The object was created but it is not being used. If you wish to call constructor, 'this->Foo::Foo(....)' should be used
-
V807. Decreased performance. Consider creating a pointer/reference to avoid using the same expression repeatedly
-
PVS-Studio menu commands
-
PVS-Studio's incremental analysis mode
-
V604. It is odd that the number of iterations in the loop equals to the size of the pointer
-
V605. Consider verifying the expression. An unsigned value is compared to the number - NN
-
V606. Ownerless token 'Foo'
-
V607. Ownerless expression 'Foo'
-
V608. Recurring sequence of explicit type casts
-
V609. Divide or mod by zero
-
V610. Undefined behavior. Check the shift operator
-
V611. The memory allocation and deallocation methods are incompatible
-
Deployment PVS-Studio in large team
-
V612. An unconditional 'break/continue/return/goto' within a loop
-
V613. Strange pointer arithmetic with 'malloc/new'
-
V614. Uninitialized variable 'Foo' used
-
Dug Song. Static Code Analysis Using Google Code Search
-
Jack Ganssle. The value proposition - unfulfilled
-
Jose F. Ruiz. Don't blow your stack: Static stack analysis for high-integrity systems
-
List of tools for static code analysis
-
Nick Wienholt. Get to Know the VSTS Native C/C++ Code Analyzer
-
Parasoft Corporation. Static Analysis on Steroids: Parasoft BugDetective
-
Raoul Jetley, Paul Anderson. Using static analysis to evaluate software in medical devices
-
Roel Wuyts. C++ analysis tools
-
Scott Meyers, Martin Klaus. A First Look at C++ Program Analyzers
-
Sergei Sokolov. Bulletproofing C++ Code
-
Static code analysis (Wikipedia)
-
Steve Gutz. Static analysis IBM Rational Software Analyzer: Getting started
-
Steven Lavenhar. Code Analysis
-
Walter W. Schilling, Jr. and Mansoor Alam. Integrate Static Analysis Into a Software Development Process
-
Walter W. Schilling, Jr., Mansoor Alam. Integrate static analysis into a software development process
-
Sid Sidner. When Quality, Security Count
-
Michael Suess, M. Sub, Claudia Leopold. Common Mistakes in OpenMP and How To Avoid Them - A Collection of Best Practices
-
Nawal Copty. Introducing OpenMP: A Portable, Parallel Programming API for Shared Memory Multiprocessors
-
Kang Su Gatlin, Pete Isensee. Reap the Benefits of Multithreading without All the Work.
-
Yuan Lin. Common Mistakes in Using OpenMP 5: Assuming Non-existing Synchronization Before Entering Worksharing Construct.
-
HPCBugBase.
-
Michael Suess, M. Sub, A. Podlich, Claudia Leopold. Problems, Workarounds and Possible Solutions Implementing the Singleton Pattern with C++ and OpenMP.
-
Michael Suess, M. Sub, Claudia Leopold. A Comparison of Task Pool Variants in OpenMP and a Proposal for a Solution to the Busy Waiting Problem.
-
Eric Niebler. Trip Report: Ad-Hoc Meeting on Threads in C++.
-
Michael Suess. Why OpenMP is the way to go for parallel programming.
-
Michael Suess. What Makes Parallel Programming Hard?
-
Anwar Ghuloum. What Makes Parallel Programming Hard?
-
Michael Suess, Claudia Leopold. A User's Experience with Parallel Sorting and OpenMP.
-
Michael Suess, M. Sub, Claudia Leopold. Implementing Irregular Parallel Algorithms with OpenMP.
-
Ruud van der Pas. Using OpenMP to parallelize for CMT.
-
Michael Suess. Scoped locking vs. critical in OpenMP - a personal shootout.
-
Michael Suess. Parallel Programming Fun with Loop Carried Dependencies.
-
Herb Sutter. The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
-
Michael Suess, M. Sub, Claudia Leopold. Evaluating the state of the art of parallel programming systems.
-
Michael Suess. How to do it ONCE in OpenMP...
-
Vineet Kumar Jain. OpenMP: unleashing power of multiple cores
-
Rahul V. Patil and Boby George. Tools And Techniques to Identify Concurrency Issues
-
Rick Merritt. M'soft: Parallel programming model 10 years off
-
John E. West. Making 'Parallel Programming' Synonymous with 'Programming
-
Joel Yliluoma. Guide into OpenMP: Easy multithreading programming for C++
-
Nawal Copty. OpenMP Support in Sun Studio Compilers and Tools
-
Jim Dempsey. Affinities and Opportunistic Thread Scheduling
-
Jack Woehr. A == !A or What Happened to my App?
-
Meisel, Jeff. Multithreaded programming
-
Clay P. Breshears. Intel Threading Tools and OpenMP
-
Introduction to OpenMP
-
Kerry D. Wong. Matrix Multiplication Performance in C++
-
Richard Gerber. Advanced OpenMP Programming
-
Herb Sutter. Use Threads Correctly = Isolation + Asynchronous Messages
-
Parallelizing N-Queens with the Intel Parallel Composer
-
OpenMP FAQ
-
Christian Terboven. How to kill OpenMP by 2011 ?!
-
Deadline. Multi-core Strategies: MPI and OpenMP
-
Matt Pietrek. Everything You Need To Know To Start Programming 64-Bit Windows Systems
-
John Paul Mueller. 24 Considerations for Moving Your Application to a 64-bit Platform
-
Microsoft Game Technology Group. 64-bit programming for Game Developers
-
Tim Mangan. Porting C++ Applications to x64
-
64-Bit Programming Models: Why LP64
-
Andrew Josey. Data Size Neutrality and 64-bit Support
-
64-bit Insider Volume 1, Issues 1-12
-
Jeremy Gordon, Writing 64-bit programs
-
Alan Zeichick. A Linux Toolbox for AMD64 Developers
-
Stan Murawski. Beyond Windows XP: Get Ready Now for the Upcoming 64-Bit Version of Windows
-
Brad Martin, Anita Rettinger, and Jasmit Singh. Multiplatform Porting to 64 Bits
-
Harsha Jagasia. Performance Guidelines for Developers on AMD Athlon 64 and Opteron ccNUMA Multiprocessor Systems Running Microsoft Windows
-
Anderson Bailey. AMD64 and the New Math
-
Building AMD64 Applications with the Microsoft Platform SDK
-
Conrad Carter. C/C++ Compiler Switches for Fast, Portable 64-Bit Code
-
Configuring Microsoft Visual Studio Projects to Support the AMD64 Architecture
-
John Paul Mueller. Discovering the 64-bit Tools in Visual Studio 2005
-
Porting an Application to 64-bit Linux on HP Integrity Servers
-
Mike Wall. Porting and Optimizing Applications on 64-bit Windows for AMD64 Architecture
-
Mike Wall. Porting Applications to Windows for AMD64 Technology
-
Harsha S. Adiga. Porting Linux applications to 64-bit systems
-
Allan McNaughton. Porting Linux Applications to 64-Bit Intel Architecture
-
Rich Newman. Removing Memory Errors from 64-Bit Platforms
-
Sachin R Sangoi. The 64 bit OS Architecture
-
John R. Mashey. The Long Road to 64 Bits
-
Allan McNaughton. The One-Stop Shop for 64-bit Development
-
Kang Su Gatlin. Windows Data Alignment on IPF, x86, and x64
-
Gregory Tarsy and Neil Toda. Floating-Point Computing: A Comedy of Errors?
-
Allan McNaughton. Bridge the Gap Between 32- and 64-bit Applications
-
Converting 32-bit Applications Into 64-bit Applications: Things to Consider
-
Andy Patrizio. How and Why Microsoft Migrated to AMD64: Case Study
-
Migrating 32-bit Managed Code to 64-bit
-
Porting 32-Bit Code to 64-Bit Code
-
Harsha Jaquasia. Porting and Optimizing Multimedia Codecs for AMD64 architecture on Microsoft Windows
-
Anderson Bailey. Tools and Techniques for Developing 64-Bit Linux Software
-
The Old New Thing: The history of calling conventions, part 5: amd64
-
The Old New Thing: Why did the Win64 team choose the LLP64 model?
-
Matt Tyrlik, Making the transition to 64 bits
-
Daniel Pistelli, Moving to Windows Vista x64
-
Eric Palmer, "CPUID for x64 Platforms and Microsoft Visual Studio .NET 2005"
-
Andrew Binstock. Porting to 64-Bit Intel Architecture
-
Steven J. Vaughan-Nichols. Why Software Development Is Lagging Hardware Improvements
-
Bruno Terkaly. 64-Bit Programming with Visual C++
-
Mike Becker. Accessing 32-bit DLLs from 64-bit code
-
Dan Saks. Why size_t matters
-
Fast forward VS6 64 bit
-
32-bit pointers in a 64-bit world
-
Visual C++ 2008 Express Edition And 64-Bit Targets
-
64-bit ODBC
-
Kenny Kerr. Windows With C++. X64 Debugging With Pseudo Variables And Format Specifiers
-
Eric Lippert's Blog. "Out Of Memory" Does Not Refer to Physical Memory
-
Checklist for 64-bit Microsoft Windows Drivers
-
Shih Kuo. Intel® 64 Architecture Processor Topology Enumeration
-
Microsoft Corporation. Best Practices for WOW64
-
Microsoft Corporation. 64-bit System Design
-
Irving Rabin. Porting to 64-bit Platforms
-
Alex Ionescu. Behind Windows x64's 44-bit Virtual Memory Addressing Limit
-
Walter Bright. Patterns of Bugs
-
Philip J. Guo, Dawson Engler. Linux Kernel Developer Responses to Static Analysis Bug Reports
-
Gary McGraw, John Steven. Software [In]security: Comparing Apples, Oranges, and Aardvarks (or, All Static Analysis Tools Are Not Created Equal)
-
Microsoft. Using Code Analysis with Visual Studio 2010 to Improve Code Quality
-
Guy Steele. How to Think about Parallel Programming: Not!
-
ESET Team. TDSS (part 1: The x64 Dollar Question)
-
C++ Static Analysis
-
The Coverity Team. A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World
-
Aditya Pratap Bhuyan. Code Review Principles, Process and Tools
-
Adam Kolawa. When, Why, and How: Code Analysis
-
Eli Bendersky. Stack frame layout on x86-64
-
Bojan Komazec. 32-bit and 64-bit versions of Windows C++ application
-
Jim Bird. Static Analysis isn't Development Testing
-
Ajay Vijayvargiya. Elucidating all about Code Analysis in Visual C++
-
David Cerezo Sánchez. Static vs. Formal Methods for Code Auditing
-
Pierre Morel-Fourrier. C++ code analysis in Visual Studio 2012
-
Christian Wojner. WOW-Effect
-
Remah. 32-bit and 64-bit explained
-
Bruce Dawson. 64-Bit Made Easy
-
Robert Gamble. A Modern Static Analyzer for C and C++
-
Magnus Unemyr. Embedded Software development - a lot more than programming
-
S.G. Ganesh. Joy of Programming: The Technology Behind Static Analysis Tools
-
Development Testing with Static Analysis
-
Michael Barr. How to enforce coding standards automatically
-
Christian Holler. Trying new code analysis techniques
-
Arthur Hicken. What is Static Analysis... and What is it Good For?
-
Frank Kim. Seven Tips for Picking a Static Analysis Tool
-
Jeremiah Grossman. Mythbusting: Static Analysis Software Testing - 100% Code Coverage
-
Jay Abraham, Marc Lalo. Using Static Analysis and Code Verification to Improve Embedded Software
-
Military Embedded Systems. Static analysis is going deeper with deep-flow data flow - Interview with Jill Britton, Consultancy Services Group Manager at PRQA