PVS-Studio-แƒก แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ (Linux, C++)

แƒ›แƒ” แƒ•แƒœแƒแƒฎแƒ” แƒžแƒฃแƒ‘แƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒช PVS-แƒ›แƒ แƒšแƒ˜แƒœแƒฃแƒฅแƒกแƒ˜แƒก แƒฅแƒ•แƒ”แƒจ แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ แƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒ’แƒแƒ›แƒแƒ›แƒ”แƒชแƒแƒ“แƒ แƒ˜แƒก แƒฉแƒ”แƒ›แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒ–แƒ”. แƒ“แƒ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒช แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒ“แƒ แƒ›แƒ˜แƒกแƒ’แƒแƒœ.


แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒก

  1. แƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—แƒ˜
  2. Cons
  3. แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜
  4. Afterword

แƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—แƒ˜

แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ

แƒกแƒแƒชแƒ“แƒ”แƒšแƒ˜ แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ•แƒ˜แƒ—แƒฎแƒแƒ•แƒ” แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒ“แƒฆแƒ”แƒก แƒ’แƒแƒ›แƒแƒ›แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒก.

แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒ™แƒแƒคแƒ˜แƒ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ

แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒ•แƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ— แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒฃแƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒ“. แƒแƒกแƒ”แƒ•แƒ” แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ™แƒแƒœแƒกแƒแƒšแƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ (แƒ—แƒฃแƒ›แƒชแƒ แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒกแƒแƒฉแƒ˜แƒ•แƒ แƒ”แƒ‘แƒ˜, แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒกแƒ”แƒฅแƒชแƒ˜แƒ Cons).

แƒ›แƒ แƒแƒ•แƒแƒšแƒซแƒแƒคแƒ˜แƒแƒœแƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ

แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒก แƒแƒฅแƒ•แƒก "แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒšแƒ˜" แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ -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.

แƒซแƒแƒšแƒ˜แƒแƒœ แƒœแƒ”แƒšแƒ˜ แƒกแƒแƒ˜แƒขแƒ˜

แƒ“แƒ˜แƒแƒฎ, แƒ•แƒ”แƒ‘ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒ— แƒแƒ แƒ˜แƒก แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒ“แƒ˜แƒแƒ’แƒœแƒแƒกแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒ˜แƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒ—. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒชแƒ แƒšแƒ˜แƒœแƒ™แƒ–แƒ” แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘, แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ˜แƒ“แƒฎแƒแƒœแƒก แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒก แƒšแƒแƒ“แƒ˜แƒœแƒ˜ แƒ“แƒ แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒแƒกแƒ”แƒช แƒฎแƒ“แƒ”แƒ‘แƒ 504 Gateway Time-out.

แƒ”แƒœแƒ

แƒงแƒ•แƒ”แƒšแƒ แƒแƒฆแƒฌแƒ”แƒ แƒ แƒ แƒฃแƒกแƒฃแƒš แƒ”แƒœแƒแƒ–แƒ”แƒ, แƒ แƒแƒช แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒ“แƒแƒœ แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒ˜แƒœแƒ’แƒšแƒ˜แƒกแƒฃแƒ  แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒ›แƒ“แƒ” แƒ›แƒ˜แƒ“แƒ˜แƒก. แƒ™แƒแƒ แƒ’แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ แƒ”แƒœแƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ แƒ แƒแƒ› แƒจแƒ”แƒ’แƒ”แƒซแƒšแƒแƒ— แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒœแƒแƒฎแƒแƒ— แƒ“แƒ˜แƒแƒ’แƒœแƒแƒกแƒขแƒ˜แƒ™แƒ แƒ แƒฃแƒกแƒฃแƒšแƒแƒ“. แƒ›แƒ” แƒ•แƒ”แƒ  แƒ•แƒ˜แƒžแƒแƒ•แƒ” แƒแƒกแƒ”แƒ—แƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜.

แƒแƒ แƒแƒกแƒแƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒแƒ แƒกแƒแƒ“แƒ˜แƒแƒ’แƒœแƒแƒกแƒขแƒ˜แƒ™แƒ แƒ“แƒแƒœแƒ”แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ™แƒแƒœแƒกแƒแƒšแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—

แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒ˜แƒ›แƒ˜แƒ—, แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ (แƒ”แƒก 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-แƒ–แƒ”

แƒฉแƒ”แƒ›แƒก แƒ›แƒ˜แƒ”แƒ  แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒ›แƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒ“แƒแƒœ แƒแƒ แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒแƒก Catch2. แƒ›แƒ”แƒกแƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒšแƒแƒ›แƒ˜แƒก แƒฌแƒ˜แƒšแƒก (!!! 90-แƒ“แƒแƒœ 138 แƒ”แƒ แƒ—แƒจแƒ˜ แƒ“แƒ 297 344-แƒ“แƒแƒœ แƒ›แƒ”แƒแƒ แƒ”แƒจแƒ˜!!!) แƒแƒฅแƒ•แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒคแƒแƒ แƒ›แƒ:

PVS-Studio-แƒก แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ (Linux, C++)

แƒแƒ  แƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒซแƒแƒคแƒ˜แƒแƒœแƒแƒ‘แƒแƒก

แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒชแƒ แƒฃ แƒžแƒแƒ–แƒ˜แƒขแƒ˜แƒฃแƒ แƒ˜ แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒ แƒฃแƒชแƒ•แƒšแƒ”แƒšแƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒแƒœ แƒ’แƒแƒฃแƒ—แƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒแƒ แƒงแƒฃแƒŸแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒฎแƒแƒšแƒ แƒแƒ› แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒซแƒแƒคแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ”แƒก แƒแƒกแƒ” แƒ แƒแƒ› แƒแƒ  แƒ˜แƒงแƒแƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก.

PVS-Studio-แƒก แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ (Linux, C++)

แƒ—แƒฃแƒ›แƒชแƒ, แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ—แƒฃ แƒแƒ แƒ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒแƒœแƒแƒšแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒแƒก? แƒแƒ  แƒ•แƒ˜แƒชแƒ˜.

แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

PVS-แƒ›แƒ แƒ•แƒ”แƒ  แƒ˜แƒžแƒแƒ•แƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜ แƒฉแƒ”แƒ›แƒก แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒจแƒ˜ แƒแƒ“แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ ะธ แƒžแƒ แƒแƒฅแƒกแƒ˜แƒ›แƒ, แƒแƒกแƒ”แƒ•แƒ” แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช, แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒ˜ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ•แƒ”แƒ  แƒฌแƒแƒ แƒ›แƒแƒ•แƒแƒ“แƒ’แƒ”แƒœ. แƒ›แƒแƒ แƒ—แƒแƒšแƒ˜แƒ, แƒฃแƒœแƒ“แƒ แƒ’แƒ•แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒก, แƒ แƒแƒ› แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒฎแƒแƒ แƒ•แƒ”แƒ–แƒ”แƒ‘แƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ“แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ“แƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ“แƒ แƒแƒ“แƒ แƒ” แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Cppcheck ะธ 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

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ