ΠΠΈΠ΄Π΅ΠΎ ΡΠ°ΠΌ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΊΠΎΡΡ ΡΠ΅ ΠΠΠ‘ Π½Π°ΡΡΠΈΠΎ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ΄ ΠΠΈΠ½ΡΠΊΠΎΠΌ ΠΈ ΠΎΠ΄Π»ΡΡΠΈΠΎ ΡΠ°ΠΌ Π΄Π° ΡΠ΅ ΠΈΡΠΏΡΠΎΠ±Π°ΠΌ Π½Π° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΠΊΡΠΈΠΌΠ°. Π Π΅Π²ΠΎ ΡΡΠ° ΡΠ΅ ΠΈΠ· ΡΠΎΠ³Π° ΠΏΡΠΎΠΈΠ·Π°ΡΠ»ΠΎ.
Π‘Π°Π΄ΡΠΆΠΈΠ½Π°
ΠΡΠΎΠ·ΠΎΠ΄ΠΈΡΠ°
ΠΠ΄Π·ΠΈΠ²Π½Π° ΠΏΠΎΠ΄ΡΡΠΊΠ°
ΠΠ°ΡΡΠ°ΠΆΠΈΠΎ ΡΠ°ΠΌ ΠΏΡΠΎΠ±Π½ΠΈ ΠΊΡΡΡ ΠΈ ΠΏΠΎΡΠ»Π°Π»ΠΈ ΡΡ ΠΌΠΈ Π³Π° ΠΈΡΡΠΎΠ³ Π΄Π°Π½Π°.
ΠΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠ°ΡΠ½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°
Π£ΡΠΏΠ΅Π»ΠΈ ΡΠΌΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π±Π΅Π· ΠΈΠΊΠ°ΠΊΠ²ΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΠΎΠΌΠΎΡ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΊΠΎΠ½Π·ΠΎΠ»Π΅ ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π° (ΠΈΠ°ΠΊΠΎ ΠΎΠ²Π΄Π΅ ΠΈΠΌΠ° Π½Π΅ΠΊΠΈΡ
ΠΏΡΠΈΡΡΠΆΠ±ΠΈ, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ ΠΎΠ΄Π΅ΡΠ°ΠΊ
ΠΠΎΠ³ΡΡΠ½ΠΎΡΡ Π²ΠΈΡΠ΅Π½ΠΈΡΠ½Π΅ Π°Π½Π°Π»ΠΈΠ·Π΅
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΠΌΠ° "ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Ρ" ΠΎΠΏΡΠΈΡΡ -j
, ΡΡΠΎ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠΏΡΠΎΠ²ΠΎΠ΄ΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ Ρ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π·Π°Π΄Π°ΡΠ°ΠΊΠ°. ΠΠ²ΠΎ ΡΡΠ΅Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π°.
ΠΠΎΠ±ΡΠ° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ°
ΠΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΡ
ΠΈΠ·Π»Π°Π·Π½ΠΈΡ
ΡΠΎΡΠΌΠ°ΡΠ°, ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ° Π΄ΠΎ ΠΌΠ°Π»ΠΎΠ³ Π²Π΅Π±Π°.
ΠΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° Ρ ΡΠΊΠ»ΠΎΠΏ
Π‘Π²Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ΡΠ΅ Π½Π° ΡΠΈΡ ΠΎΠ²ΠΎΡ Π²Π΅Π± ΡΡΡΠ°Π½ΠΈΡΠΈ, ΠΌΠΎΠ³Ρ ΡΠ°ΠΌΠΎ ΡΠ΅ΡΠΈ Π΄Π° Π°ΠΊΠΎ ΡΠ΅ Π²Π°Ρ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½ ΠΏΠΎΠΌΠΎΡΡ Π¦ΠΠ°ΠΊΠ΅-Π°, ΠΎΠ½Π΄Π° ΡΠ΅ ΡΠ²Π΅ Π²ΡΠ»ΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ.
ΠΠΎΠ±ΡΠΈ Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΡΠΊΠΈ ΠΎΠΏΠΈΡΠΈ
ΠΠΊΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ΅ΡΠ΅ ΠΈΠ·Π»Π°Π· Ρ ΡΠ΅ΠΆΠΈΠΌΡ fullhtml
, ΠΎΠ½Π΄Π° ΡΠ²Π°ΠΊΠ° ΠΏΠΎΡΡΠΊΠ° ΠΈΠΌΠ° Π²Π΅Π·Ρ Π΄ΠΎ Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΡΠΊΠΎΠ³ ΠΎΠΏΠΈΡΠ°, ΡΠ° ΠΎΠ±ΡΠ°ΡΡΠ΅ΡΠΈΠΌΠ°, ΠΏΡΠΈΠΌΠ΅ΡΠΈΠΌΠ° ΠΊΠΎΠ΄Π° ΠΈ Π΄ΠΎΠ΄Π°ΡΠ½ΠΈΠΌ Π²Π΅Π·Π°ΠΌΠ°.
ΠΡΠΎΡΠΈΠ²
ΠΠ΅ΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅ ΡΠ΅Π·ΠΈΠΊΠ° Π¦++ ΠΎΠ΄ ΡΡΡΠ°Π½Π΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
ΠΠ°ΠΆΠ°Π»ΠΎΡΡ, ΠΠΠ‘ ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ ΠΏΡΠ°Π²ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΊΠ΅ Π³ΡΠ΅ΡΠΊΠ΅ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ΅ Π»Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠ²Π½Π΅ ΠΏΠΎΡΡΠΊΠ΅ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΊΠΎΠ΄ ΠΏΠΎΡΠΏΡΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²Π°Π½.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΡΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΊΠΎΡΠ° Π²ΡΠ°ΡΠ° 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
, Π·Π° ΡΠΎ ΡΠ΅ Π°ΡΡΠΎ. ΠΠ»ΠΈ ΠΠΠ‘ ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΏΠΎΡΡΠΊΠ΅:
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
Π ΡΠ΅ΠΊ ΡΠ°Π΄Π° ΡΠ°ΠΌ ΡΡ Π²Π°ΡΠΈΠΎ Π΄Π° ΡΡ ΡΠΎ Π±ΠΈΠ»Π΅ Π±ΠΈΡΠ½Π΅ ΠΌΠ°ΡΠΊΠ΅! Π ΡΡΠ΅Π±Π° ΡΠΈ ΡΡΠΌΠΈΡΠ°ΡΠ Π½Π΅ Π°Π΄Π΄ Π·Π½Π°ΡΠ΅ΡΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° Π±ΠΈΡΡΠ΅ Π΄ΠΎΠ±ΠΈΠ»ΠΈ ΠΎΠΏΡΡΡ Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΠΊΡ, Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΠΊΡ Π·Π° ΠΌΠΈΠΊΡΠΎΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ΅ ΠΈ ΠΠΠ‘Π Π, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΈΡ ΡΡΠΌΠΈΡΠ°ΡΠ΅ (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
ΠΠ²Π΄Π΅ ΡΡ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΈ βΠ½ΠΈΠ²ΠΎΠΈβ ΠΊΠΎΡΠΈΡ ΡΠ°Π½ΠΈΡΠ΅ Π½ΠΈΡΠ΅ Π±ΠΈΠ»ΠΎ, Π° Π½ΠΈ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΈ Π½ΠΈΡΠ°ΠΌ Π½Π°ΡΠ°ΠΎ Π½ΠΈΡΡΠ° ΠΎ ΡΠΈΠΌΠ°.
ΠΠ΅Π½Π΅ΡΠ°Π»Π½ΠΎ, Π½ΠΈΡΠ΅ ΡΠ°ΡΠ½ΠΎ. ΠΠ°ΡΠΎ ΡΠ°ΠΌ ΡΠ²Π΅ ΠΏΠΎΡΡΠ°Π²ΠΈΠΎ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ.
ΠΠΎΠΌΠΈΠ»Π° Π³Π»ΡΠΏΠΈΡ ΠΏΡΠΎΠ²ΠΊΠΈ Π½Π° Π¦Π°ΡΡΡ
ΠΠ²Π° ΠΎΠ΄ ΡΡΠΈ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° ΠΊΠΎΡΠ° ΡΠ°ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π·Π° ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ°
ΠΠ΅ ΡΠ·ΠΈΠΌΠ° Ρ ΠΎΠ±Π·ΠΈΡ ΠΌΡΠ»ΡΠΈΡΡ ΡΠ΅Π°Π΄ΠΈΠ½Π³
ΠΠΎΡΡΠΎΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π°ΠΆΠ½ΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠ²Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎ Π½Π°Π²ΠΎΠ΄Π½ΠΎ Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΠΌ Π²Π°ΡΠΈΡΠ°Π±Π»Π°ΠΌΠ° ΠΈΠ»ΠΈ Π±Π΅ΡΠΊΠΎΠ½Π°ΡΠ½ΠΈΠΌ ΠΏΠ΅ΡΡΠ°ΠΌΠ°, Π΄ΠΎΠΊ ΡΠ΅ ΡΠ°Π΄ ΡΠ° ΠΎΠ²ΠΈΠΌ Π²Π°ΡΠΈΡΠ°Π±Π»Π°ΠΌΠ° ΠΎΠ΄Π²ΠΈΡΠ° ΠΈΠ· ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΡ Π½ΠΈΡΠΈ, Π° Π΄Π° ΡΠΎ Π½ΠΈΡΠ΅ ΡΠ°ΠΊΠΎ, ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π½Π΅ Π±ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π»ΠΈ.
ΠΠ΅ΡΡΡΠΈΠΌ, ΠΌΠΎΠΆΠ΅ Π»ΠΈ ΡΡΠ°ΡΠΈΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠΎ ΡΠΎΠΏΡΡΠ΅ ΡΠ·Π΅ΡΠΈ Ρ ΠΎΠ±Π·ΠΈΡ? ΠΠ΅ Π·Π½Π°ΠΌ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈ
ΠΠΠ‘ Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠ°ΠΎ Π½ΠΈΠΊΠ°ΠΊΠ²Π΅ ΠΏΡΠ°Π²Π΅ Π³ΡΠ΅ΡΠΊΠ΅ Ρ ΠΌΠΎΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΠΊΡΠΈΠΌΠ° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π° scan-build
ΠΠ΅Π½Π΅ΡΠ°Π»Π½ΠΎ, ΡΡΠΈΡΠ°ΠΊ ΡΠ° ΡΠ²ΠΈΡ ΠΎΠ²ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ ΠΈΡΡΠΈ: Π΄Π°, ΠΎΠ½ΠΈ Π½Π΅ΡΡΠΎ ΡΡ Π²Π°ΡΠ΅, ΠΏΠΎΠ½Π΅ΠΊΠ°Π΄ ΡΠ°ΠΊ ΠΈ Π½Π΅ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ, Π°Π»ΠΈ Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ ΡΠ΅ Π΄ΠΎΠ²ΠΎΡΠ°Π½.
ΠΠΎΠ³ΡΡΠ΅ ΡΠ΅ (Π° ΡΠ° Π»ΠΈΡΠ½ΠΎ ΡΠ°ΠΊΠΎ ΠΌΠΈΡΠ»ΠΈΠΌ) Π΄Π° Π½Π°Ρ ΡΠΈΠΌ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠ°ΠΊΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ° ΡΠΎΡΡΠ²Π΅ΡΠ° ΠΊΠΎΡΠ΅ Π½Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΡ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ΅ΠΌΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Ρ ΠΊΠΎΠ»ΠΈΡΠΈΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ³ ΠΊΠΎΠ΄Π°. ΠΠΎΡΠ΅ ΡΠ΅ Π½Π΅ ΡΡΠ²Π°ΡΠ°ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π½Π΅Π³ΠΎ ΠΈΡ Ρ Π΅ΡΠΎΡΡΠΊΠΈ ΠΏΡΠ΅Π²Π°Π·ΠΈΠ»Π°Π·ΠΈΡΠΈ.
ΠΠ±ΠΎΠ³ ΡΠΎΠ³Π°, ΡΠ·ΠΈΠΌΠ°ΠΌ ΡΠ΅Π±ΠΈ ΡΠ»ΠΎΠ±ΠΎΠ΄Ρ Π΄Π° Π΄Π°ΠΌ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ°Π²Π΅ΡΠ° ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅ Ρ Π¦++ ΡΠ°ΠΊΠΎ Π΄Π° Π½ΠΈΠΊΠΎΠΌΠ΅ Π½Π΅ ΠΎΡΠΊΠΈΠ½Π΅ΡΠ΅ Π½ΠΎΠ³Π΅ ΠΈ Π½Π΅ ΡΠ΄Π°ΡΠΈΡΠ΅ Π³ΡΠ°Π±ΡΠ°ΠΌΠ° Ρ ΡΠ΅Π»ΠΎ.
ΠΡΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΠΊΡ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠ° Π½Π° Π½Π°ΡΠ±ΠΎΡΠΈ Π½Π°ΡΠΈΠ½
ΠΠ°Ρ ΡΠΈΠΌ ΠΊΠΎΡΠΈΡΡΠΈ (ΠΈ ΡΠ°Π²Π΅ΡΡΡΠ΅ Π²Π°ΠΌ) ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΎΠΏΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΠ΅:
-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
ΠΠΌΠΎΠ³ΡΡΠΈΡΠ΅ ΠΈΡ Ρ ΡΠ²ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΠΊΡΡ ΠΈ Π½Π°ΡΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Ρ.
ΠΡΠΆΠΈΡΠ΅ ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π°
ΠΠΎΠΊΡΡΠ°ΡΡΠ΅ Π΄Π° Π½Π΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΡΠ²Π°ΡΠΈ Π·Π°Π²ΠΈΡΠ½Π΅ ΠΎΠ΄ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π°ΠΊΠΎ ΠΏΠΎΡΡΠΎΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈ, Π° Π°ΠΊΠΎ Π°ΠΏΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±Π΅Π· ΡΠΈΡ , ΡΠΌΠΎΡΠ°ΡΡΠ΅ ΠΈΡ Ρ ΠΏΠΎΡΠ΅Π±Π½Π΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π·Π° ΠΌΠ°ΠΊΡΠΎΠ΅ (ΠΈΠ»ΠΈ Π½Π΅ΡΡΠΎ Π΄ΡΡΠ³ΠΎ) ΠΈ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π½Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ Π΄Π° ΡΠ΅ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ° ΠΏΠΎΠ΄ Π½Π΅ΠΏΠΎΠ΄ΡΠΆΠ°Π½ΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠΌΠ°.
ΠΡΠΆΠΈΡΠ΅ ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ°
Π‘Π°Π±ΠΈΡΠ°ΡΠ΅ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΡΠ°Π±ΠΈΡΠ°ΡΠ΅, ΠΌΠ½ΠΎΠΆΠ΅ΡΠ΅ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΠ΅, ΠΏΠΎΠ·ΠΈΠ² ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΏΠΎΠ·ΠΈΠ² ΡΡΠ½ΠΊΡΠΈΡΠ΅, ΠΊΠΎΠΏΠΈΡΠ° ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΊΠΎΠΏΠΈΡΠ°, Π½ΠΎΡΠ΅ΡΠ΅ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ Π½ΠΎΡΠ΅ΡΠ΅, ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΈΡΠ΅ΡΠ°Π±Π»Π΅, ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΌΠΎΡΠ° ΠΈΠΌΠ°ΡΠΈ ΠΏΡΠΎΠΌΠΎΡΠΈΡΡ ++
ΠΈ Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ *
. Π ΡΠ°ΠΊΠΎ Π΄Π°ΡΠ΅ ΠΈ ΡΠ°ΠΊΠΎ Π΄Π°ΡΠ΅.
ΠΠΈΡΠ»ΠΈΠΌ Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅ΡΠ° ΡΠ°ΡΠ½Π°. ΠΠΎΡΡΠΎΡΠ΅ ΡΡΠ²ΡΡΠ΅Π½Π΅ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΡΠ΅ ΠΊΠΎΡΠ΅ Π½ΠΈΡΡ ΠΎΠ±Π°Π²Π΅Π·ΡΡΡΡΠ΅, Π°Π»ΠΈ ΠΊΠΎΡΠ΅ ΡΠ²ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΈ ΡΠΈΡΠ°ΠΎΡΠΈ Π²Π°ΡΠ΅Π³ ΠΊΠΎΠ΄Π° ΠΎΡΠ΅ΠΊΡΡΡ Π΄Π° Π²ΠΈΠ΄Π΅. ΠΠ΅ ΠΏΠΎΠΊΡΡΠ°Π²Π°ΡΡΠ΅ Π΄Π° Π½Π°Π΄ΠΌΡΠ΄ΡΠΈΡΠ΅ Π΄ΡΡΠ³Π΅, ΠΈΠ½Π°ΡΠ΅ ΡΠ΅ΡΠ΅ Π½Π°Π΄ΠΌΡΠ΄ΡΠΈΡΠΈ ΡΠ΅Π±Π΅.
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π°Π½ ΠΊΠΎΠ΄
ΠΡΠ΅ ΡΠ²Π΅Π³Π°, ΠΌΠΈΡΠ»ΠΈΠΌ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΠ΅ΠΎΠΌΠ° ΡΠ΅ ΠΏΠΎΠΆΠ΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ Π²Π°ΡΠΈΡ ΠΊΠ»Π°ΡΠ° ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΌΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈΠΌ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠ° (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΠΎΠΎΡΡ).
Π‘Π»ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ Π‘Π’Π ΠΈ ΠΠΎΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠ΅. Π£Π· ΡΠ΅ΡΠΊΠ΅ ΠΈΠ·ΡΠ·Π΅ΡΠΊΠ΅, ΡΠ°ΠΌΠΎ ΡΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄ΠΎΡΡΠΎΡΠ°Π½ ΡΠ·ΠΎΡ.
ΠΡΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ²Π΅ Π°Π»Π°ΡΠ΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π°
ΠΠ° ΠΈΡΡΡ ΡΡΠ°ΡΠΈΡΠΊΡ Π°Π½Π°Π»ΠΈΠ·Ρ, ΠΏΠΎΡΡΠΎΡΠ΅ Π½Π°ΡΠΌΠ°ΡΠ΅ Π΄Π²Π° ΠΎΡΠ²ΠΎΡΠ΅Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π° Π°Π»Π°ΡΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ²Π΅Π·Π°ΡΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅Π΄Π½ΠΎΠΌ Π½Π° Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ ΡΠ° Π¦ΠΠ°ΠΊΠ΅ Π±ΡΠΈΠ»Π΄ ΡΠΈΡΡΠ΅ΠΌΠΎΠΌ.
ΠΡΡΠ΅ΡΠ²ΠΎΡΠ΄
ΠΠ° ΠΊΡΠ°ΡΡ, ΠΆΠ΅Π»ΠΈΠΌ Π΄Π° Π½Π°Π³Π»Π°ΡΠΈΠΌ Π΄Π° ΡΠ΅ Π½Π΅ Π·Π°Π»Π°ΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ Π½Π΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΠΠ‘ ΠΈΠ»ΠΈ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈ Π΄ΡΡΠ³ΠΈ ΡΡΠ°ΡΠΈΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΠ»ΠΈ ΠΎΡ ΡΠ°Π±ΡΡΡΠ΅ΠΌ Π²Π°Ρ Π΄Π° ΡΠ°Π·ΠΌΠΈΡΠ»ΠΈΡΠ΅ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΡΠ΅ Π΄ΠΎΠ³ΠΎΠ΄ΠΈΠ»ΠΎ Π΄Π° ΡΡΠ°ΡΠΈΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΡΠ°Π»Π½ΠΎ ΠΏΡΠΎΠ½Π°Π»Π°Π·ΠΈ Π·Π½Π°ΡΠ°ΡΠ½Π΅ Π³ΡΠ΅ΡΠΊΠ΅ Ρ Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Ρ.
ΠΠ²ΠΎ ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΈΡΠ°. ΠΠΎΡΠ°ΠΌΠΎ ΡΡΠ°ΠΆΠΈΡΠΈ ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°ΡΠΈ ΡΠ·ΡΠΎΠΊ.
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ