เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ - เชชเชฐเชฟเชšเชฏเชฅเซ€ เชเช•เซ€เช•เชฐเชฃ เชธเซเชงเซ€

เช…เชจเช‚เชค เช•เซ‹เชก เชธเชฎเซ€เช•เซเชทเชพ เช…เชฅเชตเชพ เชกเชฟเชฌเช—เซ€เช‚เช—เชฅเซ€ เช•เช‚เชŸเชพเชณเซ€เชจเซ‡, เช•เซเชฏเชพเชฐเซ‡เช• เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชœเซ€เชตเชจเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชฟเชšเชพเชฐเซ‹ เช›เซ‹. เช…เชจเซ‡ เชฅเซ‹เชกเซ€ เชถเซ‹เชง เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฅเชตเชพ เช†เช•เชธเซเชฎเชฟเช• เชฐเซ€เชคเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เช เซ‹เช•เชฐ เช–เชพเชˆเชจเซ‡, เชคเชฎเซ‡ เชœเชพเชฆเซเชˆ เชถเชฌเซเชฆเชธเชฎเซ‚เชน เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹: "เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ." เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เช•เซ‡ เชคเซ‡ เชถเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชคเชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ - เชชเชฐเชฟเชšเชฏเชฅเซ€ เชเช•เซ€เช•เชฐเชฃ เชธเซเชงเซ€
เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชœเซ‹ เชคเชฎเซ‡ เช•เซ‹เชˆเชชเชฃ เช†เชงเซเชจเชฟเช• เชญเชพเชทเชพเชฎเชพเช‚ เชฒเช–เซ‹ เช›เซ‹, เชคเซ‹ เชชเช›เซ€, เชคเซ‡เชจเซ‡ เชธเชฎเชœเซเชฏเชพ เชตเชฟเชจเชพ, เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเช• เชฆเซเชตเชพเชฐเชพ เชšเชฒเชพเชตเซเชฏเซเช‚ เช›เซ‡. เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เช•เซ‹เชˆเชชเชฃ เช†เชงเซเชจเชฟเช• เช•เชฎเซเชชเชพเชˆเชฒเชฐ เช•เซ‹เชกเชฎเชพเช‚ เชธเช‚เชญเชตเชฟเชค เชธเชฎเชธเซเชฏเชพเช“ เชตเชฟเชถเซ‡ เชšเซ‡เชคเชตเชฃเซ€เช“เชจเซ‹ เชจเชพเชจเซ‹ เชธเชฎเซ‚เชน เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹เชฎเชพเช‚ C++ เช•เซ‹เชกเชจเซเช‚ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชคเชฎเซ‡ เชจเซ€เชšเซ‡เชจเชพ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹:

เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ - เชชเชฐเชฟเชšเชฏเชฅเซ€ เชเช•เซ€เช•เชฐเชฃ เชธเซเชงเซ€
เช† เช†เช‰เชŸเชชเซเชŸเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชœเซ‹เชˆเช เช›เซ€เช เช•เซ‡ เชšเชฒ var เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เช•เชฏเชพเชฐเซ‡เชฏ เช‰เชชเชฏเซ‹เช— เชฅเชฏเซ‹ เชจ เชนเชคเซ‹. เชคเซ‡เชฅเซ€ เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชคเชฎเซ‡ เชฒเช—เชญเช— เชนเช‚เชฎเซ‡เชถเชพ เชเช• เชธเชฐเชณ เชธเซเชŸเซ‡เชŸเชฟเช• เช•เซ‹เชก เชตเชฟเชถเซเชฒเซ‡เชทเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช•เชตเชฐเชฟเชŸเซ€, เช•เซเชฒเซ‹เช•เชตเชฐเซเช• เช…เชฅเชตเชพ เชชเซ€เชตเซ€เชเชธ-เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชœเซ‡เชตเชพ เชตเซเชฏเชพเชตเชธเชพเชฏเชฟเช• เชตเชฟเชถเซเชฒเซ‡เชทเช•เซ‹เชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เช•เชฎเซเชชเชพเชˆเชฒเชฐ เชฆเซเชตเชพเชฐเชพ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ เชšเซ‡เชคเชตเชฃเซ€เช“ เชฎเชพเชคเซเชฐ เชธเชฎเชธเซเชฏเชพเช“เชจเซ€ เชจเชพเชจเซ€ เชถเซเชฐเซ‡เชฃเซ€เชจเซ‡ เชœ เชธเซ‚เชšเชตเซ€ เชถเช•เซ‡ เช›เซ‡.

เชœเซ‹ เชคเชฎเซ‡ เชจเชฟเชถเซเชšเชฟเชคเชชเชฃเซ‡ เชœเชพเชฃเชคเชพ เชจ เชนเซ‹เชต เช•เซ‡ เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชถเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช…เชฎเชฒ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹, เช† เชฒเซ‡เช– เชตเชพเช‚เชšเซ‹เช† เชชเชฆเซเชงเชคเชฟ เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเชตเชพ เชฎเชพเชŸเซ‡.

เชคเชฎเชพเชฐเซ‡ เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ€ เชœเชฐเซ‚เชฐ เช•เซ‡เชฎ เช›เซ‡?

เชŸเซ‚เช‚เช•เชฎเชพเช‚: เชชเซเชฐเชตเซ‡เช—เช• เช…เชจเซ‡ เชธเชฐเชณเซ€เช•เชฐเชฃ.

เชธเซเชŸเซ‡เชŸเชฟเช• เชชเซƒเชฅเซเชฅเช•เชฐเชฃ เชคเชฎเชจเซ‡ เช•เซ‹เชกเชฎเชพเช‚ เช˜เชฃเซ€ เชฌเชงเซ€ เชตเชฟเชตเชฟเชง เชธเชฎเชธเซเชฏเชพเช“ เชถเซ‹เชงเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡: เชญเชพเชทเชพเชจเซ€ เชฐเชšเชจเชพเชจเชพ เช–เซ‹เชŸเชพ เช‰เชชเชฏเซ‹เช—เชฅเซ€ เชฒเชˆเชจเซ‡ เชŸเชพเชˆเชชเซ‹ เชธเซเชงเซ€. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡

auto x = obj.x;
auto y = obj.y;
auto z = obj.z;

เชคเชฎเซ‡ เชจเซ€เชšเซ‡เชจเซ‹ เช•เซ‹เชก เชฒเช–เซเชฏเซ‹ เช›เซ‡:

auto x = obj.x;
auto y = obj.y;
auto z = obj.x;

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เช›เซ‡เชฒเซเชฒเซ€ เชฒเชพเช‡เชจเชฎเชพเช‚ เชเช• เชŸเชพเชˆเชชเซ‹ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, PVS-Studio เชจเซ€เชšเซ‡เชจเซ€ เชšเซ‡เชคเชตเชฃเซ€ เช†เชชเซ‡ เช›เซ‡:

V537 'y' เช†เช‡เชŸเชฎเชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ€ เชถเซเชฆเซเชงเชคเชพเชจเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช•เชฐเชตเชพเชจเซเช‚ เชตเชฟเชšเชพเชฐเซ‹.

เชœเซ‹ เชคเชฎเซ‡ เช† เชญเซ‚เชฒเชฎเชพเช‚ เชคเชฎเชพเชฐเชพ เชนเชพเชฅ เช‰เช เชพเชตเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เชเช•เซเชธเชชเซเชฒเซ‹เชฐเชฐเชฎเชพเช‚ เชคเซˆเชฏเชพเชฐ เช‰เชฆเชพเชนเชฐเชฃ เช…เชœเชฎเชพเชตเซ‹: *เชฐเชกเชตเซเช‚*.

เช…เชจเซ‡ เชœเซ‡เชฎ เชคเชฎเซ‡ เชธเชฎเชœเซ‹ เช›เซ‹, เช•เซ‹เชกเชจเชพ เช†เชตเชพ เชตเชฟเชญเชพเช—เซ‹ เชชเชฐ เชคเชฐเชค เชœ เชงเซเชฏเชพเชจ เช†เชชเชตเซเช‚ เชนเช‚เชฎเซ‡เชถเชพ เชถเช•เซเชฏ เชจเชฅเซ€, เช…เชจเซ‡ เช†เชจเซ‡ เช•เชพเชฐเชฃเซ‡, เชคเชฎเซ‡ เชเช• เชธเชพเชฐเชพ เช•เชฒเชพเช• เชฎเชพเชŸเซ‡ เชกเซ€เชฌเช—เชฟเช‚เช— เช•เชฐเชตเชพ เชฌเซ‡เชธเซ€ เชถเช•เซ‹ เช›เซ‹, เช†เชถเซเชšเชฐเซเชฏ เชชเชพเชฎเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชฌเชงเซเช‚ เช†เชŸเชฒเซเช‚ เชตเชฟเชšเชฟเชคเซเชฐ เชฐเซ€เชคเซ‡ เช•เซ‡เชฎ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เชœเซ‹ เช•เซ‡, เช† เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชเช• เชญเซ‚เชฒ เช›เซ‡. เชœเซ‹ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช เชธเชฌเช“เชชเซเชŸเชฟเชฎเชฒ เช•เซ‹เชก เชฒเช–เซเชฏเซ‹ เชนเซ‹เชฏ เชคเซ‹ เชถเซเช‚ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชญเชพเชทเชพเชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เชธเซ‚เช•เซเชทเซเชฎเชคเชพเชจเซ‡ เชญเซ‚เชฒเซ€ เช—เชฏเซ‹ เช›เซ‡? เช…เชฅเชตเชพ เชคเซ‹ เช•เซ‹เชกเชฎเชพเช‚ เชคเซ‡เชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ€ เช›เซ‡ เช…เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชตเชฐเซเชคเชจ? เช•เชฎเชจเชธเซ€เชฌเซ‡, เช†เชตเชพ เช•เชฟเชธเซเชธเชพเช“ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เช›เซ‡ เช…เชจเซ‡ เชŸเชพเช‡เชชเซ‹, เชฒเชพเช•เซเชทเชฃเชฟเช• เชญเซ‚เชฒเซ‹ เช…เชฅเชตเชพ เช…เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชตเชฐเซเชคเชฃเซ‚เช• เชธเชฎเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เช•เซ‹เชกเชจเซ‡ เชกเซ€เชฌเช— เช•เชฐเชตเชพเชฎเชพเช‚ เชธเชฟเช‚เชนเชจเซ‹ เชนเชฟเชธเซเชธเซ‹ เช–เชฐเซเชšเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชคเซ‡ เช† เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“ เชฎเชพเชŸเซ‡ เช›เซ‡ เช•เซ‡ เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชฆเซ‡เช–เชพเชฏเชพ. เช† เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เชฎเชพเชŸเซ‡ เชเช• เชธเชนเชพเชฏเช• เช›เซ‡ เชœเซ‡ เช•เซ‹เชกเชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชธเชฎเชธเซเชฏเชพเช“ เชฆเชฐเซเชถเชพเชตเชถเซ‡ เช…เชจเซ‡ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚ เชธเชฎเชœเชพเชตเชถเซ‡ เช•เซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เช† เชฐเซ€เชคเซ‡ เชฒเช–เชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€, เชคเซ‡ เชถเซเช‚ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช เซ€เช• เช•เชฐเชตเซเช‚. เชคเซ‡ เช•เซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชˆ เชถเช•เซ‡ เชคเซ‡เชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เช…เชนเซ€เช‚ เช›เซ‡: *เชฐเชกเชตเซเช‚*.

เชคเชฎเซ‡ เชตเชงเซ เชฐเชธเชชเซเชฐเชฆ เชญเซ‚เชฒเซ‹ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเช• เชฒเซ‡เช–เซ‹เชฎเชพเช‚ เชถเซ‹เชงเซ€ เชถเช•เซ‡ เช›เซ‡:

เชนเชตเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เช† เชธเชพเชฎเช—เซเชฐเซ€ เชตเชพเช‚เชšเซ€ เชฒเซ€เชงเซ€ เช›เซ‡ เช…เชจเซ‡ เชธเซเชŸเซ‡เชŸเชฟเช• เชเชจเชพเชฒเชฟเชธเชฟเชธเชจเชพ เชซเชพเชฏเชฆเชพเช“ เชตเชฟเชถเซ‡ เชคเชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เช›เซ‡, เชคเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช…เชœเชฎเชพเชตเชตเชพ เชฎเชพเช—เซ€ เชถเช•เซ‹ เช›เซ‹. เชชเชฃ เชถเชฐเซ‚เช†เชค เช•เซเชฏเชพเช‚เชฅเซ€ เช•เชฐเชตเซ€? เชคเชฎเชพเชฐเชพ เชตเชฐเซเชคเชฎเชพเชจ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชจเชตเซเช‚ เชธเชพเชงเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเซเช‚? เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชŸเซ€เชฎเชจเซ‹ เชชเชฐเชฟเชšเชฏ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช†เชชเชตเซ‹? เชคเชฎเชจเซ‡ เชจเซ€เชšเซ‡ เช† เชชเซเชฐเชถเซเชจเซ‹เชจเชพ เชœเชตเชพเชฌเซ‹ เชฎเชณเชถเซ‡.

เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡. เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เซ‹เชก เชธเชฎเซ€เช•เซเชทเชพเช“ เชœเซ‡เชตเซ€ เช‰เชชเชฏเซ‹เช—เซ€ เชตเชธเซเชคเซเชจเซ‡ เชฌเชฆเชฒเซ€ เช…เชฅเชตเชพ เชฐเชฆ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เชคเซ‡ เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชชเซ‚เชฐเช• เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชŸเชพเชˆเชชเซ‹, เช…เชšเซ‹เช•เซเช•เชธเชคเชพ เช…เชจเซ‡ เช–เชคเชฐเชจเชพเช• เชกเชฟเชเชพเชˆเชจเชจเซ‡ เช…เช—เชพเช‰เชฅเซ€ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช…เชจเซ‡ เชธเซเชงเชพเชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ‡ เช›เซ‡. เช–เซ‹เชŸเชพ เช•เซŒเช‚เชธ เช…เชฅเชตเชพ เช•เช‚เชŸเชพเชณเชพเชœเชจเช• เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชพเชฐเซเชฏเซ‹ เชตเชพเช‚เชšเซ‹.

0. เชธเชพเชงเชจเชจเซ‡ เชœเชพเชฃเชตเซเช‚

เชคเซ‡ เชฌเชงเชพ เช…เชœเชฎเชพเชฏเชถ เชธเช‚เชธเซเช•เชฐเชฃเชฅเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡. เช–เชฐเซ‡เช–เชฐ, เชœเซ‹ เชคเชฎเซ‡ เชชเชนเซ‡เชฒเชพ เช•เซเชฏเชพเชฐเซ‡เชฏ เชŸเซ‚เชฒ เชฒเชพเช‡เชต เชจ เชœเซ‹เชฏเซเช‚ เชนเซ‹เชฏ เชคเซ‹ เชตเชฟเช•เชพเชธ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เช•เช‚เชˆเช• เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡. เชคเซ‡เชฅเซ€, เชคเชฎเชพเชฐเซ‡ เชชเซเชฐเชฅเชฎ เชตเชธเซเชคเซ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเซ€ เชœเซ‹เชˆเช เชŸเซเชฐเชพเชฏเชฒ เชตเชฐเซเชเชจ.

เช† เชคเชฌเช•เซเช•เซ‡ เชคเชฎเซ‡ เชถเซเช‚ เชถเซ€เช–เซ€ เชถเช•เชถเซ‹:

  • เชตเชฟเชถเซเชฒเซ‡เชทเช• เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเซ€ เชฐเซ€เชคเซ‹ เชถเซเช‚ เช›เซ‡;
  • เชถเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเช• เชคเชฎเชพเชฐเชพ เชตเชฟเช•เชพเชธ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชธเชพเชฅเซ‡ เชธเซเชธเช‚เช—เชค เช›เซ‡?
  • เชคเชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชฎเชพเช‚ เชนเชพเชฒเชฎเชพเช‚ เช•เชˆ เชธเชฎเชธเซเชฏเชพเช“ เช›เซ‡?

เชคเชฎเชจเซ‡ เชœเซ‹เชˆเชคเซ€ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซ เชคเชฎเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฒเซ‹ เชคเซ‡ เชชเช›เซ€, เชคเชฎเชพเชฐเซ‡ เชœเซ‡ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช เชคเซ‡ เช เช›เซ‡ เช•เซ‡ เชธเชฎเช—เซเชฐ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชšเชฒเชพเชตเซ‹ (เชตเชฟเชจเซเชกเซ‹เช, Linux, MacOS). เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹เชฎเชพเช‚ เชชเซ€เชตเซ€เชเชธ-เชธเซเชŸเซเชกเชฟเชฏเซ‹เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชคเชฎเซ‡ เชธเชฎเชพเชจ เชšเชฟเชคเซเชฐ เชœเซ‹เชถเซ‹ (เช•เซเชฒเชฟเช• เช•เชฐเชตเชพ เชฏเซ‹เช—เซเชฏ):

เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ - เชชเชฐเชฟเชšเชฏเชฅเซ€ เชเช•เซ€เช•เชฐเชฃ เชธเซเชงเซ€
เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เชธเซเชŸเซ‡เชŸเชฟเช• เชตเชฟเชถเซเชฒเซ‡เชทเช•เซ‹ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชฎเซ‹เชŸเชพ เช•เซ‹เชก เชฌเซ‡เชเชตเชพเชณเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชฎเชพเชŸเซ‡ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชšเซ‡เชคเชตเชฃเซ€เช“ เช†เชชเซ‡ เช›เซ‡. เชคเซ‡ เชฌเชงเชพเชจเซ‡ เช เซ€เช• เช•เชฐเชตเชพเชจเซ€ เช•เซ‹เชˆ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชคเชฎเชพเชฐเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซ‡, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เช† เชธเชฎเชธเซเชฏเชพเช“ เช—เช‚เชญเซ€เชฐ เชจเชฅเซ€. เชœเซ‹ เช•เซ‡, เชคเชฎเซ‡ เชคเชฎเซ‡ เชธเซŒเชฅเซ€ เชฐเชธเชชเซเชฐเชฆ เชšเซ‡เชคเชตเชฃเซ€เช“ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹ เชคเซ‡เชฎเชจเซ‡ เช เซ€เช• เช•เชฐเซ‹. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช†เช‰เชŸเชชเซเชŸ เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชซเช•เซเชค เชธเซŒเชฅเซ€ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชธเช‚เชฆเซ‡เชถเชพเช“ เช›เซ‹เชกเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชฎเชพเชŸเซ‡ PVS-Studio เชชเซเชฒเช—เช‡เชจเชฎเชพเช‚, เช† เชญเซ‚เชฒเชจเชพ เชธเซเชคเชฐ เช…เชจเซ‡ เชถเซเชฐเซ‡เชฃเซ€เช“ เชฆเซเชตเชพเชฐเชพ เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเซ€เชจเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชธเซŒเชฅเซ€ เชธเชšเซ‹เชŸ เช†เช‰เชŸเชชเซเชŸ เชฎเชพเชŸเซ‡, เชซเช•เซเชค เช›เซ‹เชกเซ‹ เชนเชพเช‡ ะธ เชœเชจเชฐเชฒ (เช•เซเชฒเชฟเช• เช•เชฐเชตเชพ เชฏเซ‹เช—เซเชฏ):

เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ - เชชเชฐเชฟเชšเชฏเชฅเซ€ เชเช•เซ€เช•เชฐเชฃ เชธเซเชงเซ€
เช–เชฐเซ‡เช–เชฐ, เชนเชœเชพเชฐเซ‹ เช•เชฐเชคเชพเช‚ 178 เชšเซ‡เชคเชตเชฃเซ€เช“ เชœเซ‹เชตเชพเชฎเชพเช‚ เช˜เชฃเซ€ เชธเชฐเชณ เช›เซ‡...

เชŸเซ…เชฌเซเชธเชฎเชพเช‚ เชฎเชงเซเชฏเชฎ ะธ เชจเซ€เชšเชพ เช˜เชฃเซ€ เชตเช–เชค เชธเชพเชฐเซ€ เชšเซ‡เชคเชตเชฃเซ€เช“ เชนเซ‹เชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เช•เซ‡เชŸเซ‡เช—เชฐเซ€เชฎเชพเช‚ เชเชตเชพ เชกเชพเชฏเช—เซเชจเซ‹เชธเซเชŸเชฟเช•เซเชธเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เชœเซ‡เชฎเชพเช‚ เช“เช›เซ€ เชธเชšเซ‹เชŸเชคเชพ (เชตเชฟเชถเซเชตเชธเชจเซ€เชฏเชคเชพ) เชนเซ‹เชฏ เช›เซ‡. เชšเซ‡เชคเชตเชฃเซ€ เชธเซเชคเชฐเซ‹ เช…เชจเซ‡ Windows เชนเซ‡เช เชณ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เชตเชฟเชถเซ‡ เชตเชงเซ เชฎเชพเชนเชฟเชคเซ€ เช…เชนเซ€เช‚ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡: *เชฐเชกเชตเซเช‚*.

เชธเซŒเชฅเซ€ เชฐเชธเชชเซเชฐเชฆ เชญเซ‚เชฒเซ‹เชจเซ€ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชธเชฎเซ€เช•เซเชทเชพ เช•เชฐเชตเซ€ (เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชธเซเชงเชพเชฐเซ€) เชฏเซ‹เช—เซเชฏ เช›เซ‡ เชฌเชพเช•เซ€เชจเซ€ เชšเซ‡เชคเชตเชฃเซ€เช“เชจเซ‡ เชฆเชฌเชพเชตเซ‹. เช† เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เชœเซ‡เชฅเซ€ เชœเซ‚เชจเซ€ เชšเซ‡เชคเชตเชฃเซ€เช“ เชตเชšเซเชšเซ‡ เชจเชตเซ€ เชšเซ‡เชคเชตเชฃเซ€เช“ เช–เซ‹เชตเชพเชˆ เชจ เชœเชพเชฏ. เชตเชงเซเชฎเชพเช‚, เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเช• เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐ เชฎเชพเชŸเซ‡ เชธเชนเชพเชฏเช• เช›เซ‡, เช…เชจเซ‡ เชญเซ‚เชฒเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชจเชฅเซ€. ๐Ÿ™‚

1. เชเชตเชŸเซ‹เชฎเซ‡เชŸเซ€เชธเซ€เชธ

เชชเชฐเชฟเชšเชฟเชค เชฅเชฏเชพ เชชเช›เซ€, เชชเซเชฒเช—เชฟเชจเซเชธเชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ‹ เช…เชจเซ‡ CI เชฎเชพเช‚ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐเซ‹ เชธเซเชŸเซ‡เชŸเชฟเช• เชตเชฟเชถเซเชฒเซ‡เชทเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚ เช† เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชญเซ‚เชฒเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชฅเชตเชพ เชคเซ‡ เชฌเชฟเชฒเช•เซเชฒ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจเชฅเซ€. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• เช…เช‚เชคเชฟเชฎ เชšเช•เชพเชธเชฃเซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡เชฅเซ€ เช•เชฐเซ€เชจเซ‡ เชšเช•เชพเชธเชพเชฏเซ‡เชฒ เช•เซ‹เชก เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเช•เชพเชธ เชถเชพเช–เชพเชฎเชพเช‚ เชจ เช†เชตเซ€ เชถเช•เซ‡.

เช† เชคเชฌเช•เซเช•เซ‡ เชคเชฎเซ‡ เชถเซเช‚ เชถเซ€เช–เซ€ เชถเช•เชถเซ‹:

  • เชธเชพเชงเชจ เช•เชฏเชพ เช“เชŸเซ‹เชฎเซ‡เชถเชจ เชตเชฟเช•เชฒเซเชชเซ‹ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡;
  • เชถเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเช• เชคเชฎเชพเชฐเซ€ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชธเชฟเชธเซเชŸเชฎ เชธเชพเชฅเซ‡ เชธเซเชธเช‚เช—เชค เช›เซ‡?

เชธเช‚เชชเซ‚เชฐเซเชฃ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชจ เชนเซ‹เชตเชพเชฅเซ€, เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเชฎเชพเชฐเซ‡ เชฒเช–เชตเซเช‚ เชชเชกเชถเซ‡ เช†เชงเชพเชฐ. เช† เชธเชพเชฎเชพเชจเซเชฏ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเซ‡ เชคเชฎเชจเซ‡ เชฎเชฆเชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช–เซเชถ เช›เซ€เช. ๐Ÿ™‚

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชธเชคเชค เชเช•เซ€เช•เชฐเชฃ (CI) เชธเซ‡เชตเชพเช“ เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€เช. เช•เซ‹เชˆเชชเชฃ เชตเชฟเชถเซเชฒเซ‡เชทเช• เช•เซ‹เชˆเชชเชฃ เช—เช‚เชญเซ€เชฐ เชธเชฎเชธเซเชฏเชพเช“ เชตเชฟเชจเชพ เชคเซ‡เชฎเชจเชพเชฎเชพเช‚ เชฒเชพเช—เซ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชชเชพเช‡เชชเชฒเชพเช‡เชจเชฎเชพเช‚ เชเช• เช…เชฒเช— เชธเซเชŸเซ‡เชœ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชœเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชฌเชฟเชฒเซเชก เช…เชจเซ‡ เชฏเซเชจเชฟเชŸ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชชเช›เซ€ เชธเซเชฅเชฟเชค เช›เซ‡. เช† เชตเชฟเชตเชฟเชง เช•เชจเซเชธเซ‹เชฒ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, PVS-Studio เชจเซ€เชšเซ‡เชจเซ€ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“ เชชเซ‚เชฐเซ€ เชชเชพเชกเซ‡ เช›เซ‡:

  • PVS-Studio_Cmd.exe (เชตเชฟเชจเซเชกเซ‹เช เชชเชฐ เช‰เช•เซ‡เชฒเซ‹, C#, C++ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ)
  • CLMonitor.exe (เชธเช‚เช•เชฒเชจ เชฎเซ‹เชจเซ€เชŸเชฐเซ€เช‚เช—)
  • pvs-เชธเซเชŸเซเชกเชฟเชฏเซ‹-เชตเชฟเชถเซเชฒเซ‡เชทเช• (Linux/macOS เชชเชฐ C++ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ)
  • pvs-studio-dotnet (เช‰เช•เซ‡เชฒ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ, Linux / macOS เชชเชฐ C# เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ)
  • pvs-studio.jar (เชœเชพเชตเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ)
  • PlogConverter (เชฐเชฟเชชเซ‹เชฐเซเชŸ เชซเชพเช‡เชฒ เช•เชจเซเชตเชฐเซเชŸเชฐ)

CI เชฎเชพเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชคเซเชฐเชฃ เชตเชธเซเชคเซเช“ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

  • เชตเชฟเชถเซเชฒเซ‡เชทเช• เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‹;
  • เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชšเชฒเชพเชตเซ‹;
  • เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชชเชนเซ‹เช‚เชšเชพเชกเซ‹.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, Linux (Debian-base) เชชเชฐ PVS-Studio เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

wget -q -O - https://files.viva64.com/etc/pubkey.txt 
    | sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list 
  https://files.viva64.com/etc/viva64.list
  
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio

เชตเชฟเชจเซเชกเซ‹เช เชšเชฒเชพเชตเชคเซ€ เชธเชฟเชธเซเชŸเชฎเซ‹ เชชเชฐ, เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐเชฎเชพเช‚เชฅเซ€ เชตเชฟเชถเซเชฒเซ‡เชทเช•เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เช•เซ‹เชˆ เชฐเซ€เชค เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจเชฎเชพเช‚เชฅเซ€ เชตเชฟเชถเซเชฒเซ‡เชทเช• เชœเชฎเชพเชตเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เช›เซ‡:

PVS-Studio_setup.exe /verysilent /suppressmsgboxes 
/norestart /nocloseapplications

เชคเชฎเซ‡ Windows เชšเชฒเชพเชตเชคเซ€ เชธเชฟเชธเซเชŸเชฎเซ‹ เชชเชฐ PVS-Studio เชœเชฎเชพเชตเชตเชพ เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ *เช…เชนเซ€เช‚*.

เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเช›เซ€, เชคเชฎเชพเชฐเซ‡ เชธเซ€เชงเชพ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชธเช‚เช•เชฒเชจ เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชชเชธเชพเชฐ เชฅเชฏเชพ เชชเช›เซ€ เชœ เช† เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชเชŸเชฒเชพ เชฎเชพเชŸเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชธเช‚เช•เชฒเชจ เช•เชฐเชคเชพ เชฌเชฎเชฃเซเช‚ เชธเชฎเชฏ เชฒเซ‡ เช›เซ‡.

เชฒเซ‹เชจเซเชš เชชเชฆเซเชงเชคเชฟ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช…เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเซเชตเชฟเชงเชพเช“ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชนเซ‹เชตเชพเชฅเซ€, เชนเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ C++ (Linux) เชฎเชพเชŸเซ‡เชจเซ‹ เชตเชฟเช•เชฒเซเชช เชฌเชคเชพเชตเซ€เชถ:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log
plog-converter -t errorfile PVS-Studio.log --cerr -w

เชชเซเชฐเชฅเชฎ เช†เชฆเซ‡เชถ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชถเซ‡, เช…เชจเซ‡ เชฌเซ€เชœเซ‹ เชชเชฐเชฌเชฟเชกเซ€เชฏเชพเช“เชฐเชฟเชชเซ‹เชฐเซเชŸเชจเซ‡ เชŸเซ‡เช•เซเชธเซเชŸ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‡ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชœเซ‹ เชšเซ‡เชคเชตเชฃเซ€เช“ เชนเซ‹เชฏ เชคเซ‹ 0 เชธเชฟเชตเชพเชฏเชจเซ‹ เชฐเซ€เชŸเชฐเซเชจ เช•เซ‹เชก เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เชญเซ‚เชฒ เชธเช‚เชฆเซ‡เชถเชพเช“ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชฌเชฟเชฒเซเชกเชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชจเชพ เชœเซ‡เชตเซ€ เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชคเชฎเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชงเซเชตเชœเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ -w เช…เชจเซ‡ เชšเซ‡เชคเชตเชฃเซ€เช“ เชงเชฐเชพเชตเชคเซ€ เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚.

เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡. เชŸเซ‡เช•เซเชธเซเชŸ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช…เชธเซเชตเชฟเชงเชพเชœเชจเช• เช›เซ‡. เชคเซ‡ เชซเช•เซเชค เชเช• เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชตเชงเซ เชฐเชธเชชเซเชฐเชฆ เชฐเชฟเชชเซ‹เชฐเซเชŸ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ‹ - FullHtml. เชคเซ‡ เชคเชฎเชจเซ‡ เช•เซ‹เชก เชฆเซเชตเชพเชฐเชพ เชจเซ‡เชตเชฟเช—เซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชคเชฎเซ‡ เชฒเซ‡เช–เชฎเชพเช‚ CI เชชเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ "PVS-เชธเซเชŸเซเชกเชฟเชฏเซ‹ เช…เชจเซ‡ เชธเชคเชค เชเช•เซ€เช•เชฐเชฃ"(เชตเชฟเชจเซเชกเซ‹เช) เช…เชฅเชตเชพ"เชŸเซเชฐเซ‡เชตเชฟเชธ เชธเซ€เช†เชˆเชฎเชพเช‚ เชชเซ€เชตเซ€เชเชธ-เชธเซเชŸเซเชกเชฟเชฏเซ‹ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเซ‹" (เชฒเชฟเชจเช•เซเชธ).

เช เซ€เช• เช›เซ‡, เชคเชฎเซ‡ เชฌเชฟเชฒเซเชก เชธเชฐเซเชตเชฐ เชชเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเช•เชจเซ‡ เช—เซ‹เช เชตเซเชฏเซเช‚ เช›เซ‡. เชนเชตเซ‡, เชœเซ‹ เช•เซ‹เชˆเช เชšเช•เชพเชธเชพเชฏเซ‡เชฒ เช•เซ‹เชก เช…เชชเชฒเซ‹เชก เช•เชฐเซเชฏเซ‹ เชนเซ‹เชฏ, เชคเซ‹ เชšเช•เชพเชธเชฃเซ€เชจเซ‹ เชคเชฌเช•เซเช•เซ‹ เชจเชฟเชทเซเชซเชณ เชœเชถเซ‡, เช…เชจเซ‡ เชคเชฎเซ‡ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชถเซ‹เชงเซ€ เชถเช•เชถเซ‹, เชœเซ‹ เช•เซ‡, เช† เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชจเซเช•เซ‚เชณ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชถเชพเช–เชพเช“ เชฎเชฐเซเชœ เชฅเชฏเชพ เชชเช›เซ€ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เชคเชชเชพเชธเชตเซเช‚ เชตเชงเซ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช›เซ‡. เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชชเซเชฒ เชตเชฟเชจเช‚เชคเซ€เชจเชพ เชคเชฌเช•เซเช•เซ‡. เช.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชชเซเชฒ เชฐเชฟเช•เซเชตเซ‡เชธเซเชŸ เชเชจเชพเชฒเชฟเชธเชฟเชธเชจเซเช‚ เชธเซ‡เชŸเช…เชช เช•เชฐเชตเซเช‚ เช CI เชชเชฐ เชชเซƒเชฅเซเชฅเช•เชฐเชฃเชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เชฒเซ‹เช‚เชš เช•เชฐเชคเชพเช‚ เช˜เชฃเซเช‚ เช…เชฒเช— เชจเชฅเซ€. เชฌเชฆเชฒเชพเชฏเซ‡เชฒ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชค เชธเชฟเชตเชพเชฏ. เช† เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ git เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชถเชพเช–เชพเช“ เชตเชšเซเชšเซ‡เชจเชพ เชคเชซเชพเชตเชคเซ‹เชจเซ‡ เชชเซ‚เช›เซ€เชจเซ‡ เชฎเซ‡เชณเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡:

git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list

เชนเชตเซ‡ เชคเชฎเชพเชฐเซ‡ เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเช•เชจเซ‡ เชซเชพเช‡เชฒเซ‹เชจเซ€ เช† เชธเซ‚เชšเชฟ เชชเชธเชพเชฐ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซ€เชตเซ€เชเชธ-เชธเซเชŸเซเชกเชฟเชฏเซ‹เชฎเชพเช‚ เช† เชซเซเชฒเซ‡เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ -S:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log 
                            -S .pvs-pr.list

เชคเชฎเซ‡ เชชเซเชฒ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เชตเชงเซ เชœเชพเชฃเซ€ เชถเช•เซ‹ เช›เซ‹ *เช…เชนเซ€เช‚* เชœเซ‹ เชคเชฎเชพเชฐเซเช‚ CI เชฒเซ‡เช–เชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชธเซ‡เชตเชพเช“เชจเซ€ เชธเซ‚เชšเชฟเชฎเชพเช‚ เชจ เชนเซ‹เชฏ เชคเซ‹ เชชเชฃ, เชคเชฎเชจเซ‡ เช† เชชเซเชฐเช•เชพเชฐเชจเชพ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเชพ เชธเชฟเชฆเซเชงเชพเช‚เชคเชจเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชญเชพเช— เช‰เชชเชฏเซ‹เช—เซ€ เชฒเชพเช—เชถเซ‡.

เชชเซเชฒ เชตเชฟเชจเช‚เชคเซ€เช“เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เชšเซ‡เชคเชตเชฃเซ€เช“ เชงเชฐเชพเชตเชคเซ€ เช•เชฎเชฟเชŸเซเชธเชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชคเซเชฏเชพเช‚ เชเช• เชธเซ€เชฎเชพ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชœเซ‡ เชตเชฃเชšเช•เชพเชธเชพเชฏเซ‡เชฒ เช•เซ‹เชก เชชเชพเชฐ เช•เชฐเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€.

เช† เชฌเชงเซเช‚ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เชธเชพเชฐเซเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเซเช‚ เชเช• เชœ เชœเช—เซเชฏเชพเช เชฌเชงเซ€ เชšเซ‡เชคเชตเชฃเซ€เช“ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชฌเชจเชตเชพ เชˆเชšเซเช›เซเช‚ เช›เซเช‚. เชฎเชพเชคเซเชฐ เชธเซเชŸเซ‡เชŸเชฟเช• เชตเชฟเชถเซเชฒเซ‡เชทเช•เชฅเซ€ เชœ เชจเชนเซ€เช‚, เชชเชฃ เชฏเซเชจเชฟเชŸ เชŸเซ‡เชธเซเชŸ เช…เชฅเชตเชพ เชกเชพเชฏเชจเซ‡เชฎเชฟเช• เชตเชฟเชถเซเชฒเซ‡เชทเช•เชฎเชพเช‚เชฅเซ€ เชชเชฃ. เช† เชฎเชพเชŸเซ‡ เชตเชฟเชตเชฟเชง เชธเซ‡เชตเชพเช“ เช…เชจเซ‡ เชชเซเชฒเช—เชˆเชจเซเชธ เช›เซ‡. PVS-เชธเซเชŸเซเชกเชฟเชฏเซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชงเชฐเชพเชตเซ‡ เช›เซ‡ SonarQube เชฎเชพเช‚ เชเช•เซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡ เชชเซเชฒเช—เช‡เชจ.

2. เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เชฎเชถเซ€เชจเซ‹ เชชเชฐ เชเช•เซ€เช•เชฐเชฃ

เชนเชตเซ‡ เชฐเซ‹เชœเชฟเช‚เชฆเชพ เชตเชฟเช•เชพเชธเชจเชพ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเช•เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. เช† เชธเชฎเชฏเซ‡ เชคเชฎเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเซ€ เชฐเซ€เชคเซ‹เชฅเซ€ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชชเชฐเชฟเชšเชฟเชค เชฅเชˆ เช—เชฏเชพ เช›เซ‹, เชคเซ‡เชฅเซ€ เช†เชจเซ‡ เชธเซŒเชฅเซ€ เชธเชฐเชณ เชญเชพเช— เช•เชนเซ€ เชถเช•เชพเชฏ.

เชธเซŒเชฅเซ€ เชธเชฐเชณ เชตเชฟเช•เชฒเซเชช เชคเชฐเซ€เช•เซ‡, เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชชเซ‹เชคเชพเชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชตเชฟเชถเซเชฒเซ‡เชทเช• เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช† เช˜เชฃเซ‹ เชธเชฎเชฏ เชฒเซ‡เชถเซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชตเชฟเช•เชพเชธเชฅเซ€ เชตเชฟเชšเชฒเชฟเชค เช•เชฐเชถเซ‡, เชคเซ‡เชฅเซ€ เชคเชฎเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒเชฐ เช…เชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชซเซเชฒเซ‡เช—เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเซ€เชตเซ€เชเชธ-เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชฎเชพเชŸเซ‡ เชตเชฟเชตเชฟเชง เช›เซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชซเซเชฒเซ‡เช—เซเชธ. เชœเซ‹ เช•เซ‡, เชคเซเชฏเชพเช‚ เชนเช‚เชฎเซ‡เชถเชพ เชชเซ‡เช•เซ‡เชœ เชฎเซ‡เชจเซ‡เชœเชฐ เชนเซ‹เชฏ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชšเซ‹เช•เชฒเซ‡เชŸเซ€ (เชตเชฟเชจเซเชกเซ‹เช), เชนเซ‹เชฎเชฌเซเชฐเซ (เชฎเซ‡เช•เช“เชเชธ) เช…เชฅเชตเชพ Linux เชฎเชพเชŸเซ‡ เชกเชเชจเซ‡เช• เชตเชฟเช•เชฒเซเชชเซ‹.

เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ เชœเชฐเซ‚เชฐเซ€ เชชเซเชฒเช—เชฟเชจเซเชธ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹, เช†เชˆเชกเชฟเชฏเชพ, เชฐเชพเช‡เชกเชฐ เชตเช—เซ‡เชฐเซ‡

3. เชฆเซˆเชจเชฟเช• เช‰เชชเชฏเซ‹เช—

เช† เชคเชฌเช•เซเช•เซ‡, เชฆเซˆเชจเชฟเช• เช‰เชชเชฏเซ‹เช— เชฆเชฐเชฎเชฟเชฏเชพเชจ เชตเชฟเชถเซเชฒเซ‡เชทเช•เชจเซ‡ เชเชกเชชเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฐเซ€เชคเซ‹ เชตเชฟเชถเซ‡ เชฅเซ‹เชกเชพเช• เชถเชฌเซเชฆเซ‹ เช•เชนเซ‡เชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. เชธเชฎเช—เซเชฐ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชธเช‚เชชเซ‚เชฐเซเชฃ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชฎเชพเช‚ เช˜เชฃเซ‹ เชธเชฎเชฏ เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช†เช–เชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชเช• เชœ เชตเชพเชฐเชฎเชพเช‚ เช†เชชเชฃเซ‡ เช•เซ‡เชŸเชฒเซ€ เชตเชพเชฐ เช•เซ‹เชก เชฌเชฆเชฒเซ€เช เช›เซ€เช? เชญเชพเช—เซเชฏเซ‡ เชœ เช•เซ‹เชˆ เชฐเชฟเชซเซ‡เช•เซเชŸเชฐเชฟเช‚เช— เชเชŸเชฒเซเช‚ เชฎเซ‹เชŸเซเช‚ เชนเซ‹เชฏ เช•เซ‡ เชคเซ‡ เชคเชฐเชค เชœ เชธเชฎเช—เซเชฐ เช•เซ‹เชก เชฌเซ‡เชเชจเซ‡ เช…เชธเชฐ เช•เชฐเซ‡. เชเช• เชธเชฎเชฏเซ‡ เชฌเชฆเชฒเชพเชคเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชญเชพเช—เซเชฏเซ‡ เชœ เชเช• เชกเชเชจ เช•เชฐเชคเชพเช‚ เชตเชงเซ€ เชœเชพเชฏ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเซเช‚ เช…เชฐเซเชฅเชชเซ‚เชฐเซเชฃ เช›เซ‡. เช†เชตเซ€ เชธเซเชฅเชฟเชคเชฟ เชฎเชพเชŸเซ‡ เช›เซ‡ เช‡เชจเซเช•เซเชฐเซ€เชฎเซ‡เชจเซเชŸเชฒ เชเชจเชพเชฒเชฟเชธเชฟเชธ เชฎเซ‹เชก. เชฎเชพเชคเซเชฐ เช—เชญเชฐเชพเชถเซ‹ เชจเชนเซ€เช‚, เช† เชฌเซ€เชœเซเช‚ เชธเชพเชงเชจ เชจเชฅเซ€. เช† เชเช• เชตเชฟเชถเชฟเชทเซเชŸ เชฎเซ‹เชก เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เชซเช•เซเชค เชฌเชฆเชฒเชพเชฏเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชจเชฟเชฐเซเชญเชฐเชคเชพเช“เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซ‹ เชคเชฎเซ‡ เชชเซเชฒเช—เช‡เชจ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒ IDE เชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เชนเซ‹เชต เชคเซ‹ เช† เชจเชฟเชฐเซเชฎเชพเชฃ เชชเช›เซ€ เช†เชชเชฎเซ‡เชณเซ‡ เชฅเชพเชฏ เช›เซ‡.

เชœเซ‹ เชตเชฟเชถเซเชฒเซ‡เชทเช• เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชฌเชฆเชฒเชพเชฏเซ‡เชฒ เช•เซ‹เชกเชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพเช“ เชถเซ‹เชงเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡ เชธเซเชตเชคเช‚เชคเซเชฐ เชฐเซ€เชคเซ‡ เชคเซ‡เชจเซ€ เชœเชพเชฃ เช•เชฐเชถเซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, PVS-Studio เชคเชฎเชจเซ‡ เชšเซ‡เชคเชตเชฃเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เชตเชฟเชถเซ‡ เชœเชฃเชพเชตเชถเซ‡:

เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ - เชชเชฐเชฟเชšเชฏเชฅเซ€ เชเช•เซ€เช•เชฐเชฃ เชธเซเชงเซ€
เช…เชฒเชฌเชคเซเชค, เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ‡ เชธเชพเชงเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เช•เชนเซ‡เชตเซเช‚ เชชเซ‚เชฐเชคเซเช‚ เชจเชฅเซ€. เช†เชชเชฃเซ‡ เชคเซ‡เชฎเชจเซ‡ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชœเชฃเชพเชตเชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เชคเซ‡ เชถเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช›เซ‡. เช…เชนเซ€เช‚, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, PVS-เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชฎเชพเชŸเซ‡ เชเชกเชชเซ€ เชถเชฐเซ‚เช†เชค เชตเชฟเชถเซ‡เชจเชพ เชฒเซ‡เช–เซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซ‹ เช›เซ‹ เชคเซ‡ เช•เซ‹เชˆเชชเชฃ เชธเชพเชงเชจ เชฎเชพเชŸเซ‡ เชคเชฎเซ‡ เชธเชฎเชพเชจ เชŸเซเชฏเซเชŸเซ‹เชฐเชฟเชฏเชฒเซเชธ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹:

เช†เชตเชพ เชฒเซ‡เช–เซ‹ เชฐเซ‹เชœเชฟเช‚เชฆเชพ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชคเชฎเชพเชฎ เชฎเชพเชนเชฟเชคเซ€ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชตเชงเซ เชธเชฎเชฏ เชฒเซ‡เชคเซ‹ เชจเชฅเซ€. ๐Ÿ™‚

เชŸเซ‚เชฒเชจเซ‡ เชœเชพเชฃเชตเชพเชจเชพ เชคเชฌเช•เซเช•เซ‡ เชชเชฃ, เช…เชฎเซ‡ เชชเซเชฐเชฅเชฎ เชฒเซ‹เชจเซเชšเชฎเชพเช‚เชฅเซ€ เชเช• เชฆเชฐเชฎเชฟเชฏเชพเชจ เช˜เชฃเซ€ เชฌเชงเซ€ เชšเซ‡เชคเชตเชฃเซ€เช“เชจเซ‡ เชฆเชฌเชพเชตเซ€ เชฆเซ€เชงเซ€ เชนเชคเซ€. เช•เชฎเชจเชธเซ€เชฌเซ‡, เชธเซเชŸเซ‡เชŸเชฟเช• เชตเชฟเชถเซเชฒเซ‡เชทเช•เซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เชธเชฎเชฏ เชธเชฎเชฏ เชชเชฐ เชคเซ‡เช“ เช–เซ‹เชŸเชพ เชนเช•เชพเชฐเชพเชคเซเชฎเช• เช†เชชเซ‡ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชคเซ‡เชฎเชจเซ‡ เชฆเชฌเชพเชตเชตเซเช‚ เชธเชฐเชณ เช›เซ‡; เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชฎเชพเชŸเซ‡ PVS-Studio เชชเซเชฒเช—เช‡เชจเชฎเชพเช‚ เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เชเช• เชฌเชŸเชจ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ - เชชเชฐเชฟเชšเชฏเชฅเซ€ เชเช•เซ€เช•เชฐเชฃ เชธเซเชงเซ€
เชœเซ‹ เช•เซ‡, เชคเชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เชฆเชฌเชพเชตเชตเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชฎเชพเชŸเซ‡ เชธเชฎเชธเซเชฏเชพเชจเซ€ เชœเชพเชฃ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชœเซ‹ เช–เซ‹เชŸเชพ เชนเช•เชพเชฐเชพเชคเซเชฎเช•เชจเซ‡ เชธเซเชงเชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชญเชตเชฟเชทเซเชฏเชจเชพ เช…เชชเชกเซ‡เชŸเซเชธเชฎเชพเช‚ เชคเชฎเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชฆเชฐเซ‡เช• เชตเช–เชคเซ‡ เชคเชฎเชพเชฐเชพ เช•เซ‹เชกเชฌเซ‡เช เชฎเชพเชŸเซ‡ เชšเซ‹เช•เซเช•เชธ เช“เช›เชพ เช…เชจเซ‡ เช“เช›เชพ เช–เซ‹เชŸเชพ เชนเช•เชพเชฐเชพเชคเซเชฎเช• เช›เซ‡.

เชเช•เซ€เช•เชฐเชฃ เชชเช›เซ€

เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชตเชฟเช•เชพเชธ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเชตเชพเชจเชพ เชคเชฎเชพเชฎ เชคเชฌเช•เซเช•เชพเช“เชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชฏเชพ เช›เซ€เช. CI เชชเชฐ เช†เชตเชพ เชŸเซ‚เชฒเซเชธ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซเช‚ เชฎเชนเชคเซเชต เชนเซ‹เชตเชพ เช›เชคเชพเช‚, เชคเซ‡เชฎเชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชจเซเช‚ เชธเซเชฅเชพเชจ เช เชกเซ‡เชตเชฒเชชเชฐเชจเซเช‚ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เช›เซ‡. เช›เซ‡เชตเชŸเซ‡, เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเช• เช เชจเซเชฏเชพเชฏเชพเชงเซ€เชถ เชจเชฅเซ€ เชœเซ‡ เชคเชฎเชพเชฐเชพเชฅเซ€ เชฆเซ‚เชฐ เช•เซเชฏเชพเช‚เช• เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เช•เซ‹เชก เชธเชพเชฐเซ‹ เชจเชฅเซ€. เชคเซ‡เชจเชพเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เชคเซ‡ เชเช• เชธเชนเชพเชฏเช• เช›เซ‡ เชœเซ‡ เชคเชฎเชจเซ‡ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เชฅเชพเช•เซ€ เช—เชฏเชพ เช›เซ‹ เช…เชจเซ‡ เชœเซ‹ เชคเชฎเซ‡ เช•เช‚เชˆเช• เชญเซ‚เชฒเซ€ เช—เชฏเชพ เช›เซ‹ เชคเซ‹ เชคเชฎเชจเซ‡ เชฏเชพเชฆ เช•เชฐเชพเชตเซ‡ เช›เซ‡.

เชธเชพเชšเซเช‚, เชจเชฟเชฏเชฎเชฟเชค เช‰เชชเชฏเซ‹เช— เชตเชฟเชจเชพ, เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชตเชฟเช•เชพเชธเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชถเช•เซเชฏเชคเชพ เชจเชฅเซ€. เช›เซ‡เชตเชŸเซ‡, เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‹ เชฎเซเช–เซเชฏ เชซเชพเชฏเชฆเซ‹ เช•เซ‹เชกเชจเชพ เชœเชŸเชฟเชฒ เช…เชจเซ‡ เชตเชฟเชตเชพเชฆเชพเชธเซเชชเชฆ เชตเชฟเชญเชพเช—เซ‹เชจเซ€ เชถเซ‹เชงเชฎเชพเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชจเซ€ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชถเซ‹เชงเชฎเชพเช‚ เช›เซ‡. เชธเช‚เชฎเชค เชฅเชพเช“ เช•เซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชฎเชพเชŸเซ‡ เชธเช‚เชชเชพเชฆเชจเซ‹ เชฎเซ‹เช•เชฒเซเชฏเชพ เชชเช›เซ€ เชธเชฎเชธเซเชฏเชพ เชถเซ‹เชงเชตเซ€ เช เชฎเชพเชคเซเชฐ เช…เชชเซเชฐเชฟเชฏ เชจเชฅเซ€, เชชเชฃ เช–เซ‚เชฌ เชธเชฎเชฏ เชฎเชพเช‚เช—เซ€ เชฒเซ‡ เชคเซ‡เชตเซเช‚ เชชเชฃ เช›เซ‡. เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ, เชœเซเชฏเชพเชฐเซ‡ เชจเชฟเชฏเชฎเชฟเชคเชชเชฃเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเชพเชฐเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐเชจเชพ เชฆเชฐเซ‡เช• เชซเซ‡เชฐเชซเชพเชฐเชจเซ‡ เชธเซ€เชงเชพ เชœ เชœเซเช เช›เซ‡ เช…เชจเซ‡ เช•เซ‹เชก เชชเชฐ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชถเช‚เช•เชพเชธเซเชชเชฆ เชธเซเชฅเชพเชจเซ‹เชจเซ€ เชœเชพเชฃ เช•เชฐเซ‡ เช›เซ‡.

เช…เชจเซ‡ เชœเซ‹ เชคเชฎเซ‡ เช…เชฅเชตเชพ เชคเชฎเชพเชฐเชพ เชธเชนเช•เชพเชฐเซเชฏเช•เชฐเซ‹เชจเซ‡ เชนเชœเซ เชชเชฃ เช–เชพเชคเชฐเซ€ เชจเชฅเซ€ เช•เซ‡ เชคเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเช•เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ, เชคเซ‹ เชชเช›เซ€ เชนเซเช‚ เชธเซ‚เชšเชจ เช•เชฐเซเช‚ เช›เซเช‚ เช•เซ‡ เชคเชฎเซ‡ เชนเชตเซ‡ เชฒเซ‡เช– เชตเชพเช‚เชšเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‹ "เชตเชฟเช•เชพเชธ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชธเซเชŸเซ‡เชŸเชฟเช• เช•เซ‹เชก เชตเชฟเชถเซเชฒเซ‡เชทเช• PVS-เชธเซเชŸเซเชกเชฟเชฏเซ‹ เชฆเชพเช–เชฒ เช•เชฐเชตเชพเชจเชพ เช•เชพเชฐเชฃเซ‹". เชคเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ€ เชฒเชพเช•เซเชทเชฃเชฟเช• เชšเชฟเช‚เชคเชพเช“เชจเซ‡ เชธเช‚เชฌเซ‹เชงเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เชคเซ‡เชฎเชจเซ‹ เชธเชฎเชฏ เชฒเซ‡เชถเซ‡ เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชตเชงเซ.

เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ - เชชเชฐเชฟเชšเชฏเชฅเซ€ เชเช•เซ€เช•เชฐเชฃ เชธเซเชงเซ€

เชœเซ‹ เชคเชฎเซ‡ เช† เชฒเซ‡เช–เชจเซ‡ เช…เช‚เช—เซเชฐเซ‡เชœเซ€ เชฌเซ‹เชฒเชคเชพ เชชเซเชฐเซ‡เช•เซเชทเช•เซ‹ เชธเชพเชฅเซ‡ เชถเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เช…เชจเซเชตเชพเชฆ เชฒเชฟเช‚เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹: เชฎเซ‡เช•เซเชธเชฟเชฎ เชเซเชตเซเชฏเชพเช—เชฟเช‚เชŸเชธเซ‡เชต. เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ: เชถเชฐเซ‚เช†เชคเชฅเซ€ เชเช•เซ€เช•เชฐเชฃ เชธเซเชงเซ€.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹