Linux á¡á±á¬ááºááœáẠááœá²ááŒááºážá áááºááŒá¬ááẠPVS áááºáá°áá²á·áá±á¬ á á¬á á±á¬ááºáá áºáá¯ááᯠáá»áœááºá¯ááºááœá±á·áá²á·ááŒá®áž áá»áœááºá¯ááºáááá¯ááºááá¯ááºááá±á¬áá»ááºáá»á¬ážááœáẠáááºážááᯠá ááºážááŒáá·áºááẠáá¯á¶ážááŒááºáá²á·áááºá ááŒá®ážáá±á¬á· áá«á ááœááºáá¬áá²á· á¡áá¬áá«á
á¡ááŒá±á¬ááºážá¡áá¬
ÐлÑÑÑ
áá¯á¶á·ááŒááºáá¶á·ááá¯ážááŸá¯
á ááºážáááºáá®ážáá áºáᯠáá±á¬ááºážááá¯áá²á·ááŒá®áž ááá¯áá±á·ááœááºááẠáááºážááá¯á·áᶠáá±ážááá¯á·áá²á·áááºá
ááŸááºážááŸááºážáááºážáááºáž á á¬ááœááºá á¬áááºáž
ááŒá¿áá¬áááŸááá² ááœá²ááŒááºážá
áááºááŒá¬á
ááºááᯠáá»áœááºá¯ááºááá¯á· á
áááºááá¯ááºáá²á·áááºá console commands áá»á¬ážá¡ááœáẠá¡áá°á¡áá®ááá¯áááºáž áááá¯ááºááẠ(á€áá±áá¬ááœáẠááá¯ááºááŒá¬ážáá»ááºá¡áá»áá¯á·ááŸááá±á¬áºáááºážá á¡ááá¯ááºážááᯠááŒáá·áºáá«á
Multi-threaded ááœá²ááŒááºážá áááºááŒá¬ááŸá¯áááŒá áºááá¯ááºááŒá±
ááœá²ááŒááºážá
áááºááŒá¬áá°ááœáẠ"á
á¶" ááœá±ážáá»ááºá
áá¬ááŸááááºá -j
ááœá²ááŒááºážá
áááºááŒá¬ááŒááºážááᯠáá¯ááºáááºážáá»á¬ážá
áœá¬ááœáẠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºááá¯ááºá
á±ááŒááºážá áá«á á¡áá»áááºá¡áá»á¬ážááŒá®áž áááºáá¬á
á±áááºá
á áááºáá°ážá¥á¬ááºáá±á¬ááºážáááºá
á
á¬áá¬ážá០áá±ážáááºáá±á¬ ááẠmuzzle ááá¯á· ááœá²ááŒá¬ážáá±á¬ á¡ááœááºáá±á¬áºáááºáá»á¬ážá
á ááºážáá±ážááœá²ááá¯á· ááœááºáá°á áœá¬ áá±á«ááºážá ááºážááŒááºážá
á á¬ááœááºá á¬áááºážá¡á¬ážáá¯á¶ážááẠáááºážááá¯á·ááááºááá¯ááºááœááºááŸááááºá ááá·áºááá±á¬áá»ááºááᯠCMake ááŒáá·áºáááºáá±á¬ááºáá¬ážáá»áŸáẠá¡áá¬á¡á¬ážáá¯á¶ážááẠá¡ááœááºááá¯ážááŸááºážáááºáá¯áᬠáá»áœááºá¯ááºááŒá±á¬ááá¯ááºáááºá
áá±á¬ááºážáá±á¬áá±á¬áá«ááŸá¬ááœá±áá±ážáá±á¬áºááŒáá»ááºáá»á¬áž
áá¯ááºááœáẠoutput áá¯ááºáá±ážáá« fullhtml
ááá¯á·áá±á¬áẠáááºáá±á·áá»áºáá
áºáá¯á
á®ááœáẠááŸááºážááŒáá»ááºáá»á¬ážá áá¯ááºááá°áá¬áá»á¬ážááŸáá·áº á¡ááá¯ááá·áºááºáá»á¬ážáá«ááŸááá±á¬ á¡ááŒá±ááŸá¬ááá·áºáá±á¬áºááŒáá»ááºáá
áºáá¯áá®ááá¯á· ááá·áºááºáá
áºáá¯áá«ááŸááááºá
ÐОМÑÑÑ
ááœá²ááŒááºážá áááºááŒá¬áá°á០C++ áá¬áá¬á áá¬ážááᯠááááá¬ážááááºááŒááºážá
áá¶ááá±á¬ááºážá áœá¬ááŒáá·áºá PVS ááẠáá¯ááºáá¯á¶ážáááŸááºáááºáá±á¬á¡áá«ááœáẠsyntax á¡ááŸá¬ážáá»á¬ážááá¯ááŒá¯áá¯ááºááŒá®áž ááŸá¬ážááœááºážáá±á¬á¡ááŒá¯ááá±á¬áá±á¬ááºáá±á¬áááºáá±á·áá»áºáá»á¬ážááá¯áá¯ááºáá±ážáá«áááºá
á¥ááá¬á¡á¬ážááŒáá·áºá ááŒááºáá±ážááá·áºáá¯ááºáá±á¬ááºáá»ááºáá
áºáá¯ááŸááááºá void
:
template <typename T>
auto copy (const void * source, void * destination)
->
std::enable_if_t
<
std::is_copy_constructible<T>::value
>
{
new (destination) T(*static_cast<const T *>(source));
}
áá¯ááºáá²á· á¡áááá
áá¬ážáá¯á¶ážáá«á auto
ááá¯ááá¯ááá¯ááºááẠvoid
á¡á²áá«á áá¬á¡ááœááºáá²á á¡á±á¬áºááá¯. ááá¯á·áá±á¬áº PVS ááẠá¡á±á¬ááºáá«á
á¬ááá¯áá»á¬ážááᯠáá¯ááºáá²á·áááºá
dynamic_tuple_management.hpp:29:1: error: V591 Non-void function should return a value.
dynamic_tuple_management.hpp:29:1: error: V2542 Function with a non-void return type should return a value from all exit paths.
á¡ááœááºááŸá±ážááœá±ážáá±á¬ááá¯ááº
áá¯ááºáá²á·á áááºáá±á·ááºá»áá
áºáá¯á
á®áá²á·áá±ážá áááºá¡ááºáá¬áá±á·á
áºááŸá¬ á¥ááá¬ááœá±áá²á· áááºááá¯ááºáá²á· áá±á¬áá«ááŸá¬ááœá±áá±á¬áºááŒáá»ááºáá®ááᯠááá·áºááºáá
áºáᯠáá«ááŸááá«áááºá áá«áá±ááá·áº ááá·áºááºáá
áºáá¯ááᯠááŸáááºááá¯ááºáá¬áá²á· á¡áá»áááºá¡áá±á¬áºááŒá¬á¡á±á¬áẠá
á±á¬áá·áºáááŸá¬ááŒá
áºááŒá®áž áá
áºáá«áá
áºáá¶ááŸá¬ ááŒá
áºáááºáá«áááºá
áá¬áá¬á áá¬áž
áá±á¬áºááŒáá»ááºá¡á¬ážáá¯á¶ážááẠáá¯ááŸá¬ážáá¬áá¬ááŒáá·áºááŒá áºááŒá®áž á¡ááœááºáá±á¬ááºážááœááºáááºá ááá¯á·áá±á¬áº á¡á á®áááºáá¶á á¬á០ááá·áºááºáá»á¬ážááẠá¡ááŒá²áááºáž á¡ááºá¹áááááºáá¬ážááŸááºážááá¯á· áŠážáááºáááºá áá±á¬áá«ááŸá¬ááœá±ááŸá¯áá»á¬ážááᯠáá¯ááŸá¬ážáá¬áá¬ááŒáá·áº áá»ááºáá»ááºážááŒáá·áºááŸá¯ááá¯ááºá á±ááẠáá¬áá¬á áá¬ážááᯠááŒá±á¬ááºážááá¯ááºáá»áŸáẠáá±á¬ááºážáá«áááºá á¡ááºáá¬áá±á·á áºááœáẠááá¯ááá¯á·áá±á¬ááœá±ážáá»ááºááœáá·áºááᯠáá»áœááºá¯ááºáááœá±á·áá²á·áá«á
ááœááºááá¯ážááºááŸáá áºááá·áº áá±á¬áá«ááŸá¬ááœá±áá±ážá¡ááá·áºáá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºááẠá¡áááºáááŒá±áá«á
command ááŸá
áºáá¯ááᯠáá¯á¶ážáá²á·á¡áá»ááºááᯠá
ááŒáá·áºáá¡á±á¬áẠ(áá« pvs-studio-analyzer
О plog-converter
) áá±á¬áá«ááŸá¬ááœá±ááŸá¯áááºááŸááºááŒááºážá¡ááœáẠááá°áá®áá±á¬áá¯á¶á
á¶áá»á¬ážá
á¡ááœááºáá°áá®áá«á pvs-studio-analyzer
áááºáááº-
-a [MODE], --analysis-mode [MODE]
MODE defines the type of warnings:
1 - 64-bit errors;
2 - reserved;
4 - General Analysis;
8 - Micro-optimizations;
16 - Customers Specific Requests;
32 - MISRA.
Modes can be combined by adding the values
Default: 4
áááºááá¯ááœá¬ážáááá²ááá¯áá¬ááᯠááŸá¬ááá¯á· á¡áá»áááºá¡áá±á¬áºááŒá¬á¡á±á¬áẠááŒáá¯ážá á¬ážáá²á·áááºá ááá·áºáá«á (âáááºááá¯ážáá»á¬ážááá·áºááŒááºážâ) áá±á¬á·áá»á¬ážá áá±á¬áºáá¬áá»á¬ážááŒáá·áº ááŒá¬ážáá¬ážáá±á¬ áááºážááá¯á·ááᯠá á¬áááºážááŒá¯á á¯ááẠááŒáá¯ážá á¬ážáá²á·áááº-
pvs-studio-analyzer analyze ... -a 1,4,16
áá±á¬á·ááᯠá¡ááŒáááºáá±á«ááºážáá»á¬ážá áœá¬ ááŸááºáá¯á¶áááºááá¯á· ááŒáá¯ážá á¬ážáá²á·áááº
pvs-studio-analyzer analyze ... -a 1 -a 4 -a 16
ááŒá®ážáá±á¬á· á¡á²áá«ááœá±á áááºážáááºážáá»ááºááŸá¬áá¯á¶ážááœá±ááá¯áᬠáá«ááá±á¬áá±á«ááºááœá¬ážáááºá áááºááá¯á¡ááºáááºá á¡áá»ááºážáá»á¯á¶ážááá¯áá»áŸáá ááá·áºáá«á á¡áááá¹áá«ááºáá»á¬áž á¥ááá¬á¡á¬ážááŒáá·áºá á¡ááœá±ááœá±áá±á¬áá«ááŸá¬ááœá±ááŸá¯áá»á¬ážá ááá¯ááºáááá¯ááá¯áá±á¬ááºážá¡á±á¬ááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº MISRA á¡ááœáẠáá±á¬áá«ááŸá¬ááœá±ááŸá¯áá»á¬ážááá°áááºá áááºážááá¯á·ááᯠáá±á«ááºážá ááºážááẠááá¯á¡ááºááẠ(4 + 8 + 32 = 44)á
pvs-studio-analyzer analyze ... -a 44
á¡áá¯á¶ážááŒá¯áá°á¡ááºáá¬áá±á·á áºáá»á¬ážááœáẠbitmasks á¡áá¯á¶ážááŒá¯ááŒááºážááẠáá±áá¯áá»á¡á¬ážááŒáá·áº ááá¯ážááœá¬ážáá±á¬áá¯á¶á á¶ááŒá áºáááºá á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠá¡ááœááºážááá¯ááºážá á¡áá»ááºážáá»á¯á¶ážááá¯ááºááŒá®áž á¡áá¯á¶ážááŒá¯áá°á¡ááœáẠá¡áá¶á¡á á¯á¶ááᯠáááºááŸááºááá¯ááºáááºá
ááá¯á·á¡ááŒááºá á¡áá¯á¶ážáááºááŸá¯áá
áºáá¯áááºážááŸááááºá plog-converter
áá°áá¬ážáááºááá¯ááºáá±á¬ áááºááŒáááºááŸá¯ááá¯ááºáᬠááœá²ááŒááºážá
áááºááŒá¬ááŸá¯ á¡áá»ááºá¡áááºááᯠáá¯ááºáá±ážáááºá áá°á·ááŸá¬ áááŒá¬ážááŒá¿áá¬ááœá±ááŸááááºá
á¡á
á®á¡á
ááºá¡ááœáẠá¡áá°á¡áá® plog-converter
á¡á
á®áááºáá¶á
á¬áá»á¬áž
-a, --analyzer Specifies analyzer(s) and level(s) to be
used for filtering, i.e.
'GA:1,2;64:1;OP:1,2,3;CS:1;MISRA:1,2'
Default: GA:1,2
ááááºá áááŸááá²á·áá±á¬ âá¡ááá·áºáá»á¬ážâ á¡áá»áá¯á·ááẠá€áá±áá¬ááœáẠáá±á«áºáá¬áá²á·ááŒá®áž áááºážááá¯á·ááŸáá·áºáááºáááºááá·áº á á¬ááœááºá á¬áááºážáá»á¬ážááœááºáááºáž áá»áœááºá¯ááºáááœá±á·áá²á·áá«á
áá±áá°áá»á¡á¬ážááŒáá·áº áááŸááºážáááºážáá«á á¡á²áá«ááŒá±á¬áá·áº á¡áá¬á¡á¬ážáá¯á¶ážááᯠá¡ááŒáá·áºáá¯á¶ážááŒá áºá¡á±á¬áẠáá¬ážáá²á·áááºá
Catch ááᯠááá¯ááºáá²á áœá¬ áá²ááá¯ááŒááºážá
áá»áœááºá¯ááºááœá²ááŒááºážá
áááºááŒá¬áá¬ážáá±á¬ ááá±á¬áá»ááºáá¯á¶ážáá¯á¡ááẠááŸá
áºáá¯ááẠáá°áá
áºá
ááºážáááºááŒááºážá
á¬ááŒáá·áºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
multithreading ááá¯ááá·áºááœááºážá ááºážá á¬ážáááºááá¯ááºáá«á
áááŒá±á¬ááºážáá²áá±á¬ ááááºážááŸááºáá»á¬áž ááá¯á·ááá¯áẠá¡áá¯á¶ážáá²á· ááœááºážáááºáá»á¬áž ááŸáá·áº áááºáááºáá±á¬ ááŸá¬ážááœááºážáá±á¬ á¡ááŒá¯ááá±á¬áá±á¬ááºááŸá¯áá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááŸááá«áááºá á€ááááºážááŸááºáá»á¬ážááŸáá·áº á¡áá¯ááºááẠááá°áá®áá±á¬ thread áá»á¬ážá០ááŒá áºáá±á«áºáᬠááá¯ááá¯á·ááá¯ááºáá«á áá°áá áºá á áºáá±ážááŸá¯áá»á¬ážááẠá¡áá¯ááºáááŒá áºáá«á
ááá¯á·áá±á¬áºá áááºááŒáááºááŸá¯ááœá²ááŒááºážá áááºááŒá¬áá°ááẠáááºážááᯠááá·áºááœááºážá ááºážá á¬ážááá¯ááºáá«ááá¬ážá ááááá°ážá
ááááºáá»á¬ážááá¯
PVS ááẠáá»áœááºá¯ááºá open source ááá±á¬áá»ááºáá»á¬ážááœáẠá¡ááŸááºáááẠáá»áá¯á·ááœááºážáá»ááºáá
áºáá¯áá»áŸ áááœá±á·áá«á scan-build
áá±áá°áá»á¡á¬ážááŒáá·áºá á€ááœá²ááŒááºážá áááºááŒá¬áá°á¡á¬ážáá¯á¶ážá á¡áááºá¡ááŒááºááŸá¬ ááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº áá°áá®áááº- áá¯ááºáááºá áááºážááá¯á·ááẠáá áºá á¯á¶áá áºáá¯ááᯠáááºážáááááºá áá áºáá«áá áºáá¶ááœáẠá¡áá±ážááŒá®ážáá±á¬á¡áá¬áá áºáá¯áááºááŒá áºáá±á¬áºáááºáž compiler áá áºáá¯áá¯á¶ážááẠáá¯á¶áá±á¬ááºáá«áááºá
áá»áœááºá¯ááºááá¯á·áá¡ááœá²á·ááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž áá¯ááºá áœá¡áá¯á¶áž áá¯ááºááá¬áááᯠáááºáá®ážááá¯ááºá á±ááá·áº áá±á¬á·ááºáá²ááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááá¯ááºáᬠá¡áá±á·á¡áá»áá·áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº ááŒá áºááá¯ááºáá»á±ááŸáááẠ(áá»áœááºáá±á¬áºááá¯ááºááá¯ááºáááºáž ááá¯ááá¯á·ááœá±ážáá±á¬ááá¯áá«áááº)á ááŒá¿áá¬ááœá±ááᯠáá°áá²áá±á¬ááºážáááºááẠáá»á±á¬áºááŒááºáá¬ááẠááŒá¿áá¬ááœá±ááᯠááááºáá®ážáá¬á ááá¯áá±á¬ááºážáá«áááºá
ááá¯á·ááŒá±á¬áá·áºá áááºáá°áá áºáŠážáá áºáá±á¬ááºáááŒá±áá±á¬ááºááᯠáá áºááá»ááẠááá¯á·ááá¯áẠááá°ážááᯠááœááºáá¯á¶ážááŒáá·áºáááááá á±ááẠá¡ááŒá¶áá¬ááºá¡áá»áá¯á·ááᯠC++ ááœáẠáááºááá¯á·áá±ážááááºááᯠáá»áœááºá¯ááºáááœááºáááºááœáá·áºááᯠáááºáá¶áá«áááºá
compiler áá±á¬áá«ááŸá¬ááœá±ááŒááºážáá»á¬ážááᯠá¡áá±á¬ááºážáá¯á¶ážá¡áá¯á¶ážáá»áá«á
áá»áœááºá¯ááºááá¯á·áá¡ááœá²á·ááẠá¡á±á¬ááºáá«á á¯á ááºážááŸá¯ááœá±ážáá»ááºá áá¬áá»á¬ážááᯠ(ááá·áºá¡á¬áž á¡ááŒá¶áá±ážáááº) ááá¯á¡áá¯á¶ážááŒá¯áááº-
-Werror
-Wall
-Wextra
-Wpedantic
-Wcast-align
-Wcast-qual
-Wconversion
-Wctor-dtor-privacy
-Wenum-compare
-Wfloat-equal
-Wnon-virtual-dtor
-Wold-style-cast
-Woverloaded-virtual
-Wredundant-decls
-Wsign-conversion
-Wsign-promo
ááá·áºááá±á¬áá»ááºááœáẠáááºážááá¯á·ááá¯ááœáá·áºááŒá®áž ááá·áºáá¯ááºá¡ááŒá±á¬ááºáž áá»á¬ážá áœá¬áá±á·áá¬áá«á
á á¶ááá¯ááŸá®áá²áá«á
á ᶠanalogue áá»á¬ážááŸááá«á ááááºáá±á¬ááºážáá±á«áºááœáẠááŸá®ááá¯áá±á¬á¡áá¬áá»á¬ážááᯠááá¯á¶ážáá«ááŸáá·áºá áááºážááá¯á·ááá«áá² áá¯á¶ážáááá¯ááºááá¯ááºáá«áá áááºážááá¯á·ááᯠmacros á¡ááœáẠá¡áá°ážááá±á¬ááºáá»á¬áž (ááá¯á·ááá¯áẠá¡ááŒá¬ážá¡áá¬áá áºáá¯áá¯) ááœáẠáá¯ááºááá¯ážáá¬ážááŒá®áž ááá·áºáá¯ááºááᯠáá¶á·ááá¯ážááá¬ážáá±á¬ á¡ááŒá±á¡áá±áá»á¬ážá¡á±á¬ááºááœáẠá á¯á ááºážááŸá¯ áááŒá¯áá«ááŸáá·áºá
á á¶áá¯ááºáááºážáá±á¬ááºáᬠááá±á¬ááá¬ážá¡ááá¯ááºáž ááá¯ááºáá¬áá«á
áááºáá±á¬ááºážááŒá
áºááááºá áááºááá¯ážááááºá ááŒáŸá±á¬ááºááááºá ááŒáŸá±á¬ááºááááºá áá¯ááºáá±á¬ááºáá»ááºáá±á«áºááá¯ááŸá¯ááẠáá¯ááºáá±á¬ááºáá»ááºáá±á«áºááá¯ááŸá¯ááŒá
áºááááºá áá±á¬áºáá®ááŒá
áºááááºá áá°ážáá°áá¬ážááááºá áá±á¬ááºáá¬ážááááºá ááœááºááááºáá¬ááẠáááºááááá¯ááºááááºá áááºááá·áºááŒáŸáá·áºáááºáá°ááŸáááááºá ++
ááá¯ážáá¬ážáá»áẠ*
. ááœá±ážáááááºá á
áááºááŒáá·áºáá±á«á·á
á¡áá°á¡áá ááŸááºážáááºáááºáááºá á ááºážááŸá±á¬ááºááŸá¯áááŸááá±á¬ á ááºážáá»á¥áºážá ááºážáááºážáá»á¬áž ááŸááááºá ááá¯á·áá±á¬áº ááá·áºáá¯ááºááᯠá¡áá¯á¶ážááŒá¯áá°áá»á¬ážááŸáá·áº á á¬áááºáá°áá»á¬áž á¡á¬ážáá¯á¶áž ááŒááºááœá±á·ááẠáá»áŸá±á¬áºááá·áºáá¬ážáááºá áá°áá áºáá«ážááᯠááœááºáá²ááá¯á· áááŒáá¯ážá á¬ážáá«áá²á·á ááá¯ááºááẠáááºážááá¯ááºáááºáž ááœááºááœá¬ážáááá·áºáááºá
ááá¯ááºáááºáá®áá±á¬áá¯ááºááá¯áá±ážáá«á
ááááá¯á¶ážá¡áá±áá²á· áá»áœááºáá±á¬áºááŒá±á¬áá»ááºáá¬á Standard Library áá«á áááºá á¡áááºážáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á¡ááºáá¬áá±á·á áºáá»á¬ážááᯠá á¶ááŸáá·áº á¡ááŒá¬ážá á¬ááŒáá·áºááá¯ááºáá»á¬áž (á¥ááᬠBoost) ááŒáá·áº á¡áá¯á¶ážááŒá¯ááẠá¡ááœááºááŸá áºááá¯ááœááºáá±á¬ááºážáá«áááºá
STL ááŸáá·áº Boost interfaces áá»á¬ážááᯠááŒáá·áºááŸá¯ááẠá¡á¬ážááá¬áá«ááŸáá·áºá ááŸá¬ážááŸá¬ážáá«ážáá«áž ááŒáœááºážáá»ááºá¡áá±ááŒáá·áºá ááá¯ááºáááºáá±á¬ á á¶ááá°áá¬ááŒáá áºáŠážááᯠááá¯áá±áá¬ááœáẠááŒááºááœá±á·ááááºááŒá áºáááºá
open source tools áá»á¬ážááᯠá¡áá±á¬ááºážáá¯á¶ážá¡áá¯á¶ážáá»áá«á
áá°áá®áá±á¬áááºááŒáááºááŸá¯ááœá²ááŒááºážá áááºááŒá¬ááŸá¯á¡ááœááºá CMake áááºáá±á¬ááºááŸá¯á áá áºááŒáá·áº áááºááá·áºááá±á¬áá»ááºááŸáá·áºáááᯠáá áºááŒáááºáá¬áá»áááºáááºááá¯ááºáá±á¬ á¡ááœáá·áºá¡ááá²á·áááááᬠá¡áááºážáá¯á¶ážááŸá áºáá¯ááŸááááºá
afterword
áá±á¬ááºáá¯á¶ážá¡áá±ááŒáá·áºá áá»áœááºá¯ááºááẠPVS ááá¯á·ááá¯áẠá¡ááŒá¬ážáá±á¬ static ááœá²ááŒááºážá áááºááŒá¬ááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážáááŒá¯ááẠááá¯ááºááœááºážááŒá±á¬ááá¯ááŒááºážáááŒá¯ááŒá±á¬ááºáž á¡áá±ážáá±ážááŒá±á¬ááŒá¬ážááá¯áá«áááºá áá«áá±ááá·áº static analyzer á áááºážáá²á·áá¯ááºááŸá¬ áááá¬áááºááŸá¬ážáá²á· á¡ááŸá¬ážá¡ááœááºážááœá±ááᯠá¡áááºáááŒááºááœá±á·áá±áááºááá¯áá¬ááᯠá ááºážá á¬ážááá¯á· áá«ááá¯ááºááœááºážáá«áááºá
áá«á á¡áá»áá¯ážáááºáá áºáá¯áá«áá²á á¡ááŒá±á¬ááºážáááºážááᯠááŸá¬ááœá±ááŒá®áž áááºááŸá¬ážáá áºááá¯á· ááá¯áá«áááºá
source: www.habr.com