PVS-เจธเจŸเฉ‚เจกเฉ€เจ“ (เจฒเฉ€เจจเจ•เจธ, C++) เจฆเฉ€ เจธเฉเจคเฉฐเจคเจฐ เจธเจฎเฉ€เจ–เจฟเจ†

เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจชเฉเจฐเจ•เจพเจธเจผเจจ เจฆเฉ‡เจ–เจฟเจ† เจœเฉ‹ PVS เจจเฉ‡ เจฒเฉ€เจจเจ•เจธ เจฆเฉ‡ เจ…เจงเฉ€เจจ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจเจพ เจธเจฟเฉฑเจ–เจฟเจ† เจธเฉ€, เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ–เฉเจฆ เจฆเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ 'เจคเฉ‡ เจ…เจœเจผเจฎเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจธเฉ€เฅค เจ…เจคเฉ‡ เจ‡เจน เจ‰เจน เจนเฉˆ เจœเฉ‹ เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจ†เจ‡เจ† เจนเฉˆ.


เจธเจฎเฉฑเจ—เจฐเฉ€

  1. ะŸะปัŽัั‹
  2. ะœะธะฝัƒัั‹
  3. เจจเจคเฉ€เจœเฉ‡
  4. เจฌเจพเจ…เจฆ

ะŸะปัŽัั‹

เจœเจตเจพเจฌเจฆเฉ‡เจน เจธเจฎเจฐเจฅเจจ

เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจ…เจœเจผเจฎเจพเจ‡เจธเจผ เจ•เฉเฉฐเจœเฉ€ เจฆเฉ€ เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ€ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจ‰เจธเฉ‡ เจฆเจฟเจจ เจฎเฉˆเจจเฉ‚เฉฐ เจญเฉ‡เจœ เจฆเจฟเฉฑเจคเจพเฅค

เจ•เจพเจซเจผเฉ€ เจธเจชเฉฑเจธเจผเจŸ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ

เจ…เจธเฉ€เจ‚ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจธเจฎเฉฑเจธเจฟเจ† เจฆเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจจเฉ‚เฉฐ เจฒเจพเจ‚เจš เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ•เจพเจฎเจฏเจพเจฌ เจฐเจนเฉ‡เฅค เจ•เฉฐเจธเฉ‹เจฒ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฒเจˆ เจฎเจฆเจฆ เจตเฉ€ เจ‰เจชเจฒเจฌเจง เจนเฉˆ (เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจ•เฉเจ เจธเจผเจฟเจ•เจพเจ‡เจคเจพเจ‚ เจนเจจ, เจญเจพเจ— เจตเฉ‡เจ–เฉ‹ ะœะธะฝัƒัั‹).

เจฌเจนเฉ-เจฅเจฐเจฟเฉฑเจกเจก เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ

เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจ•เฉ‹เจฒ เจ‡เฉฑเจ• "เจธเจŸเฉˆเจ‚เจกเจฐเจก" เจตเจฟเจ•เจฒเจช เจนเฉˆ -j, เจ•เจˆ เจ•เจพเจฐเจœเจพเจ‚ เจตเจฟเฉฑเจš เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจจเจพเจฒ เจฌเจนเฉเจค เจธเจฎเจพเจ‚ เจฌเจšเจฆเจพ เจนเฉˆเฅค

เจตเจงเฉ€เจ† เจตเจฟเจœเจผเฉ‚เจ…เจฒเจพเจˆเจœเจผเฉ‡เจธเจผเจจ

เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจซเจพเจฐเจฎเฉˆเจŸ, เจŸเฉˆเจ•เจธเจŸ เจคเฉ‹เจ‚ เจฒเฉˆ เจ•เฉ‡ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ เจตเฉˆเฉฑเจฌ เจฎเจœเจผเจฒ เจคเฉฑเจ•เฅค เจตเฉˆเฉฑเจฌ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจธเฉเจตเจฟเจงเจพเจœเจจเจ•, เจธเฉฐเจ–เฉ‡เจช เจนเฉˆ, เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฒเจพเจˆเจจเจพเจ‚ เจฆเฉ‡ เจ…เฉฑเจ—เฉ‡ เจธเฉฐเจ•เฉ‡เจคเจพเจ‚ เจ…เจคเฉ‡ เจกเจพเจ‡เจ—เจจเฉŒเจธเจŸเจฟเจ• เจตเจฐเจฃเจจ เจฆเฉ‡ เจฒเจฟเฉฐเจ•เจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ.

เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจตเจฟเฉฑเจš เจ†เจธเจพเจจ เจเจ•เฉ€เจ•เจฐเจฃ

เจธเจพเจฐเฉ‡ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจตเฉˆเจฌเจธเจพเจˆเจŸ 'เจคเฉ‡ เจนเจจ, เจฎเฉˆเจ‚ เจธเจฟเจฐเจซ เจ‡เจน เจ•เจนเจฟ เจธเจ•เจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจœเฉ‡ เจคเฉเจนเจพเจกเจพ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเฉ€เจฎเฉ‡เจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจธเจญ เจ•เฉเจ เจฌเจนเฉเจค เจธเจงเจพเจฐเจจ เจนเฉˆ.

เจตเจงเฉ€เจ† เจกเจพเจ‡เจ—เจจเฉŒเจธเจŸเจฟเจ• เจตเจฐเจฃเจจ

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเฉ‡ เจนเฉ‹ fullhtml, เจซเจฟเจฐ เจนเจฐเฉ‡เจ• เจธเฉเจจเฉ‡เจนเฉ‡ เจตเจฟเฉฑเจš เจธเจชเจธเจผเจŸเฉ€เจ•เจฐเจจ, เจ•เฉ‹เจก เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจ…เจคเฉ‡ เจตเจพเจงเฉ‚ เจฒเจฟเฉฐเจ•เจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจกเจพเจ‡เจ—เจจเฉŒเจธเจŸเจฟเจ• เจตเจฐเจฃเจจ เจฆเจพ เจฒเจฟเฉฐเจ• เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

ะœะธะฝัƒัั‹

เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจฆเฉเจ†เจฐเจพ 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 เจ—เฉ‡เจŸเจตเฉ‡ เจŸเจพเจˆเจฎ - เจ†เจŠเจŸ.

เจญเจพเจธเจผเจพ

เจธเจพเจฐเฉ‡ เจตเจฐเจฃเจจ เจฐเฉ‚เจธเฉ€ เจตเจฟเฉฑเจš เจนเจจ, เจœเฉ‹ เจ•เจฟ เจฌเจนเฉเจค เจตเจงเฉ€เจ† เจนเฉˆ. เจชเจฐ เจฐเจฟเจชเฉ‹เจฐเจŸ เจคเฉ‹เจ‚ เจฒเจฟเฉฐเจ• เจนเจฎเฉ‡เจธเจผเจพ เจ…เฉฐเจ—เจฐเฉ‡เจœเจผเฉ€ เจธเฉฐเจธเจ•เจฐเจฃ เจตเฉฑเจฒ เจฒเฉˆ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจญเจพเจธเจผเจพ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃเจพ เจšเฉฐเจ—เจพ เจนเฉ‹เจตเฉ‡เจ—เจพ เจคเจพเจ‚ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจคเฉเจฐเฉฐเจค เจฐเฉ‚เจธเฉ€ เจตเจฟเฉฑเจš เจกเจพเจ‡เจ—เจจเฉŒเจธเจŸเจฟเจ•เจธ เจฆเฉ‡เจ– เจธเจ•เฉ‹เฅค เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเจพ เจ•เฉ‹เจˆ เจตเจฟเจ•เจฒเจช เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเจฟเจ†เฅค

เจ•เฉฐเจธเฉ‹เจฒ เจฆเฉเจ†เจฐเจพ เจกเจพเจ‡เจ—เจจเฉŒเจธเจŸเจฟเจ• เจชเฉฑเจงเจฐเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจเจพ เจ…เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ

เจ†เจ‰ เจ‡เจธ เจคเฉฑเจฅ เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ เจ•เจฟ เจฆเฉ‹ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจตเจฐเจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ (เจ‡เจน 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

เจ•เฉเจ "เจชเฉฑเจงเจฐ" เจ‡เฉฑเจฅเฉ‡ เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ เจœเฉ‹ เจชเจนเจฟเจฒเจพเจ‚ เจจเจนเฉ€เจ‚ เจธเจจ, เจ…เจคเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจตเฉ€ เจจเจนเฉ€เจ‚ เจฎเจฟเจฒเจฟเจ†เฅค

เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเฉˆเฉฑเจŸ เจ•เจฐเจฆเจพ เจนเจพเจ‚เฅค

เจ•เฉˆเจš 'เจคเฉ‡ เจฎเฉ‚เจฐเจ– เจ—เจพเจฒเจพเจ‚ เจฆเจพ เจเฉเฉฐเจก

เจฎเฉ‡เจฐเฉ‡ เจฆเฉเจ†เจฐเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เฉ€เจคเฉ‡ เจ—เจ เจคเจฟเฉฐเจจ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฆเฉ‹ เจ‡เฉฑเจ• เจฏเฉ‚เจจเจฟเจŸ เจŸเฉˆเจธเจŸเจฟเฉฐเจ— เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ•เฉˆเจš เฉจ. เจ…เจคเฉ‡ เจธเฉเจจเฉ‡เจนเจฟเจ†เจ‚ เจฆเจพ เจตเฉฑเจกเจพ เจนเจฟเฉฑเจธเจพ (!!! เจ‡เฉฑเจ• เจตเจฟเฉฑเจš 90 เจตเจฟเฉฑเจšเฉ‹เจ‚ 138 เจ…เจคเฉ‡ เจฆเฉ‚เจœเฉ‡ เจตเจฟเฉฑเจš 297 เจตเจฟเฉฑเจšเฉ‹เจ‚ 344!!!) เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจฐเฉ‚เจช เจนเจจ:

PVS-เจธเจŸเฉ‚เจกเฉ€เจ“ (เจฒเฉ€เจจเจ•เจธ, C++) เจฆเฉ€ เจธเฉเจคเฉฐเจคเจฐ เจธเจฎเฉ€เจ–เจฟเจ†

เจฎเจฒเจŸเฉ€เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจฐเฉฑเจ–เจฆเจพ

เจ•เจฅเจฟเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจจเจพ เจฌเจฆเจฒเจฃ เจตเจพเจฒเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจœเจพเจ‚ เจฌเฉ‡เจ…เฉฐเจค เจฒเฉ‚เจชเจพเจ‚ เจฌเจพเจฐเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจเฉ‚เจ เฉ‡ เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจนเจจ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจ‡เจนเจจเจพเจ‚ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจตเฉฑเจ–-เจตเฉฑเจ– เจฅเฉเจฐเฉˆเจกเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจ…เจœเจฟเจนเจพ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ, เจคเจพเจ‚ เจฏเฉ‚เจจเจฟเจŸ เจŸเฉˆเจธเจŸ เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจ—เฉ‡เฅค

PVS-เจธเจŸเฉ‚เจกเฉ€เจ“ (เจฒเฉ€เจจเจ•เจธ, C++) เจฆเฉ€ เจธเฉเจคเฉฐเจคเจฐ เจธเจฎเฉ€เจ–เจฟเจ†

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ•เฉ€ เจ‡เฉฑเจ• เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจตเฉ€ เจ‡เจธ เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ– เจธเจ•เจฆเจพ เจนเฉˆ? เจชเจคเจพ เจจเจนเฉ€เจ‚เฅค

เจจเจคเฉ€เจœเฉ‡

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

เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพเจ“ เจ…เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ•เฉ‹เจก เจฌเจพเจฐเฉ‡ เจฌเจนเฉเจค เจ•เฉเจ เจธเจฟเฉฑเจ–เฉ‹เฅค

เจธเจŸเฉˆเจ‚เจกเจฐเจก เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจฐเจนเฉ‹

เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ-เจจเจฟเจฐเจญเจฐ เจšเฉ€เจœเจผเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจพ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‹ เจœเฉ‡เจ•เจฐ เจฎเจฟเจ†เจฐเฉ€ เจเจจเจพเจฒเจพเจ— เจนเจจ, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจฌเจฟเจฒเจ•เฉเจฒ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉˆเจ•เจฐเฉ‹เจœเจผ (เจœเจพเจ‚ เจ•เฉเจ เจนเฉ‹เจฐ) เจฒเจˆ เจตเจฟเจธเจผเฉ‡เจธเจผ เจฌเจฒเจพเจ•เจพเจ‚ เจตเจฟเฉฑเจš เจฒเจชเฉ‡เจŸเฉ‹ เจ…เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ…เจธเจฎเจฐเจฅเจฟเจค เจนเจพเจฒเจคเจพเจ‚ เจตเจฟเฉฑเจš เจ•เฉฐเจชเจพเจ‡เจฒ เจจเจพ เจนเฉ‹เจฃ เจฆเจฟเจ“เฅค

เจธเจŸเฉˆเจ‚เจกเจฐเจก เจ“เจชเจฐเฉ‡เจธเจผเจจ เจธเจฟเจฎเฉˆเจ‚เจŸเจฟเจ•เจธ เจจเจพเจฒ เจœเฉเฉœเฉ‡ เจฐเจนเฉ‹

เจœเฉ‹เฉœ เจฒเจพเจœเจผเจฎเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจœเฉ‹เฉœ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจ—เฉเจฃเจพ เจฆเจพ เจ—เฉเจฃเจพ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจซเฉฐเจ•เจธเจผเจจ เจ•เจพเจฒ เจฒเจพเจœเจผเจฎเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจ•เจพเจฒ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ, เจ•เจพเจชเฉ€ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ เจจเจ•เจฒ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ, เจ•เฉˆเจฐเฉ€ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ, เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉเจนเจฐเจพเจ‰เจฃ เจฏเฉ‹เจ— เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจฆเฉเจนเจฐเจพเจ‰เจฃ เจตเจพเจฒเฉ‡ เจตเจฟเฉฑเจš เจคเจฐเฉฑเจ•เฉ€ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ ++ เจ…เจคเฉ‡ เจธเฉฐเจฆเจฐเจญ *. เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ…เฉฑเจ—เฉ‡.

เจฎเฉˆเจจเฉ‚เฉฐ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจตเจฟเจšเจพเจฐ เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ. เจ‡เฉฑเจฅเฉ‡ เจธเจฅเจพเจชเจฟเจค เจธเฉฐเจฎเฉ‡เจฒเจจ เจนเจจ เจœเฉ‹ เจฌเจพเจˆเจกเจฟเฉฐเจ— เจจเจนเฉ€เจ‚ เจนเจจ, เจชเจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจก เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ…เจคเฉ‡ เจชเจพเจ เจ• เจฆเฉ‡เจ–เจฃ เจฆเฉ€ เจ‰เจฎเฉ€เจฆ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจฆเฉ‚เจœเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจชเจ›เจพเฉœเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจจเจพ เจ•เจฐเฉ‹, เจจเจนเฉ€เจ‚ เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจชเจ›เจพเฉœ เจฆเจฟเจ“เจ—เฉ‡เฅค

เจ…เจจเฉเจ•เฉ‚เจฒ เจ•เฉ‹เจก เจฒเจฟเจ–เฉ‹

เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจฎเฉ‡เจฐเจพ เจฎเจคเจฒเจฌ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจนเฉˆเฅค เจ‡เจน เจฌเจนเฉเจค เจซเจพเจ‡เจฆเฉ‡เจฎเฉฐเจฆ เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจ•เจฒเจพเจธเจพเจ‚ เจ…เจคเฉ‡ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€เจ†เจ‚ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฌเฉ‚เจธเจŸ) เจจเจพเจฒ เจตเจฐเจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

STL เจ…เจคเฉ‡ เจฌเฉ‚เจธเจŸ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธเจพเจ‚ 'เจคเฉ‡ เจ‡เฉฑเจ• เจจเจœเจผเจฐ เจฎเจพเจฐเจจ เจฒเจˆ เจธเฉเจคเฉฐเจคเจฐ เจฎเจนเจฟเจธเฉ‚เจธ เจ•เจฐเฉ‹เฅค เจฆเฉเจฐเจฒเฉฑเจญ เจ…เจชเจตเจพเจฆเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ, เจคเฉเจธเฉ€เจ‚ เจ‰เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• เจฏเฉ‹เจ— เจฐเฉ‹เจฒ เจฎเจพเจกเจฒ เจฆเฉ‡เจ–เฉ‹เจ—เฉ‡เฅค

เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจŸเฉ‚เจฒเจธ เจฆเจพ เจตเฉฑเจง เจคเฉ‹เจ‚ เจตเฉฑเจง เจซเจพเจ‡เจฆเจพ เจ‰เจ เจพเจ“

เจ‰เจธเฉ‡ เจนเฉ€ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจฒเจˆ, เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจฆเฉ‹ เจ–เฉเฉฑเจฒเฉเจนเฉ‡ เจฎเฉเจซเจผเจค เจŸเฉ‚เจฒ เจนเจจ เจœเฉ‹ เจ•เจฟ CMake เจฌเจฟเจฒเจก เจธเจฟเจธเจŸเจฎ เจจเจพเจฒ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเจพเจฒ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจตเจพเจฐ เจ•เจจเฉˆเจ•เจŸ เจ•เฉ€เจคเฉ‡ เจœเจพ เจธเจ•เจฆเฉ‡ เจนเจจเฅค

เจคเฉเจธเฉ€เจ‚ เจฎเฉ‡เจฐเฉ‡ เจนเจพเจฒเฉ€เจ† เจชเฉเจฐเจ•เจพเจธเจผเจจ เจตเจฟเฉฑเจš เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹.

เจฌเจพเจ…เจฆ

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ‡เจธ เจ—เฉฑเจฒ 'เจคเฉ‡ เจœเจผเฉ‹เจฐ เจฆเฉ‡เจฃเจพ เจšเจพเจนเจพเจ‚เจ—เจพ เจ•เจฟ เจฎเฉˆเจ‚ PVS เจœเจพเจ‚ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจพ เจ•เจฐเจจ เจฆเฉ€ เจตเจ•เจพเจฒเจค เจจเจนเฉ€เจ‚ เจ•เจฐ เจฐเจฟเจนเจพ เจนเจพเจ‚เฅค เจชเจฐ เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจธเฉ‹เจšเจฃ เจฒเจˆ เจ‰เจคเจธเจผเจพเจนเจฟเจค เจ•เจฐเจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจนเฉ‹เจ‡เจ† เจ•เจฟ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจฒเจ—เจพเจคเจพเจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ—เจฒเจคเฉ€เจ†เจ‚ เจฒเฉฑเจญเจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจจเจคเฉ€เจœเจพ เจนเฉˆ. เจธเจพเจจเฉ‚เฉฐ เจ•เจพเจฐเจจ เจฒเฉฑเจญเจฃ เจ…เจคเฉ‡ เจ–เจผเจคเจฎ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹