PVS-Studio Messages

What bugs can PVS-Studio detect?

We grouped the diagnostic, so that you can get the general idea of what PVS-Studio is capable of.

As it is hard to do strict grouping, some diagnostics belong to several groups. For example, the incorrect condition "if (abc == abc)" can be interpreted both as a simple typo, but also as a security issue, because it leads to the program vulnerability if the input data are incorrect.

Some of the errors, on the contrary, couldn't fit any of the groups, because they were too specific. Nevertheless this table gives the insight about the functionality of the static code analyzer.

List of all analyzer rules in XML

You can find a permanent link to machine-readable map of all analyzer's rules in XML format here.

Main PVS-Studio diagnostic abilities

C, C++ diagnostics

C# diagnostics

64-bit issues

V101-V128, V201-V207, V220, V221, V301-V303


Check that addresses to stack memory does not leave the function

V506, V507, V558, V758


Arithmetic over/underflow

V636, V658, V784, V786, V1012, V1028, V1029, V1033

V3040, V3041

Array index out of bounds

V557, V582, V643, V781



V586, V749, V1002, V1006


Dead code

V606, V607





Unreachable code

V551, V695, V734, V776, V779, V785

V3136, V3142

Uninitialized variables

V573, V614, V679, V730, V737, V788, V1007

V3070, V3128

Unused variables

V603, V751, V763, V1001

V3061, V3065, V3077, V3117, V3137, V3143

Illegal bitwise/shift operations

V610, V629, V673, V684, V770


Undefined/unspecified behavior

V567, V610, V611, V681, V704, V708, V726, V736, V1016, V1026, V1032


Incorrect handling of the types (HRESULT, BSTR, BOOL, VARIANT_BOOL, float, double)

V543, V544, V545, V716, V721, V724, V745, V750, V676, V767, V768, V772, V775, V1027, V1034

V3111, V3121, V3148

Improper understanding of function/class operation logic

V518, V530, V540, V541, V554, V575, V597, V598, V618, V630, V632, V663, V668, V698, V701, V702, V717, V718, V720, V723, V725, V727, V738, V742, V743, V748, V762, V764, V780, V789, V797, V1014, V1024, V1031, V1035

V3010, V3057, V3068, V3072, V3073, V3074, V3082, V3084, V3094, V3096, V3097, V3102, V3103, V3104, V3108, V3114, V3115, V3118, V3123, V3126, V3145


V501, V503, V504, V508, V511, V516, V519, V520, V521, V525, V527, V528, V529, V532, V533, V534, V535, V536, V537, V539, V546, V549, V552, V556, V559, V560, V561, V564, V568, V570, V571, V575, V577, V578, V584, V587, V588, V589, V590, V592, V600, V602, V604, V606, V607, V616, V617, V620, V621, V622, V625, V626, V627, V633, V637, V638, V639, V644, V646, V650, V651, V653, V654, V655, V660, V661, V662, V666, V669, V671, V672, V678, V682, V683, V693, V715, V722, V735, V747, V754, V756, V765, V767, V787, V791, V792, V796, V1013, V1015, V1021

V3001, V3003, V3005, V3007, V3008, V3009, V3011, V3012, V3014, V3015, V3016, V3020, V3028, V3029, V3034, V3035, V3036, V3037, V3038, V3050, V3055, V3056, V3057, V3062, V3063, V3066, V3081, V3086, V3091, V3092, V3107, V3109, V3110, V3112, V3113, V3116, V3122, V3124, V3132, V3140

Missing Virtual destructor

V599, V689


Coding style not matching the operation logic of the source code

V563, V612, V628, V640, V646, V705

V3018, V3033, V3043, V3067, V3069, V3138


V501, V517, V519, V523, V524, V571, V581, V649, V656, V691, V760, V766, V778, V1037

V3001, V3003, V3004, V3008, V3012, V3013, V3021, V3030, V3058, V3127, V3139, V3140

Incorrect usage of exceptions

V509, V565, V596, V667, V740, V741, V746, V759, V1022

V3006, V3052, V3100, V3141

Buffer overrun

V512, V514, V594, V635, V641, V645, V752, V755


Security issues

V505, V510, V511, V512, V518, V531, V541, V547, V559, V560, V569, V570, V575, V576, V579, V583, V597, V598, V618, V623, V642, V645, V675, V676, V724, V727, V729, V733, V743, V745, V750, V771, V774, V782, V1003, V1005, V1010, V1017

V3022, V3023, V3025, V3027, V3053, V3063

Operation priority

V502, V562, V593, V634, V648

V3130, V3133

Null pointer / null reference dereference

V522, V595, V664, V757, V769

V3019, V3042, V3080, V3095, V3105, V3125, V3141, V3145, V3146, V3148

Unchecked parameter dereference

V595, V664, V783, V1004


Synchronization errors

V712, V1011, V1018, V1025, V1036

V3032, V3054, V3079, V3083, V3089, V3090, V3147

WPF usage errors


V3044 - V3049

Resource leaks

V701, V773, V1020, V1023


Check for integer division by zero



Customized user rules



Table – PVS-Studio functionality.

As you see, the analyzer is especially useful is such spheres as looking for bugs caused by Copy-Paste and detecting security flaws.

To these diagnostics in action, have a look at the error base. We collect all the errors that we have found, checking various open source projects with PVS-Studio.

Bugs Found

Checked Projects
Collected Errors
13 692