เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ - เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡

เป€เบกเบทเปˆเบญเบเบเบฑเบšเบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบชเบดเป‰เบ™เบชเบธเบ” เบซเบผเบทเบเบฒเบ™เบ”เบตเบšเบฑเบ, เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ„เบปเป‰เบ™เบซเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบ, เบซเบผเบทเป‚เบ”เบเบšเบฑเบ‡เป€เบญเบตเบ™ stumbled เบกเบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ›เบฐเป‚เบซเบเบ magic: "เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบปเบ‡เบ—เบตเปˆ". เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบกเบฑเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡เปเบฅเบฐเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป„เบ”เป‰เปเบ™เบงเปƒเบ”.

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ - เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡
เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ‚เบฝเบ™เปƒเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เป‚เบ”เบเบšเปเปˆเบฎเบนเป‰เบ•เบปเบง, เบ—เปˆเบฒเบ™เปเบฅเปˆเบ™เบกเบฑเบ™เบœเปˆเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบงเปˆเบฒเบœเบนเป‰เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเปƒเบ”เป†เบเปเปˆเบชเบฐเบซเบ™เบญเบ‡, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเป€เบฅเบฑเบเบ™เป‰เบญเบเบเปˆเบฝเบงเบเบฑเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ” C ++ เปƒเบ™ Visual Studio เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป€เบซเบฑเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ - เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡
เปƒเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบ•เบปเบงเปเบ› var เบšเปเปˆเป€เบ„เบตเบเปƒเบŠเป‰เบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ—เปˆเบฒเบ™เป€เบเบทเบญเบšเบชเบฐเป€เบซเบกเบตเปƒเบŠเป‰เบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เบ„เบปเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ. เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเบ™เบฑเบเบงเบดเป€เบ„เบฒเบฐเบกเบทเบญเบฒเบŠเบตเบšเป€เบŠเบฑเปˆเบ™ Coverity, Klocwork เบซเบผเบท PVS-Studio, เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบตเปˆเปƒเบซเป‰เป‚เบ”เบ compiler เบญเบฒเบ”เบˆเบฐเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบšเบฑเบ™เบซเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เปเบกเปˆเบ™เบซเบเบฑเบ‡เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™, เบญเปˆเบฒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เป€เบžเบทเปˆเบญเบฎเบฝเบ™เบฎเบนเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”?

เบชเบฐเบซเบผเบธเบšเป‚เบ”เบเบซเบเปเป‰: เบเบฒเบ™เป€เบฅเบฑเปˆเบ‡ เปเบฅเบฐ เบ„เบงเบฒเบกเบ‡เปˆเบฒเบ.

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบšเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบผเบฒเบเปƒเบ™เบฅเบฐเบซเบฑเบ”: เบˆเบฒเบเบเบฒเบ™เปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบฒเบชเบฒเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบดเบกเบœเบดเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ

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'.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบญเบปเบฒเบกเบทเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ™เบตเป‰, เบฅเบญเบ‡เปƒเบŠเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเปƒเบ™ Compiler Explorer: *เบฎเป‰เบญเบ‡เป„เบซเป‰*.

เปเบฅเบฐเบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆ, เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ—เบฑเบ™เบ—เบต, เปเบฅเบฐเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เบฑเปˆเบ‡เบฅเบปเบ‡ debugging เบชเปเบฒเบฅเบฑเบšเบŠเบปเปˆเบงเป‚เบกเบ‡เบ—เบตเปˆเบ”เบต, เบชเบปเบ‡เป„เบชเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเปเบ›เบเบซเบผเบฒเบ.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™. เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ” suboptimal เบเป‰เบญเบ™เบงเปˆเบฒเบฅเบฒเบงเบฅเบทเบกเบšเบฒเบ‡เบ„เบงเบฒเบกเบญเปˆเบญเบ™เป‚เบเบ™เบ‚เบญเบ‡เบžเบฒเบชเบฒ? เบซเบผเบทเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบซเบฑเบ” เบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”? เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ—เปเบฒเบกเบฐเบ”เบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบชเปˆเบงเบ™เปเบšเปˆเบ‡เบ‚เบญเบ‡เบŠเป‰เบฒเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เปเบเป‰เบšเบฑเบ™เบซเบฒเป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบ typos, เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ›เบปเบเบเบฐเบ•เบดเบซเบผเบทเบžเบถเบ”เบ•เบดเบเปเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเปเบฒเบ™เบปเบ”.

เบกเบฑเบ™เปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ—เบตเปˆเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ static เบ›เบฒเบเบปเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบœเบนเป‰เบŠเปˆเบงเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเปˆเบˆเบฐเบŠเบตเป‰เปƒเบซเป‰เป€เบซเบฑเบ™เบšเบฑเบ™เบซเบฒเบ•เปˆเบฒเบ‡เป†เปƒเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบญเบฐเบ—เบดเบšเบฒเบเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰, เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบกเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ: *เบฎเป‰เบญเบ‡เป„เบซเป‰*.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเบ—เบตเปˆเบ™เบฑเบเบงเบดเป€เบ„เบฒเบฐเบชเบฒเบกเบฒเบ”เบเบงเบ”เบžเบปเบšเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบก:

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เบญเปˆเบฒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เปเบฅเบฐเบซเบกเบฑเป‰เบ™เปƒเบˆเบงเปˆเบฒเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบปเบ‡เบ—เบตเปˆ, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบญเบ‡เบกเบฑเบ™เบญเบญเบ. เปเบ•เปˆเบšเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™? เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเปƒเบซเบกเปˆเป€เบ‚เบปเป‰เบฒเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™? เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบ—เบตเบกเบ‡เบฒเบ™เบเบฑเบšเบฅเบฒเบง? เป€เบˆเบปเป‰เบฒเบˆเบฐเบžเบปเบšเป€เบซเบฑเบ™เบ„เปเบฒเบ•เบญเบšเบ•เปเปˆเบ„เปเบฒเบ–เบฒเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบปเบ‡เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ—เบปเบ”เปเบ—เบ™เบซเบผเบทเบเบปเบเป€เบฅเบตเบเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบฅเบฐเบซเบฑเบ”. เบกเบฑเบ™เป€เบชเบตเบกเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰, เบŠเปˆเบงเบเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปเบฅเบฐเปเบเป‰เป„เบ‚ typos, เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡, เปเบฅเบฐเบเบฒเบ™เบญเบญเบเปเบšเบšเบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒ. เบกเบฑเบ™เบกเบตเบ›เบฐเบชเบดเบ”เบ•เบดเบœเบปเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบฅเบฐเบซเบฑเบ”เปƒเบ™เบฅเบฐเบšเบปเบšเบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเปเบฅเบฐเบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒเบงเบปเบ‡เป€เบฅเบฑเบšเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบผเบท เบญเปˆเบฒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบฝเบšเบ—เบฝเบšเบ—เบตเปˆเบซเบ™เป‰เบฒเป€เบšเบทเปˆเบญ.

0. เบฎเบนเป‰เบˆเบฑเบเป€เบ„เบทเปˆเบญเบ‡เบกเบท

เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบชเบฐเบšเบฑเบšเบ—เบปเบ”เบฅเบญเบ‡. เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเปเบ™เบฐเบ™เปเบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป€เบ„เบตเบเป€เบซเบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบกเบฒเบเปˆเบญเบ™. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ„เบงเบ™เป€เบฎเบฑเบ”เปเบกเปˆเบ™เบ”เบฒเบงเป‚เบซเบฅเบ” เบฅเบธเป‰เบ™โ€‹เบ—เบปเบ”โ€‹เบฅเบญเบ‡.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰:

  • เบงเบดเบ—เบตเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบœเบนเป‰เบงเบดเป€เบ„เบฒเบฐเปเบกเปˆเบ™เบซเบเบฑเบ‡;
  • เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบšเป?
  • เบ›เบฐเบˆเบธเบšเบฑเบ™เบกเบตเบšเบฑเบ™เบซเบฒเบซเบเบฑเบ‡เบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ?

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ—เบธเบโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบธเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹, เบชเบดเปˆเบ‡โ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบ„เบงเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เปเบกเปˆเบ™โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” (Windows, Linux, MacOS). เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡ PVS-Studio เปƒเบ™ Visual Studio เบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ (เบ„เบฅเบดเบเป„เบ”เป‰):

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ - เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡
เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบฑเบเบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เบกเบฑเบเบˆเบฐเบญเบญเบเบ„เปเบฒเป€เบ•เบทเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบžเบทเป‰เบ™เบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ. เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปเบเป‰เป„เบ‚เบžเบงเบเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เป€เบžเบฒเบฐเบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปเบฅเป‰เบง, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบšเบฑเบ™เบซเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเบชเปเบฒเบ„เบฑเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ—เปˆเบฒเบ™ เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ” เปเบฅเบฐเปเบเป‰เป„เบ‚เบžเบงเบเบกเบฑเบ™เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเบฑเปˆเบ™เบ•เบญเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”เปเบฅเบฐเบ›เปˆเบญเบเปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”. เปƒเบ™ plugin PVS-Studio เบชเปเบฒเบฅเบฑเบš Visual Studio, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เป‚เบ”เบเบฅเบฐเบ”เบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบฅเบฐเบ›เบฐเป€เบžเบ”. เบชเปเบฒเบฅเบฑเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”เบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบ—เบตเปˆเบชเบธเบ”, เปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆ เบชเบนเบ‡ ะธ เป‚เบ”เบโ€‹เบ—เบปเปˆเบงโ€‹เป„เบ› (เบชเบฒเบกเบฒเบ”เบ„เบฅเบดเบเป„เบ”เป‰):

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ - เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡
เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, 178 เบ„เปเบฒเป€เบ•เบทเบญเบ™เปเบกเปˆเบ™เป€เบšเบดเปˆเบ‡เบ‡เปˆเบฒเบเบเบงเปˆเบฒเบซเบผเบฒเบเบžเบฑเบ™ ...

เปƒเบ™เปเบ–เบš เบ‚เบฐเบซเบ™เบฒเบ”เบเบฒเบ‡ ะธ เบ•เปˆเปเบฒ เบกเบฑเบเบˆเบฐเบกเบตเบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบตเปˆเบ”เบต, เปเบ•เปˆเบ›เบฐเป€เบžเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบฅเบงเบกเบกเบตเบเบฒเบ™เบงเบดเบ™เบดเบ”เป„เบชเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบ™เป‰เบญเบ (เบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบท). เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เปเบฅเบฐโ€‹เบ—เบฒเบ‡โ€‹เป€เบฅเบทเบญเบโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบžเบฒเบโ€‹เปƒเบ•เป‰ Windows เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบžเบปเบšโ€‹เป„เบ”เป‰โ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹: *เบฎเป‰เบญเบ‡เป„เบซเป‰*.

เบกเบตเบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบชเบธเบ” (เปเบฅเบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เปเบเป‰เป„เบ‚เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ) เปเบกเปˆเบ™เบ•เบปเบเป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒ เบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญ. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบงเปˆเบฒเบ„เปเบฒเป€เบ•เบทเบญเบ™เปƒเบซเบกเปˆเบšเปเปˆเป„เบ”เป‰เบชเบนเบ™เป€เบชเบเป„เบ›เปƒเบ™เบšเบฑเบ™เบ”เบฒเบชเบดเปˆเบ‡เป€เบเบปเปˆเบฒ. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบœเบนเป‰เบŠเปˆเบงเบเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก, เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เปเบกเบ‡เป„เบกเป‰. ๐Ÿ™‚

1. เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”

เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเป„เบ”เป‰เบฎเบนเป‰เบˆเบฑเบ, เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐ configure plugins เปเบฅเบฐเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบ™ CI. เบญเบฑเบ™เบ™เบตเป‰เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเป€เบฅเบตเปˆเบกเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบงเปˆเบฒเบœเบนเป‰เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบญเบฒเบ”เบˆเบฐเบฅเบทเบกเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบซเบผเบทเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบšเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฒเบ‚เบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบปเปˆเบงเป„เบ›.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบฎเบฝเบ™เบฎเบนเป‰เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰:

  • เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปƒเบ”เบ—เบตเปˆเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเบฐเบซเบ™เบญเบ‡;
  • เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบฅเบฐเบšเบปเบšเบเบฒเบ™เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบšเป?

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปเบšเบšเบšเปเปˆเบกเบต, เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เปƒเบ™ เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบเบดเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเบŠเปˆเบงเบเบ—เปˆเบฒเบ™. ๐Ÿ™‚

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบฎเบปเบฒเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡ (CI). เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปƒเบ”เป†เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบžเบงเบเบกเบฑเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปƒเบ™เบ—เปเปˆ, เป€เบŠเบดเปˆเบ‡เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปเบกเปˆเบ™เบ•เบฑเป‰เบ‡เบขเบนเปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบซเบ™เปˆเบงเบเบ‡เบฒเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰ console เบ•เปˆเบฒเบ‡เป†. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, PVS-Studio เบชเบฐเบซเบ™เบญเบ‡เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • PVS-Studio_Cmd.exe (เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹, เป‚เบ„เบ‡โ€‹เบเบฒเบ™ C#โ€‹, C ++ เปƒเบ™ Windowsโ€‹)
  • CLMonitor.exe (เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบเบฒเบ™โ€‹เบชเบฑเบ‡โ€‹เบฅเบงเบกโ€‹)
  • pvs-studio-analyzer (เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป‚เบ„เบ‡เบเบฒเบ™ C++ เปƒเบ™ Linux / macOS)
  • pvs-studio-dotnet (เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚, เป‚เบ„เบ‡เบเบฒเบ™ C# เปƒเบ™ Linux / macOS)
  • pvs-studio.jar (เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™ Javaโ€‹)
  • PlogConverter (เบฅเบฒเบเบ‡เบฒเบ™เบ•เบปเบงเปเบ›เบ‡เป„เบŸเบฅเปŒ)

เป€เบžเบทเปˆเบญเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ CI, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบชเบฒเบกเบขเปˆเบฒเบ‡:

  • เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐ;
  • เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ;
  • เบชเบปเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡ PVS-Studio เปƒเบ™ Linux (Debian-base), เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

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

เปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเปƒเบŠเป‰ Windows, เบšเปเปˆเบกเบตเบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบˆเบฒเบเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เปเบžเบฑเบเป€เบเบฑเบ”, เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบˆเบฒเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡:

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

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เบณเปƒเบŠเป‰ PVS-Studio เปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเปƒเบŠเป‰ Windows *เบ—เบตเปˆเบ™เบตเป‰*.

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเป‚เบ”เบเบเบปเบ‡. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบกเบฑเบ™เปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เป€เบฎเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป„เบ”เป‰เบœเปˆเบฒเบ™เป„เบ›. เบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบงเปˆเบฒเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเปƒเบŠเป‰เป€เบงเบฅเบฒเบชเบญเบ‡เป€เบ—เบปเปˆเบฒเป€เบ—เบปเปˆเบฒเบเบฑเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบก.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเบดเบ—เบตเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบงเบ—เบตเปเบฅเบฐเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™, เบ‚เป‰เบญเบเบˆเบฐเบชเบฐเปเบ”เบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบš 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-Studio เปเบฅเบฐเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡" (Windows) เบซเบผเบท "เบงเบดเบ—เบตเบเบฒเบ™เบ•เบฑเป‰เบ‡ PVS-Studio เปƒเบ™ Travis CI" (Linux).

เบ•เบปเบเบฅเบปเบ‡, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเปƒเบ™เป€เบŠเบตเบšเป€เบงเบตเบชเป‰เบฒเบ‡. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ–เป‰เบฒเปƒเบœเบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบญเบฑเบšเป‚เบซเบฅเบ”เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบš, เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบง, เปเบฅเบฐเบ—เปˆเบฒเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เบเบงเบ”เบžเบปเบšเบšเบฑเบ™เบซเบฒเป„เบ”เป‰, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบชเบฐเบ”เบงเบเบ—เบฑเบ‡เบซเบกเบปเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป‚เบ„เบ‡เบเบฒเบ™เบšเปเปˆเปเบกเปˆเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบชเบฒเบ‚เบฒเป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™, เปเบ•เปˆ. เบเปˆเบญเบ™เบกเบฑเบ™, เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡ A.

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡เปเบกเปˆเบ™เบšเปเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเปˆเบฝเบงเบเบฑเบš CI. เบเบปเบเป€เบงเบฑเป‰เบ™เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบฒเบ‚เบฒเป‚เบ”เบเปƒเบŠเป‰ git:

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

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบœเปˆเบฒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ™เบตเป‰เบเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™ PVS-Studio เบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เบ—เบธเบ‡ -S:

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

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบฎเบนเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡ *เบ—เบตเปˆเบ™เบตเป‰*. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ CI เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบšเปเปˆเบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบก, เบ—เปˆเบฒเบ™เบˆเบฐเบžเบปเบšเป€เบซเบฑเบ™เบžเบฒเบเบชเปˆเบงเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบญเบธเบ—เบดเบ”เปƒเบซเป‰เบเบฑเบšเบ—เบดเบ”เบชเบฐเบ”เบตเบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ›เบฐเป€เบžเบ”เบ™เบตเป‰เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”.

เป‚เบ”เบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ”เบถเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบฑเบ™ commits เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ„เปเบฒเป€เบ•เบทเบญเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบฅเบฐเบซเบฑเบ” untested เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ‚เป‰เบฒเบกเป„เบ”เป‰.

เบ™เบตเป‰เปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบ™เปˆเบ™เบญเบ™เบ—เบตเปˆเบ”เบต, เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบขเบฒเบเบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ„เปเบฒเป€เบ•เบทเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ”เบฝเบง. เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”, เปเบ•เปˆเบเบฑเบ‡เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบซเบผเบทเบˆเบฒเบเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบกเบตเบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐ plugins เบ•เปˆเบฒเบ‡เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰. PVS-Studio, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบต plugin เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบš SonarQube.

2. เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ›เบฐเบˆเปเบฒเบงเบฑเบ™. เป‚เบ”เบเบˆเบธเบ”เบ™เบตเป‰, เบ—เปˆเบฒเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบชเปˆเบงเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”.

เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ—เบตเปˆเบชเบธเบ”, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ™เบตเป‰เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเปเบฅเบฐเบฅเบปเบšเบเบงเบ™เบžเบงเบเป€เบ‚เบปเบฒเบˆเบฒเบเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบ—เบธเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เบชเปเบฒเบฅเบฑเบš PVS-Studio เบกเบตเบซเบผเบฒเบ เบ—เบธเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบตเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เบชเบฐเป€เบซเบกเบต, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, Chocolatey (Windows), Homebrew (macOS) เบซเบผเบทเบซเบผเบฒเบเบชเบดเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบš Linux.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡ plugins เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡ Visual Studio, IDEA, Rider เปเบฅเบฐเบญเบทเปˆเบ™เป†

3. เปƒเบŠเป‰เบ›เบฐเบˆเปเบฒเบงเบฑเบ™

เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเป€เบงเบปเป‰เบฒเบชเบญเบ‡เบชเบฒเบกเบ„เปเบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบˆเบฐเป€เบฅเบฑเปˆเบ‡เป€เบ„เบทเปˆเบญเบ‡เบงเบดเป€เบ„เบฒเบฐเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เปƒเบŠเป‰เบ›เบฐเบˆเปเบฒเบงเบฑเบ™. เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เบปเบšเบ–เป‰เบงเบ™เบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบ, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบฑเบเบˆเบฐเบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ”เบ•เบฐเบซเบผเบญเบ”เป‚เบ„เบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบง? เบšเปเปˆเบ„เปˆเบญเบเบกเบต refactoring เบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบžเบทเป‰เบ™เบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”. เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™เบšเปเปˆเบ„เปˆเบญเบเบˆเบฐเป€เบเบตเบ™เบญเบฒเบเปเบเบฑเบช, เบชเบฐเบ™เบฑเป‰เบ™เบกเบฑเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเบˆเบฐเบงเบดเป€เบ„เบฒเบฐเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบกเบต เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เป€เบžเบตเปˆเบกโ€‹เบ‚เบถเป‰เบ™โ€‹. เบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเบ•เป‰เบญเบ‡เบ•เบปเบเปƒเบˆ, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบญเบทเปˆเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เป‚เบซเบกเบ”เบžเบดเป€เบชเบ”เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบงเบดเป€เบ„เบฒเบฐเบžเบฝเบ‡เปเบ•เปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เบกเบฑเบ™, เปเบฅเบฐเบ™เบตเป‰เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™ IDE เบเบฑเบš plugin เบ•เบดเบ”เบ•เบฑเป‰เบ‡.

เบ–เป‰เบฒเบ™เบฑเบเบงเบดเป€เบ„เบฒเบฐเบเบงเบ”เบžเบปเบšเบšเบฑเบ™เบซเบฒเปƒเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰, เบกเบฑเบ™เบˆเบฐเบฅเบฒเบเบ‡เบฒเบ™เบ™เบตเป‰เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, PVS-Studio เบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เปเบˆเป‰เบ‡เป€เบ•เบทเบญเบ™:

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ - เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡
เปเบ™เปˆเบ™เบญเบ™, เบเบฒเบ™เบšเบญเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบซเป‰เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเปเบกเปˆเบ™เบšเปเปˆเบžเบฝเบ‡เบžเป. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡ somehow เบšเบญเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เปเบกเปˆเบ™โ€‹เบซเบเบฑเบ‡โ€‹เปเบฅเบฐโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™. เบ—เบตเปˆเบ™เบตเป‰, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบšเบปเบ”เบ„เบงเบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบงเบชเปเบฒเบฅเบฑเบš PVS-Studio, เปเบ•เปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒ tutorials เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™:

เบšเบปเบ”เบ„เบงเบฒเบกเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ›เบฐเบˆเปเบฒเบงเบฑเบ™เปเบฅเบฐเบšเปเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบ. ๐Ÿ™‚

เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฎเบนเป‰เบˆเบฑเบเป€เบ„เบทเปˆเบญเบ‡เบกเบท, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบซเบผเบฒเบเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเปเบกเปˆเบ™เบšเปเปˆเบชเบปเบกเบšเบนเบ™เปเบšเบš, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบซเป‰เบœเบปเบ™เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบžเบงเบเบกเบฑเบ™;

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ - เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡
เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบซเบผเบฒเบเบเปˆเบงเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™เบžเบงเบเป€เบ‚เบปเบฒ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฒเบเบ‡เบฒเบ™เบšเบฑเบ™เบซเบฒเป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™. เบ–เป‰เบฒเบ—เบฒเบ‡เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเปเบเป‰เป„เบ‚เป„เบ”เป‰, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเปเบ•เปˆเบฅเบฐเบ„เบฑเป‰เบ‡เบกเบตเบœเบปเบ™เบšเบงเบเบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบซเบ™เป‰เบญเบเบฅเบปเบ‡เบชเบฐเป€เบžเบฒเบฐเบเบฑเบšเบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบœเปˆเบฒเบ™เบ—เบธเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เบฅเบงเบกเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ static เป€เบ‚เบปเป‰เบฒเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปƒเบ™ CI, เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบกเปˆเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เบ™เบฑเบเบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”เบšเปเปˆเปเบกเปˆเบ™เบœเบนเป‰เบžเบดเบžเบฒเบเบชเบฒเบ—เบตเปˆเบšเบญเบเบงเปˆเบฒเบšเบฒเบ‡เบšเปˆเบญเบ™เบขเบนเปˆเป„เบเบˆเบฒเบเป€เบˆเบปเป‰เบฒเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบšเปเปˆเบ”เบต. เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบกเบฑเบ™เป€เบ›เบฑเบ™เบœเบนเป‰เบŠเปˆเบงเบเบ—เบตเปˆเบšเบญเบเป€เบˆเบปเป‰เบฒเบงเปˆเบฒเป€เบˆเบปเป‰เบฒเป€เบกเบทเปˆเบญเบเปเบฅเบฐเป€เบ•เบทเบญเบ™เป€เบˆเบปเป‰เบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฅเบทเบกเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡.

เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด, เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบ„เบปเบ‡เบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบกเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบกเปˆเบ™เบšเปเปˆเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เปƒเบ™เบเบฒเบ™เบŠเบญเบเบซเบฒเบชเปˆเบงเบ™เบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™เปเบฅเบฐเบ‚เบฑเบ”เปเบเป‰เบ‡เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”, เปเบ•เปˆเปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบ•เบปเบเบฅเบปเบ‡เป€เบซเบฑเบ™เบ”เบตเบงเปˆเบฒเบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบšเบšเบฑเบ™เบซเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ–เบทเบเบชเบปเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเบžเปเปƒเบˆ, เปเบ•เปˆเบเบฑเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบ. เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ, เป€เบกเบทเปˆเบญเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด, เป€เบšเบดเปˆเบ‡เบ—เบธเบเป†เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบฅเบฒเบเบ‡เบฒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ‡เป„เบชเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบฅเบฐเบซเบฑเบ”.

เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบซเบผเบทเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเบฑเบ‡เบšเปเปˆเปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เบ„เบธเป‰เบกเบ„เปˆเบฒเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฅเบตเปˆเบกเบญเปˆเบฒเบ™เบšเบปเบ”เบ„เบงเบฒเบก "เป€เบซเบ”เบœเบปเบ™เบ—เบตเปˆเบˆเบฐเปเบ™เบฐเบ™เปเบฒเบ•เบปเบงเบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบฑเบ”เบชเบฐเบ–เบดเบ” PVS-Studio เป€เบ‚เบปเป‰เบฒเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ". เบกเบฑเบ™เปเบเป‰เป„เบ‚เบ„เบงเบฒเบกเบเบฑเบ‡เบงเบปเบ™เบ›เบปเบเบเบฐเบ•เบดเบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบงเปˆเบฒเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ static เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปเบฅเบฐเบญเบทเปˆเบ™เป†.

เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ - เบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบเบฑเบšเบœเบนเป‰เบŠเบปเบกเบ—เบตเปˆเป€เบงเบปเป‰เบฒเบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”, เบเบฐเบฅเบธเบ™เบฒเปƒเบŠเป‰เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฒเบ™เปเบ›เบžเบฒเบชเบฒ: Maxim Zvyagintsev. เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ: เบˆเบฒเบเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™