ื ื™ืชื•ื— ืกื˜ื˜ื™ - ืžื”ืงื“ืžื” ืœืื™ื ื˜ื’ืจืฆื™ื”

ืขื™ื™ืฃ ืžืกืงื™ืจืช ืงื•ื“ ืื™ื ืกื•ืคื™ืช ืื• ื ื™ืคื•ื™ ื‘ืื’ื™ื, ืœืคืขืžื™ื ืืชื” ื—ื•ืฉื‘ ืื™ืš ืœืคืฉื˜ ืืช ื”ื—ื™ื™ื ืฉืœืš. ื•ืื—ืจื™ ื—ื™ืคื•ืฉ ืงื˜ืŸ, ืื• ื‘ืžืงืจื” ื‘ื• ื ืชืงืœืชื ื‘ื•, ืชื•ื›ืœื• ืœืจืื•ืช ืืช ืžืฉืคื˜ ื”ืงืกื: "ื ื™ืชื•ื— ืกื˜ื˜ื™". ื‘ื•ื ื ืจืื” ืžื” ื–ื” ื•ืื™ืš ื–ื” ื™ื›ื•ืœ ืœืงื™ื™ื ืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืคืจื•ื™ืงื˜ ืฉืœืš.

ื ื™ืชื•ื— ืกื˜ื˜ื™ - ืžื”ืงื“ืžื” ืœืื™ื ื˜ื’ืจืฆื™ื”
ืœืžืขืฉื”, ืื ืืชื” ื›ื•ืชื‘ ื‘ืฉืคื” ืžื•ื“ืจื ื™ืช ื›ืœืฉื”ื™, ืื–, ืืคื™ืœื• ื‘ืœื™ ืฉืฉืžืช ืœื‘, ื”ืจืฆืช ืืช ื–ื” ื“ืจืš ืžื ืชื— ืกื˜ื˜ื™. ื”ืขื•ื‘ื“ื” ื”ื™ื ืฉื›ืœ ืžื”ื“ืจ ืžื•ื“ืจื ื™ ืžืกืคืง, ื’ื ืื ืงื‘ื•ืฆื” ื–ืขื™ืจื”, ืฉืœ ืื–ื”ืจื•ืช ืœื’ื‘ื™ ื‘ืขื™ื•ืช ืคื•ื˜ื ืฆื™ืืœื™ื•ืช ื‘ืงื•ื“. ืœื“ื•ื’ืžื”, ื‘ืขืช ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ ืงื•ื“ C++ ื‘-Visual Studio, ื™ื™ืชื›ืŸ ืฉืชืจืื” ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื:

ื ื™ืชื•ื— ืกื˜ื˜ื™ - ืžื”ืงื“ืžื” ืœืื™ื ื˜ื’ืจืฆื™ื”
ื‘ืคืœื˜ ื–ื” ืื ื• ืจื•ืื™ื ืฉื”ืžืฉืชื ื” ื”ื™ื” ืžืขื•ืœื ืœื ื”ื™ื” ื‘ืฉื™ืžื•ืฉ ื‘ืฉื•ื ืžืงื•ื ื‘ืคื•ื ืงืฆื™ื”. ืื– ื‘ืžืฆื™ืื•ืช, ื›ืžืขื˜ ืชืžื™ื“ ื”ืฉืชืžืฉืช ื‘ืžื ืชื— ืงื•ื“ ืกื˜ื˜ื™ ืคืฉื•ื˜. ืขื ื–ืืช, ืฉืœื ื›ืžื• ืžื ืชื—ื™ื ืžืงืฆื•ืขื™ื™ื ื›ื’ื•ืŸ Coverity, Klocwork ืื• PVS-Studio, ื”ืื–ื”ืจื•ืช ืฉืžืกืคืง ื”ืžื”ื“ืจ ืขืฉื•ื™ื•ืช ืœื”ืฆื‘ื™ืข ืจืง ืขืœ ืžื’ื•ื•ืŸ ืงื˜ืŸ ืฉืœ ื‘ืขื™ื•ืช.

ืื ืื™ื ืš ื™ื•ื“ืข ื‘ื•ื•ื“ืื•ืช ืžื”ื• ื ื™ืชื•ื— ืกื˜ื˜ื™ ื•ื›ื™ืฆื“ ืœื™ื™ืฉื ืื•ืชื•, ืœืงืจื•ื ืืช ื”ืžืืžืจ ื”ื–ื”ื›ื“ื™ ืœืœืžื•ื“ ืขื•ื“ ืขืœ ืžืชื•ื“ื•ืœื•ื’ื™ื” ื–ื•.

ืœืžื” ืืชื” ืฆืจื™ืš ื ื™ืชื•ื— ืกื˜ื˜ื™?

ื‘ืงืฆืจื”: ื”ืืฆื” ื•ืคื™ืฉื•ื˜.

ื ื™ืชื•ื— ืกื˜ื˜ื™ ืžืืคืฉืจ ืœืš ืœืžืฆื•ื ื”ืจื‘ื” ื‘ืขื™ื•ืช ืฉื•ื ื•ืช ื‘ืงื•ื“: ืžืฉื™ืžื•ืฉ ืœื ื ื›ื•ืŸ ื‘ื‘ื ื™ื™ืช ืฉืคื” ื•ืขื“ ืœืฉื’ื™ืื•ืช ื”ืงืœื“ื”. ืœืžืฉืœ, ื‘ืžืงื•ื

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. ื”ื™ื›ืจื•ืช ืขื ื”ื›ืœื™

ื”ื›ืœ ืžืชื—ื™ืœ ื‘ื’ืจืกืช ื ื™ืกื™ื•ืŸ. ืื›ืŸ, ืงืฉื” ืœื”ื—ืœื™ื˜ ืœื”ื›ื ื™ืก ืžืฉื”ื• ืœืชื”ืœื™ืš ื”ืคื™ืชื•ื— ืื ืžืขื•ืœื ืœื ืจืื™ืช ืืช ื”ื›ืœื™ ื—ื™ ืœืคื ื™ ื›ืŸ. ืœื›ืŸ, ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืขืœื™ืš ืœืขืฉื•ืช ื”ื•ื ืœื”ื•ืจื™ื“ ื’ืจืกืช ื ืกื™ื•ืŸ.

ืžื” ืชืœืžื“ื• ื‘ืฉืœื‘ ื–ื”:

  • ืžื”ืŸ ื”ื“ืจื›ื™ื ืœืื™ื ื˜ืจืืงืฆื™ื” ืขื ื”ืžื ืชื—;
  • ื”ืื ื”ืžื ืชื— ืชื•ืื ืœืกื‘ื™ื‘ืช ื”ืคื™ืชื•ื— ืฉืœืš?
  • ืื™ืœื• ื‘ืขื™ื•ืช ื™ืฉ ื›ืจื’ืข ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœืš?

ืœืื—ืจ ืฉื”ืชืงื ืช ืืช ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš, ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ื”ื•ื ืœื”ืคืขื™ืœ ื ื™ืชื•ื— ืฉืœ ื›ืœ ื”ืคืจื•ื™ืงื˜ (Windows, ืœื™ื ื•ืงืก, MacOS). ื‘ืžืงืจื” ืฉืœ PVS-Studio ื‘-Visual Studio ืชืจืื” ืชืžื•ื ื” ื“ื•ืžื” (ื ื™ืชืŸ ืœืœื—ื•ืฅ):

ื ื™ืชื•ื— ืกื˜ื˜ื™ - ืžื”ืงื“ืžื” ืœืื™ื ื˜ื’ืจืฆื™ื”
ื”ืขื•ื‘ื“ื” ื”ื™ื ื›ื™ ืžื ืชื—ื™ื ืกื˜ื˜ื™ื™ื ื‘ื“ืจืš ื›ืœืœ ืžื•ืฆื™ืื™ื ืžืกืคืจ ืขืฆื•ื ืฉืœ ืื–ื”ืจื•ืช ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ื™ื ืขื ื‘ืกื™ืก ืงื•ื“ ื’ื“ื•ืœ. ืื™ืŸ ืฆื•ืจืš ืœืชืงืŸ ืืช ื›ื•ืœื, ืžื›ื™ื•ื•ืŸ ืฉื”ืคืจื•ื™ืงื˜ ืฉืœืš ื›ื‘ืจ ืขื•ื‘ื“, ืžื” ืฉืื•ืžืจ ืฉื‘ืขื™ื•ืช ืืœื• ืื™ื ืŸ ืงืจื™ื˜ื™ื•ืช. ืขื ื–ืืช, ืืชื” ืืชื” ื™ื›ื•ืœ ืœื”ืกืชื›ืœ ืขืœ ื”ืื–ื”ืจื•ืช ื”ืžืขื ื™ื™ื ื•ืช ื‘ื™ื•ืชืจ ื•ืœืชืงืŸ ืื•ืชื ื‘ืžื™ื“ืช ื”ืฆื•ืจืš. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืืชื” ืฆืจื™ืš ืœืกื ืŸ ืืช ื”ืคืœื˜ ื•ืœื”ืฉืื™ืจ ืจืง ืืช ื”ื”ื•ื“ืขื•ืช ื”ืืžื™ื ื•ืช ื‘ื™ื•ืชืจ. ื‘ืชื•ืกืฃ PVS-Studio ืขื‘ื•ืจ Visual Studio, ื–ื” ื ืขืฉื” ืขืœ ื™ื“ื™ ืกื™ื ื•ืŸ ืœืคื™ ืจืžื•ืช ืฉื’ื™ืื” ื•ืงื˜ื’ื•ืจื™ื•ืช. ืœืงื‘ืœืช ื”ืคืœื˜ ื”ืžื“ื•ื™ืง ื‘ื™ื•ืชืจ, ื”ืฉืืจ ื‘ืœื‘ื“ ื’ึธื‘ื•ึนื”ึท ะธ ื›ืœืœื™ (ื ื™ืชืŸ ืœืœื—ื•ืฅ ื’ื):

ื ื™ืชื•ื— ืกื˜ื˜ื™ - ืžื”ืงื“ืžื” ืœืื™ื ื˜ื’ืจืฆื™ื”
ื•ืื›ืŸ, 178 ืื–ื”ืจื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ืงืœื•ืช ืœืฆืคื™ื™ื” ืžืืฉืจ ื›ืžื” ืืœืคื™...

ื‘ื›ืจื˜ื™ืกื™ื•ืช ื‘ื™ื ื•ื ื™ ะธ ื ืžื•ืš ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื™ืฉ ืื–ื”ืจื•ืช ื˜ื•ื‘ื•ืช, ืื‘ืœ ืงื˜ื’ื•ืจื™ื•ืช ืืœื” ื›ื•ืœืœื•ืช ืืช ื”ืื‘ื—ื•ื ื™ื ืฉื™ืฉ ืœื”ื ืคื—ื•ืช ื“ื™ื•ืง (ืžื”ื™ืžื ื•ืช). ืžื™ื“ืข ื ื•ืกืฃ ืขืœ ืจืžื•ืช ืื–ื”ืจื” ื•ืืคืฉืจื•ื™ื•ืช ืœืขื‘ื•ื“ื” ืชื—ืช Windows ื ื™ืชืŸ ืœืžืฆื•ื ื›ืืŸ: *ืœื—ืฅ ืขืœ*.

ืœืื—ืจ ืฉื‘ื“ืงืชื™ ื‘ื”ืฆืœื—ื” ืืช ื”ืฉื’ื™ืื•ืช ื”ืžืขื ื™ื™ื ื•ืช ื‘ื™ื•ืชืจ (ื•ืชื™ืงื ื• ืื•ืชืŸ ื‘ื”ืฆืœื—ื”) ืฉื•ื•ื” ืœื“ื›ื ืืช ื™ืชืจ ื”ืื–ื”ืจื•ืช. ื–ื” ื”ื›ืจื—ื™ ื›ื“ื™ ืฉืื–ื”ืจื•ืช ื—ื“ืฉื•ืช ืœื ื™ืœื›ื• ืœืื™ื‘ื•ื“ ื‘ื™ืŸ ื”ื™ืฉื ื•ืช. ื‘ื ื•ืกืฃ, ืžื ืชื— ืกื˜ื˜ื™ ื”ื•ื ืขื•ื–ืจ ืœืžืชื›ื ืช, ื•ืœื ืจืฉื™ืžื” ืฉืœ ื‘ืื’ื™ื. ๐Ÿ™‚

1. ืื•ื˜ื•ืžืฆื™ื”

ืœืื—ืจ ื”ื™ื›ืจื•ืช, ื”ื’ื™ืข ื”ื–ืžืŸ ืœื”ื’ื“ื™ืจ ืชื•ืกืคื™ื ื•ืœื”ืฉืชืœื‘ ื‘-CI. ื–ื” ื—ื™ื™ื‘ ืœื”ื™ืขืฉื•ืช ืœืคื ื™ ืฉืžืชื›ื ืชื™ื ืžืชื—ื™ืœื™ื ืœื”ืฉืชืžืฉ ื‘ื ืชื— ื”ืกื˜ื˜ื™. ื”ืขื•ื‘ื“ื” ื”ื™ื ืฉื”ืžืชื›ื ืช ืขืฉื•ื™ ืœืฉื›ื•ื— ืœืืคืฉืจ ื ื™ืชื•ื— ืื• ืœื ืœืจืฆื•ืช ืœืขืฉื•ืช ื–ืืช ื›ืœืœ. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืขืœื™ืš ืœื‘ืฆืข ื‘ื“ื™ืงื” ืกื•ืคื™ืช ืฉืœ ื”ื›ืœ ื›ื“ื™ ืฉืงื•ื“ ืœื ื ื‘ื“ืง ืœื ื™ื•ื›ืœ ืœื”ื™ื›ื ืก ืœืขื ืฃ ื”ืคื™ืชื•ื— ื”ื›ืœืœื™.

ืžื” ืชืœืžื“ื• ื‘ืฉืœื‘ ื–ื”:

  • ืื™ืœื• ืืคืฉืจื•ื™ื•ืช ืื•ื˜ื•ืžืฆื™ื” ืžืกืคืง ื”ื›ืœื™;
  • ื”ืื ื”ืžื ืชื— ืชื•ืื ืœืžืขืจื›ืช ื”ื”ืจื›ื‘ื” ืฉืœืš?

ืžื›ื™ื•ื•ืŸ ืฉืœื ืงื™ื™ื ืชื™ืขื•ื“ ืžื•ืฉืœื, ืœืคืขืžื™ื ืฆืจื™ืš ืœื›ืชื•ื‘ ืชืžื™ื›ื”. ื–ื” ื ื•ืจืžืœื™ ื•ืื ื• ืฉืžื—ื™ื ืœืขื–ื•ืจ ืœืš. ๐Ÿ™‚

ื›ืขืช ื ืขื‘ื•ืจ ืœืฉื™ืจื•ืชื™ ืื™ื ื˜ื’ืจืฆื™ื” ืžืชืžืฉื›ืช (CI). ื ื™ืชืŸ ืœื”ื˜ืžื™ืข ื‘ื”ื ื›ืœ ืžื ืชื— ืœืœื ื‘ืขื™ื•ืช ืจืฆื™ื ื™ื•ืช. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ืืชื” ืฆืจื™ืš ืœื™ืฆื•ืจ ืฉืœื‘ ื ืคืจื“ ื‘ืฆื ืจืช, ืฉื‘ื“ืจืš ื›ืœืœ ืžืžื•ืงื ืœืื—ืจ ื‘ื“ื™ืงื•ืช ื”ื‘ื ื™ื™ื” ื•ื”ื™ื—ื™ื“ื”. ื–ื” ื ืขืฉื” ื‘ืืžืฆืขื•ืช ื›ืœื™ ืขื–ืจ ืฉื•ื ื™ื ืœืžืกื•ืฃ. ืœื“ื•ื’ืžื”, 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 ืขืœ ืœื™ื ื•ืงืก (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" (ืœื™ื ื•ืงืก).

ืื•ืงื™ื™, ื”ื’ื“ืจืช ืืช ื”ื ืชื— ื‘ืฉืจืช ื”-build. ื›ืขืช, ืื ืžื™ืฉื”ื• ื”ืขืœื” ืงื•ื“ ืœื ื ื‘ื“ืง, ืฉืœื‘ ื”ืื™ืžื•ืช ื™ื™ื›ืฉืœ, ื•ืชื•ื›ืœื• ืœื–ื”ื•ืช ืืช ื”ื‘ืขื™ื”, ืื•ืœื ื–ื” ืœื ืœื’ืžืจื™ ื ื•ื—, ืฉื›ืŸ ื™ื•ืชืจ ื™ืขื™ืœ ืœื‘ื“ื•ืง ืืช ื”ืคืจื•ื™ืงื˜ ืœื ืœืื—ืจ ืžื™ื–ื•ื’ ื”ืกื ื™ืคื™ื, ืืœื ืœืคื ื™ื•, ื‘ืฉืœื‘ ื‘ืงืฉืช ื”ืžืฉื™ื›ื”. ื.

ื‘ืื•ืคืŸ ื›ืœืœื™, ื”ื’ื“ืจืช ื ื™ืชื•ื— ื‘ืงืฉืช ืžืฉื™ื›ื” ืื™ื ื” ืฉื•ื ื” ื‘ื”ืจื‘ื” ืžื”ื”ืฉืงื” ื”ืจื’ื™ืœื” ืฉืœ ื ื™ืชื•ื— ืขืœ 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 ื”ืžื›ื™ืœื•ืช ืื–ื”ืจื•ืช, ื•ื‘ื›ืš ืœื™ืฆื•ืจ ื’ื‘ื•ืœ ืฉืงื•ื“ ืœื ื ื‘ื“ืง ืœื ื™ื›ื•ืœ ืœื—ืฆื•ืช.

ื›ืœ ื–ื” ื‘ื”ื—ืœื˜ ื˜ื•ื‘, ืื‘ืœ ื”ื™ื™ืชื™ ืจื•ืฆื” ืœืจืื•ืช ืืช ื›ืœ ื”ืื–ื”ืจื•ืช ื‘ืžืงื•ื ืื—ื“. ืœื ืจืง ืžื”ื ืชื— ื”ืกื˜ื˜ื™, ืืœื ื’ื ืžื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ืื• ืžื”ื ืชื— ื”ื“ื™ื ืžื™. ื™ืฉื ื ืฉื™ืจื•ืชื™ื ื•ืชื•ืกืคื™ื ืฉื•ื ื™ื ืœื›ืš. ืœ-PVS-Studio, ืœืžืฉืœ, ื™ืฉ ืชื•ืกืฃ ืœืฉื™ืœื•ื‘ ื‘- SonarQube.

2. ืื™ื ื˜ื’ืจืฆื™ื” ืขืœ ืžื›ื•ื ื•ืช ืžืคืชื—ื™ื

ืขื›ืฉื™ื• ื”ื’ื™ืข ื”ื–ืžืŸ ืœื”ืชืงื™ืŸ ื•ืœื”ื’ื“ื™ืจ ืืช ื”ื ืชื— ืœืฉื™ืžื•ืฉ ื™ื•ืžื™ื•ืžื™ ื‘ืคื™ืชื•ื—. ื‘ืฉืœื‘ ื–ื” ื›ื‘ืจ ื”ื›ืจืชื ืืช ืจื•ื‘ ื“ืจื›ื™ ื”ืขื‘ื•ื“ื”, ืื– ืืคืฉืจ ืœืงืจื•ื ืœื–ื” ื”ื—ืœืง ื”ืงืœ ื‘ื™ื•ืชืจ.

ื›ืืคืฉืจื•ืช ื”ืคืฉื•ื˜ื” ื‘ื™ื•ืชืจ, ืžืคืชื—ื™ื ื™ื›ื•ืœื™ื ืœื”ืชืงื™ืŸ ืืช ื”ืžื ืชื— ื”ื“ืจื•ืฉ ื‘ืขืฆืžื. ืขื ื–ืืช, ื–ื” ื™ื™ืงื— ื”ืจื‘ื” ื–ืžืŸ ื•ื™ืกื™ื˜ ืืช ื“ืขืชื ืžื”ืคื™ืชื•ื—, ื›ืš ืฉืชื•ื›ืœ ืœื”ืคื•ืš ืืช ื”ืชื”ืœื™ืš ื”ื–ื” ืœืื•ื˜ื•ืžื˜ื™ ื‘ืืžืฆืขื•ืช ืžืชืงื™ืŸ ื•ื”ื“ื’ืœื™ื ื”ื“ืจื•ืฉื™ื. ืขื‘ื•ืจ PVS-Studio ื™ืฉื ื ืฉื•ื ื™ื ื“ื’ืœื™ื ืœื”ืชืงื ื” ืื•ื˜ื•ืžื˜ื™ืช. ืขื ื–ืืช, ืชืžื™ื“ ื™ืฉ ืžื ื”ืœื™ ื—ื‘ื™ืœื•ืช, ืœืžืฉืœ, Chocolatey (Windows), Homebrew (macOS) ืื• ืขืฉืจื•ืช ืืคืฉืจื•ื™ื•ืช ืขื‘ื•ืจ ืœื™ื ื•ืงืก.

ืœืื—ืจ ืžื›ืŸ ืชืฆื˜ืจืš ืœื”ืชืงื™ืŸ ืืช ื”ืชื•ืกืคื™ื ื”ื“ืจื•ืฉื™ื, ืœืžืฉืœ ืขื‘ื•ืจ ืฉืœ Visual Studio, IDEA, ืจื•ื›ื‘ ื•ื›ื• '

3. ืฉื™ืžื•ืฉ ื™ื•ืžื™ื•ืžื™

ื‘ืฉืœื‘ ื–ื”, ื–ื” ื”ื–ืžืŸ ืœื•ืžืจ ื›ืžื” ืžื™ืœื™ื ืขืœ ื“ืจื›ื™ื ืœื”ืื™ืฅ ืืช ื”ื ืชื— ื‘ืžื”ืœืš ื”ืฉื™ืžื•ืฉ ื”ื™ื•ืžื™ื•ืžื™. ื ื™ืชื•ื— ืžืœื ืฉืœ ื”ืคืจื•ื™ืงื˜ ื›ื•ืœื• ืœื•ืงื— ื”ืจื‘ื” ื–ืžืŸ, ืื‘ืœ ื‘ืื™ื–ื• ืชื“ื™ืจื•ืช ืื ื—ื ื• ืžืฉื ื™ื ืงื•ื“ ืœืื•ืจืš ื›ืœ ื”ืคืจื•ื™ืงื˜ ื‘ื‘ืช ืื—ืช? ืื™ืŸ ื›ืžืขื˜ ื—ื™ืœื•ืฃ ื—ื•ืžืจื™ื ื›ืœ ื›ืš ื’ื“ื•ืœ ืฉื”ื•ื ื™ืฉืคื™ืข ืžื™ื“ ืขืœ ื›ืœ ื‘ืกื™ืก ื”ืงื•ื“. ืžืกืคืจ ื”ืงื‘ืฆื™ื ื”ืžืฉืชื ื™ื ื‘ื•-ื–ืžื ื™ืช ืจืง ืœืขืชื™ื ืจื—ื•ืงื•ืช ืขื•ืœื” ืขืœ ืชืจื™ืกืจ, ื•ืœื›ืŸ ื”ื’ื™ื•ื ื™ ืœื ืชื— ืื•ืชื. ืœืžืฆื‘ ื›ื–ื” ื™ืฉ ืžืฆื‘ ื ื™ืชื•ื— ืžืฆื˜ื‘ืจ. ืจืง ืืœ ืชื™ื‘ื”ืœ, ื–ื” ืœื ืขื•ื“ ื›ืœื™. ื–ื”ื• ืžืฆื‘ ืžื™ื•ื—ื“ ื”ืžืืคืฉืจ ืœื ืชื— ืจืง ืงื‘ืฆื™ื ืฉื”ืฉืชื ื• ื•ื”ืชืœื•ืช ืฉืœื”ื, ื•ื–ื” ืงื•ืจื” ืื•ื˜ื•ืžื˜ื™ืช ืœืื—ืจ ื”ื‘ื ื™ื™ื” ืื ืืชื” ืขื•ื‘ื“ ื‘-IDE ืขื ื”ืชื•ืกืฃ ืžื•ืชืงืŸ.

ืื ื”ืžื ืชื— ื™ื–ื”ื” ื‘ืขื™ื•ืช ื‘ืงื•ื“ ืฉื”ืฉืชื ื” ืœืื—ืจื•ื ื”, ื”ื•ื ื™ื“ื•ื•ื— ืขืœ ื›ืš ื‘ืื•ืคืŸ ืขืฆืžืื™. ืœื“ื•ื’ืžื”, PVS-Studio ื™ืกืคืจ ืœืš ืขืœ ื›ืš ื‘ืืžืฆืขื•ืช ื”ืชืจืื”:

ื ื™ืชื•ื— ืกื˜ื˜ื™ - ืžื”ืงื“ืžื” ืœืื™ื ื˜ื’ืจืฆื™ื”
ื›ืžื•ื‘ืŸ, ื–ื” ืœื ืžืกืคื™ืง ืœื”ื’ื™ื“ ืœืžืคืชื—ื™ื ืœื”ืฉืชืžืฉ ื‘ื›ืœื™. ืื ื—ื ื• ืฆืจื™ื›ื™ื ืื™ื›ืฉื”ื• ืœืกืคืจ ืœื”ื ืžื” ื–ื” ื•ืื™ืš ื–ื”. ื”ื ื”, ืœืžืฉืœ, ืžืืžืจื™ื ืขืœ ื”ืชื—ืœื” ืžื”ื™ืจื” ืขื‘ื•ืจ PVS-Studio, ืื‘ืœ ืืชื” ื™ื›ื•ืœ ืœืžืฆื•ื ื”ื“ืจื›ื•ืช ื“ื•ืžื•ืช ืœื›ืœ ื›ืœื™ ืฉืืชื” ืžืขื“ื™ืฃ:

ืžืืžืจื™ื ื›ืืœื” ืžืกืคืงื™ื ืืช ื›ืœ ื”ืžื™ื“ืข ื”ื“ืจื•ืฉ ืœืฉื™ืžื•ืฉ ื™ื•ืžื™ื•ืžื™ ื•ืื™ื ื ืœื•ืงื—ื™ื ื”ืจื‘ื” ื–ืžืŸ. ๐Ÿ™‚

ืขื•ื“ ื‘ืฉืœื‘ ื”ื”ื™ื›ืจื•ืช ืขื ื”ื›ืœื™, ื“ื™ื—ืงื ื• ื”ืจื‘ื” ืื–ื”ืจื•ืช ื‘ืื—ืช ื”ื”ืฉืงื•ืช ื”ืจืืฉื•ื ื•ืช. ืœืžืจื‘ื” ื”ืฆืขืจ, ืžื ืชื—ื™ื ืกื˜ื˜ื™ื™ื ืื™ื ื ืžื•ืฉืœืžื™ื, ื•ืœื›ืŸ ืžืขืช ืœืขืช ื”ื ื ื•ืชื ื™ื ืชื•ืฆืื•ืช ื—ื™ื•ื‘ื™ื•ืช ืฉื’ื•ื™ื•ืช. ื‘ื“ืจืš ื›ืœืœ ืงืœ ืœื“ื›ื ืื•ืชื; ืœื“ื•ื’ืžื”, ื‘ืชื•ืกืฃ PVS-Studio ืขื‘ื•ืจ Visual Studio ืืชื” ืจืง ืฆืจื™ืš ืœืœื—ื•ืฅ ืขืœ ื›ืคืชื•ืจ ืื—ื“:

ื ื™ืชื•ื— ืกื˜ื˜ื™ - ืžื”ืงื“ืžื” ืœืื™ื ื˜ื’ืจืฆื™ื”
ืขื ื–ืืช, ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ื™ื•ืชืจ ืžืืฉืจ ืจืง ืœื“ื›ื ืื•ืชื. ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืœื“ื•ื•ื— ืขืœ ื‘ืขื™ื” ืœืชืžื™ื›ื”. ืื ื ื™ืชืŸ ืœืชืงืŸ ืืช ื”-false positive, ืื– ื‘ืขื“ื›ื•ื ื™ื ืขืชื™ื“ื™ื™ื ืชื•ื›ืœื• ืœืฉื™ื ืœื‘ ืฉื‘ื›ืœ ืคืขื ื™ืฉ ืคื—ื•ืช ื•ืคื—ื•ืช ืชื•ืฆืื•ืช ืฉื’ื•ื™ื•ืช ืกืคืฆื™ืคื™ื•ืช ืœื‘ืกื™ืก ื”ืงื•ื“ ืฉืœื›ื.

ืœืื—ืจ ืื™ื ื˜ื’ืจืฆื™ื”

ืื– ืขื‘ืจื ื• ืืช ื›ืœ ื”ืฉืœื‘ื™ื ืฉืœ ืฉื™ืœื•ื‘ ื ื™ืชื•ื— ืกื˜ื˜ื™ ื‘ืชื”ืœื™ืš ื”ืคื™ืชื•ื—. ืœืžืจื•ืช ื”ื—ืฉื™ื‘ื•ืช ืฉืœ ื”ื’ื“ืจืช ื›ืœื™ื ื›ืืœื” ื‘-CI, ื”ืžืงื•ื ื”ื—ืฉื•ื‘ ื‘ื™ื•ืชืจ ืœื”ืคืขื™ืœ ืื•ืชื ื”ื•ื ื”ืžื—ืฉื‘ ืฉืœ ื”ืžืคืชื—. ืื—ืจื™ ื”ื›ืœ, ืžื ืชื— ืกื˜ื˜ื™ ื”ื•ื ืœื ืฉื•ืคื˜ ืฉืื•ืžืจ ืื™ืคืฉื”ื• ืจื—ื•ืง ืžืžืš ืฉื”ืงื•ื“ ืœื ื˜ื•ื‘. ืœื”ื™ืคืš, ื–ื” ืขื•ื–ืจ ืฉืื•ืžืจ ืœืš ืื ืืชื” ืขื™ื™ืฃ ื•ืžื–ื›ื™ืจ ืœืš ืื ืฉื›ื—ืช ืžืฉื”ื•.

ื ื›ื•ืŸ, ืœืœื ืฉื™ืžื•ืฉ ืงื‘ื•ืข, ื ื™ืชื•ื— ืกื˜ื˜ื™ ืœื ืกื‘ื™ืจ ืฉื™ืคืฉื˜ ืžืฉืžืขื•ืชื™ืช ืืช ื”ืคื™ืชื•ื—. ืื—ืจื™ ื”ื›ืœ, ื”ื™ืชืจื•ืŸ ื”ืขื™ืงืจื™ ืฉืœื• ืขื‘ื•ืจ ืžืคืชื— ื˜ืžื•ืŸ ืœื ื›ืœ ื›ืš ื‘ื—ื™ืคื•ืฉ ืื—ืจ ืงื˜ืขื™ ืงื•ื“ ืžื•ืจื›ื‘ื™ื ื•ืฉื ื•ื™ื™ื ื‘ืžื—ืœื•ืงืช, ืืœื ื‘ื–ื™ื”ื•ื™ ืžื•ืงื“ื ืฉืœื”ื. ืžืกื›ื™ื ืฉื’ื™ืœื•ื™ ื‘ืขื™ื” ืœืื—ืจ ืฉืœื™ื—ืช ื”ืขืจื™ื›ื•ืช ืœื‘ื“ื™ืงื” ื”ื•ื ืœื ืจืง ืœื ื ืขื™ื, ืืœื ื’ื ื’ื•ื–ืœ ื–ืžืŸ ืจื‘. ื ื™ืชื•ื— ืกื˜ื˜ื™, ื‘ืฉื™ืžื•ืฉ ืงื‘ื•ืข, ืžืกืชื›ืœ ืขืœ ื›ืœ ืฉื™ื ื•ื™ ื™ืฉื™ืจื•ืช ื‘ืžื—ืฉื‘ ืฉืœืš ื•ืžื“ื•ื•ื— ืขืœ ืžืงื•ืžื•ืช ื—ืฉื•ื“ื™ื ื‘ื–ืžืŸ ื”ืขื‘ื•ื“ื” ืขืœ ื”ืงื•ื“.

ื•ืื ืืชื” ืื• ื”ืงื•ืœื’ื•ืช ืฉืœืš ืขื“ื™ื™ืŸ ืœื ื‘ื˜ื•ื—ื™ื ืื ื›ื“ืื™ ืœื™ื™ืฉื ืืช ื”ื ืชื—, ืื– ืื ื™ ืžืฆื™ืข ืœืš ืœื”ืชื—ื™ืœ ืœืงืจื•ื ืืช ื”ืžืืžืจ "ืกื™ื‘ื•ืช ืœื”ื›ื ื™ืก ืืช ืžื ืชื— ื”ืงื•ื“ ื”ืกื˜ื˜ื™ PVS-Studio ืœืชื”ืœื™ืš ื”ืคื™ืชื•ื—". ื–ื” ื ื•ืชืŸ ืžืขื ื” ืœื—ืฉืฉื•ืช ื˜ื™ืคื•ืกื™ื™ื ืฉืœ ืžืคืชื—ื™ื ืฉื ื™ืชื•ื— ืกื˜ื˜ื™ ื™ื™ืงื— ืืช ื–ืžื ื ื•ื›ืŸ ื”ืœืื”.

ื ื™ืชื•ื— ืกื˜ื˜ื™ - ืžื”ืงื“ืžื” ืœืื™ื ื˜ื’ืจืฆื™ื”

ืื ืืชื” ืจื•ืฆื” ืœืฉืชืฃ ืืช ื”ืžืืžืจ ื”ื–ื” ืขื ืงื”ืœ ื“ื•ื‘ืจ ืื ื’ืœื™ืช, ืื ื ื”ืฉืชืžืฉ ื‘ืงื™ืฉื•ืจ ื”ืชืจื’ื•ื: ืžืงืกื™ื Zvyagintsev. ื ื™ืชื•ื— ืกื˜ื˜ื™: ืžื”ืชื—ืœื” ื•ืขื“ ืื™ื ื˜ื’ืจืฆื™ื”.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”