แแ แแแแฎแ แแฃแแแแแแชแแ, แ แแแแแก แแแแแแแแช PVS-แแ แแแแฃแฅแกแแก แฅแแแจ แแกแฌแแแแ แแ แแแแแแฌแงแแแขแ แแแแแแแชแแแ แแก แฉแแแก แแ แแแฅแขแแแแ. แแ แแก แแ แแก แแก, แ แแช แแแแแแแแ แแแกแแแ.
แแแคแแ แแแชแแแก
แแแแแแแแ
แกแแแแกแฃแฎแ แแฎแแ แแแญแแ แ
แกแแชแแแแ แแแกแแฆแแแ แแแแแแฎแแแ แแ แแแแแ แแฆแแก แแแแแแแแแแแแแก.
แกแแแแแแ แแแแคแแ แแแแฃแแแแขแแชแแ
แฉแแแ แแแแแฎแแ แฎแแ แแแแแแแแขแแ แแก แแแจแแแแ แฃแแ แแแแแแแ. แแกแแแ แฎแแแแแกแแฌแแแแแแ แแแแกแแแแก แแ แซแแแแแแแแก แแแฎแแแ แแแ (แแฃแแชแ แแฅ แแ แแก แแแ แแแแฃแแ แกแแฉแแแ แแแ, แแฎแแแแ แกแแฅแชแแ
แแ แแแแแซแแคแแแแ แแแแแแแแก แจแแกแแซแแแแแแแ
แแแแแแแแขแแ แก แแฅแแก "แกแขแแแแแ แขแฃแแ" แแแ แแแแขแ -j
, แ แแช แกแแจแฃแแแแแแก แแซแแแแ แแแแแแแ แฉแแขแแ แแแก แแแ แแแแแฃแ แแ แ แแแแแแแแ แแแแชแแแแจแ. แแก แแแแแแแแก แแแ แแ แแก.
แแแ แแ แแแแฃแแแแแแชแแ
แแ แแแแแ แแแแกแฎแแแแแแฃแแ แแแแแแแแแแ แคแแ แแแขแ, แขแแฅแกแขแแแแ แแแฌแงแแแฃแแ แแแขแแ แ แแแ-แแฃแฌแฃแแแแแ.
แแแ แขแแแ แแแขแแแ แแชแแ แแกแแแแแแแจแ
แแแแแ แแแแฃแแแแขแแชแแ แแแ แแแแกแแแขแแแ, แแฎแแแแ แแแแก แแฅแแ แจแแแแซแแแ, แ แแ แแฃ แแฅแแแแ แแ แแแฅแขแ แแแแแฃแแแ CMake-แแก แแแแแงแแแแแแ, แแแจแแ แงแแแแแคแแ แ แซแแแแแ แแแ แขแแแแ.
แแแ แแ แแแแแแแกแขแแแฃแ แ แแฆแฌแแ แแแแแแแ
แแฃ แแแแแแแแแแก แแแแแแแฃแจแแแแแ แ แแแแแจแ fullhtml
, แจแแแแแ แแแแแแฃแ แจแแขแงแแแแแแแแก แแฅแแก แแแฃแแ แแแแแแแกแขแแแฃแ แ แแฆแฌแแ แแแแแแก แจแแกแแฎแแ, แแฎแกแแ-แแแแแแ แขแแแแ, แแแแแก แแแแแแแแแแแ แแ แแแแแขแแแแแ แแแฃแแแแแ.
Cons
C++ แแแแก แแแแแ แแ แแแ แแแแแแแแขแแ แแก แแแแ
แกแแแฌแฃแฎแแ แแ, PVS แแแแฏแแ แฃแจแแแแก แกแแแขแแฅแกแฃแ แจแแชแแแแแแก แแ แฅแแแแก แชแ แฃ แแแแแขแแฃแ แจแแขแงแแแแแแแแแก, แ แแแแกแแช แแแแ แกแ แฃแแแแ แกแฌแแ แแ.
แแแแแแแแแ, แแ แแก แคแฃแแฅแชแแ, แ แแแแแแช แแ แฃแแแแแ 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.
แซแแแแแ แแแแ แกแแแขแ
แแแแฎ, แแแ แแแขแแ แคแแแกแจแ แแแแแแฃแแ แจแแขแงแแแแแแแแก แแแแ แแแ แแ แแก แแแฃแแ แจแแกแแแแแแกแ แแแแแแแกแขแแแฃแ แ แแฆแฌแแ แแแแแแก แแแแแแแแแแแ. แแแแ แแ แ แแชแ แแแแแแ แแฌแแแแฃแแแ, แกแแแแแแ แแแแฎแแแก แแแแแฌแแแก แแแแแแ แแ แแแแฏแแ แแกแแช แฎแแแแ
แแแ
แงแแแแ แแฆแฌแแ แ แ แฃแกแฃแ แแแแแแ, แ แแช แจแแกแแแแจแแแแแ. แแแแ แแ แแแแแ แแจแแแแ แแแฃแแแแ แงแแแแแแแแก แแแแแแกแฃแ แแแ แกแแแแแ แแแแแก. แแแ แแ แแฅแแแแแแ แแแแก แจแแชแแแ แ แแ แจแแแแซแแแ แแแฃแงแแแแแแแแ แแแฎแแ แแแแแแแกแขแแแ แ แฃแกแฃแแแ. แแ แแแ แแแแแแ แแกแแแ แแแ แแแแขแ แแแขแแ แคแแแกแจแ.
แแ แแกแแกแแแแแแแแ แกแแแแแแแแกแขแแแ แแแแแแแแแ แแฃแจแแแแ แแแแกแแแแก แกแแจแฃแแแแแแ
แแแแแฌแงแแ แแแแ, แ แแ แแแแแงแแแแแฃแแแ แแ แ แแ แซแแแแแ (แแก 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
แแแขแแแกแแแแแก แแแแแงแแแแแ แแแแฎแแแ แแแแแก แแแขแแ แคแแแกแแแจแ แแแแแแแ แชแฃแแ แคแแ แแแ. แแก แงแแแแแคแแ แ แจแแแซแแแแ แแงแแก แจแแฏแแแแแฃแแ แจแแแแแแแ แแ แแแแฎแแแ แแแแแกแแแแก แแ แแจแแแแก แแแแ แแแแก แแแงแแแแแ.
แแแ แแ แแแแกแ, แแ แแก แแกแแแ แแแแฃแแแแฃแ แ 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-แแ
แฉแแแก แแแแ แแแแแแแแแแแฃแแ แกแแแ แแ แแแฅแขแแแแ แแ แ แแงแแแแแก แแ แแแฃแแแก แขแแกแขแแ แแแแก แแแแแแแแแแแก
แแ แแแแแแแกแฌแแแแแก แแ แแแแแซแแคแแแแแแแก
แแ แกแแแแแก แแแแ แ แชแ แฃ แแแแแขแแฃแ แ แกแแแแ แแฃแแ แฃแชแแแแแ แชแแแแแแแแก แแ แแแฃแแแแแแแแ แแแ แงแฃแแแแแก แจแแกแแฎแแ, แฎแแแ แแ แชแแแแแแแแแ แแฃแจแแแแ แฎแแแแ แกแฎแแแแแกแฎแแ แซแแคแแแแแแ แแ แแก แแกแ แ แแ แแ แแงแแก, แแแจแแ แแ แแแฃแแ แขแแกแขแแแ แแ แแแฃแจแแแแแก.
แแฃแแชแ, แจแแฃแซแแแ แแฃ แแ แ แกแขแแขแแแฃแ แ แแแแแแแแขแแ แ แแแแก แแแแแแแแกแฌแแแแแแก? แแ แแแชแ.
แจแแแแแแแ
PVS-แแ แแแ แแแแแ แ แแแแฃแ แ แจแแชแแแแแแ แฉแแแก แฆแแ แแแแแก แแ แแแฅแขแแแจแ scan-build
แแแแแแแ, แงแแแแ แแ แแแแแแแแขแแ แแก แจแแแแแญแแแแแแ แแแแฎแแแแแแ แแ แแแแแ แแ: แแแแฎ, แแกแแแ แแญแแ แแ แ แแฆแแชแแก, แแแแฏแแ แแ แ แแฆแแช แแแแจแแแแแแแแแก, แแแแ แแ แแแแแแแแแแจแ แแแแแแแแ แ แกแแแแแ แแกแแ.
แจแแกแแซแแแแแแแ (แแ แแ แแแ แแแแ แแกแ แแคแแฅแ แแ) แ แแ แฉแแแแแ แแฃแแแแ แแแแแแงแแแแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแแแแแแ แแแแก แแ แแฅแขแแแ, แ แแแแแแช แกแแจแฃแแแแแแก แแแแซแแแแก แแแแแแแแฃแจแแแ แแแแแแแแฃแ แ แ แแแแแแแแแก แฃแแแ แ แแแแ. แกแฏแแแก แแ แแแแแแแแ แแ แจแแแแฅแแแแ, แแแแ แ แแแแ แฃแแแ แแแซแแแแ แแกแแแ.
แแแแขแแ, แแ แฃแคแแแแแก แแแซแแแแ แแแแชแแ แ แฉแแแ แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แฃแแแ แแแฌแแ แแ C++-แจแ แแกแ, แ แแ แแ แแแแก แแ แแกแ แแแ แคแแฎแแแ แแ แแ แแแแ แขแงแ แแแแแแก แจแฃแแแจแ แกแแแแแแกแแ.
แแแฅแกแแแแแฃแ แแ แแแแแแงแแแแ แแแแแแแแ แแก แแแแแแแกแขแแแ
แฉแแแแ แแฃแแแ แแงแแแแแก (แแ แแแ แฉแแแ) แจแแแแแแแก แจแแแแแ แแแ แแแแขแแแก:
-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
แฉแแ แแแ แแกแแแ แแฅแแแแก แแ แแแฅแขแจแ แแ แจแแแขแงแแแ แแแแ แ แ แแ แแฅแแแแ แแแแแก แจแแกแแฎแแ.
แแแแชแแแแ แกแขแแแแแ แขแ
แจแแแชแแแแ แแ แแแแแแงแแแแ แแแแขแคแแ แแแแ แแแแแแแแแแฃแแ แแแแแแแ, แแฃ แแ แกแแแแแก แกแขแแแแแ แขแฃแแ แแแแแแแแแ, แแ แแฃ แแแกแแแฃแขแฃแ แแ แแ แจแแแแซแแแแ แแแ แแแ แแจแ, แแแแแแขแแแแ แแกแแแ แแแแ แแกแแแแก (แแ แ แแแแ แกแฎแแ) แกแแแชแแแแฃแ แแแแแแแจแ แแ แฃแแ แแแแ แแ แแแฃแจแแแ แแฅแแแแ แแแแแก แจแแแแแแ แแฎแแ แแแญแแ แแ แแแ แแแแแจแ.
แแแแชแแแแ แกแขแแแแแ แขแฃแแ แแแแ แแชแแแแแก แกแแแแแขแแแ
แจแแแ แแแ แฃแแแ แแงแแก แจแแแ แแแ, แแแแ แแแแแแ แฃแแแ แแงแแก แแแแ แแแแแแ, แคแฃแแฅแชแแแก แแแแแซแแฎแแแ แฃแแแ แแงแแก แคแฃแแฅแชแแแก แแแแแซแแฎแแแ, แแกแแ แฃแแแ แแงแแก แแแแแ แแแ, แแแแแกแแขแแแ แฃแแแ แแงแแก แขแแ แแแ, แแแแขแแแแแ แ แฃแแแ แแงแแก แแแแแแ แแแแแ, แแขแแ แแขแแ แก แฃแแแ แฐแฅแแแแแก แแแฌแแแแฃแ แแแ ++
แแ แแแแแแแแแก แแแฃแฅแแแแ *
. แฒแ แแกแ แจแแแแแ.
แแคแแฅแ แแ, แแแ แ แแแแแแแ. แแ แกแแแแแก แแแแแแแแแ แแแแแแแชแแแแ, แ แแแแแแแช แแ แแ แแก แกแแแแแแแแฃแแ, แแแแ แแ แแฅแแแแ แแแแแก แงแแแแ แแแแฎแแแ แแแแแ แแ แแแแแฎแแแแ แแแแก. แแฃ แแชแแแแแ แกแฎแแแแแก แแแขแงแฃแแแแก, แแแ แแ แกแแแฃแแแ แแแแก แแฏแแแแแ.
แฉแแฌแแ แแ แแแแกแแแแแ แแแแ
แแแ แแแ แ แแแจแ, แแแฃแแแกแฎแแแ แกแขแแแแแ แขแฃแ แแแแแแแแแแแก. แซแแแแแ แกแแกแฃแ แแแแแ, แ แแ แแฅแแแแ แแแแกแแแแกแ แแ แคแฃแแฅแชแแแแแก แแแขแแ แคแแแกแแแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แกแขแแแแแ แขแฃแ แแ แกแฎแแ แแแแแแแแแแแแแแ (แแแแแแแแแ, Boost).
แแแแแกแฃแคแแแ แแแแแฎแแแแ STL แแ Boost แแแขแแ แคแแแกแแแก. แแจแแแแแ แแแแแแแแแแกแแก แแแ แแ, แแฅ แแแฎแแแ แฆแแ แกแแฃแ แแแกแแแแซ แแแแแแแแก.
แแแแแแงแแแแ แฆแแ แแแแแก แแแกแขแ แฃแแแแขแแแ แแแฅแกแแแแแฃแ แแ
แแแแแ แกแขแแขแแแฃแ แ แแแแแแแแกแแแแก แแ แแก แแแแแแฃแ แแ แ แฆแแ แฃแคแแกแ แแแกแขแ แฃแแแแขแ, แ แแแแแแช แจแแแซแแแแ แแฎแแแแ แแ แแฎแแ แแแฃแแแแจแแ แแแก แแแแแกแแแแ แแ แแแฅแขแก CMake build แกแแกแขแแแแ.
Afterword
แแ แแแแแก, แแแแแ แฎแแแแแกแแแ แแฆแแแแจแแ, แ แแ แแ แแ แแแ แแแแฎแ แ แแ แแแแแแงแแแแ PVS แแ แกแฎแแ แกแขแแขแแแฃแ แ แแแแแแแแขแแ แแแ. แแแแ แแ แแ แแแแแฌแแแแแ แแแคแแฅแ แแแ แแแแแ, แแฃ แ แแแแ แแแฎแแ, แ แแ แกแขแแขแแแฃแ แ แแแแแแแแขแแ แ แแฃแแแแแแ แแฆแแแแฉแแแก แแแแจแแแแแแแแ แจแแชแแแแแแก แแฅแแแแก แแแแจแ.
แแก แแฎแแแแ แจแแแแแแ. แฉแแแ แฃแแแ แแแซแแแแ แแ แแฆแแแคแฎแแ แแก แแแแแแ.
แฌแงแแ แ: www.habr.com