Π‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° - ΠΎΠ΄ Π²ΠΎΠ²Π΅Π΄ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π°

Π£ΠΌΠΎΡ€Π½ΠΈ ΠΎΠ΄ Π±Π΅ΡΠΊΡ€Π°Ρ˜Π½ΠΎ ΠΏΡ€Π΅Π³Π»Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Π΅Π±Π°Π³ΠΈΡ€Π°ΡšΠ΅, понСкогаш размислуватС ΠΊΠ°ΠΊΠΎ Π΄Π° си Π³ΠΎ поСдноставитС ΠΆΠΈΠ²ΠΎΡ‚ΠΎΡ‚. И ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ΠΌΠ°Π»ΠΊΡƒ ќС ΠΏΠΎΠ±Π°Ρ€Π°Ρ‚Π΅, ΠΈΠ»ΠΈ ΡΠ»ΡƒΡ‡Π°Ρ˜Π½ΠΎ ќС сС сопнСтС Π½Π° Π½Π΅Π³ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΌΠ°Π³ΠΈΡ‡Π½Π°Ρ‚Π° Ρ„Ρ€Π°Π·Π°: β€žΠ‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π°β€œ. АјдС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΡˆΡ‚ΠΎ Π΅ Ρ‚ΠΎΠ° ΠΈ ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со Π²Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° - ΠΎΠ΄ Π²ΠΎΠ²Π΅Π΄ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π°
Π’ΡΡƒΡˆΠ½ΠΎΡΡ‚, Π°ΠΊΠΎ ΠΏΠΈΡˆΡƒΠ²Π°Ρ‚Π΅ Π½Π° кој Π±ΠΈΠ»ΠΎ соврСмСн јазик, Ρ‚ΠΎΠ³Π°Ρˆ, Π±Π΅Π· Π΄Π° Π³ΠΎ сфатитС Ρ‚ΠΎΠ°, Π³ΠΎ ΠΏΠΎΠΌΠΈΠ½Π°Π²Ρ‚Π΅ ΠΏΡ€Π΅ΠΊΡƒ статичСн Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Π€Π°ΠΊΡ‚ Π΅ Π΄Π΅ΠΊΠ° сСкој ΠΌΠΎΠ΄Π΅Ρ€Π΅Π½ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°, ΠΈΠ°ΠΊΠΎ ΠΌΠ°Π», сСт Π½Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ° Π·Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΡΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ C++ Π²ΠΎ Visual Studio, ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅ слСдново:

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° - ΠΎΠ΄ Π²ΠΎΠ²Π΅Π΄ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π°
Π’ΠΎ овој ΠΈΠ·Π»Π΅Π· Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° var никогаш Π½Π΅ Π±ΠΈΠ» користСн Π½ΠΈΠΊΠ°Π΄Π΅ Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π°. Π’Π°ΠΊΠ°, Π²ΠΎ рСалноста, скоро сСкогаш користСвтС СдноставСн Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° статички ΠΊΠΎΠ΄. Π‘Π΅ΠΏΠ°ΠΊ, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ профСсионалнитС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС 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β€œ.

Ако сакатС Π΄Π° Π³ΠΈ ΠΏΡ€ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ Ρ€Π°Ρ†Π΅Ρ‚Π΅ Π²ΠΎ ΠΎΠ²Π°Π° Π³Ρ€Π΅ΡˆΠΊΠ°, ΠΎΠ±ΠΈΠ΄Π΅Ρ‚Π΅ сС со Π³ΠΎΡ‚ΠΎΠ² ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΎ Compiler Explorer: *ΠΏΠ»Π°Ρ‡Π΅*.

И ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅, Π½Π΅ Π΅ сСкогаш ΠΌΠΎΠΆΠ½ΠΎ вСднаш Π΄Π° сС ΠΎΠ±Ρ€Π½Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚Π°ΠΊΠ²ΠΈΡ‚Π΅ Π΄Π΅Π»ΠΎΠ²ΠΈ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ‚, ΠΈ ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ‚ΠΎΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сСднСтС Π΄Π° Π΄Π΅Π±Π°Π³ΠΈΡ€Π°Ρ‚Π΅ Π΄ΠΎΠ±Π°Ρ€ час, ΠΏΡ€Π°ΡˆΡƒΠ²Π°Ρ˜ΡœΠΈ сС Π·ΠΎΡˆΡ‚ΠΎ сè Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ»ΠΊΡƒ Ρ‡ΡƒΠ΄Π½ΠΎ.

Π‘Π΅ΠΏΠ°ΠΊ, ΠΎΠ²Π° Π΅ ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ Π³Ρ€Π΅ΡˆΠΊΠ°. Π¨Ρ‚ΠΎ Π°ΠΊΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΎΡ‚ напишал Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ ΠΊΠΎΠ΄ Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΠ» нСкоја суптилност Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚? Или Π΄ΡƒΡ€ΠΈ ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅? Π—Π° ΠΆΠ°Π», Π²Π°ΠΊΠ²ΠΈΡ‚Π΅ случаи сС сосСма Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΈ ΠΈ лавовскиот Π΄Π΅Π» ΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ сС Ρ‚Ρ€ΠΎΡˆΠΈ Π½Π° Π΄Π΅Π±Π°Π³ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΊΠΎΠ΄ кој содрТи ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ ΠΎΠ΄Π½Π΅ΡΡƒΠ²Π°ΡšΠ΅.

Π’ΠΎΠΊΠΌΡƒ Π·Π° ΠΎΠ²ΠΈΠ΅ ситуации сС појави статичка Π°Π½Π°Π»ΠΈΠ·Π°. Ова Π΅ асистСнт Π·Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ кој ќС посочи Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ ΠΈ ќС објасни Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·ΠΎΡˆΡ‚ΠΎ Π½Π΅ Π΅ Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΎ Π΄Π° сС ΠΏΠΈΡˆΡƒΠ²Π° Π½Π° овој Π½Π°Ρ‡ΠΈΠ½, Π΄ΠΎ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° сС ΠΏΠΎΠΏΡ€Π°Π²ΠΈ. Π•Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Π±ΠΈ ΠΌΠΎΠΆΠ΅Π»ΠΎ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π°: *ΠΏΠ»Π°Ρ‡Π΅*.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ поинтСрСсни Π³Ρ€Π΅ΡˆΠΊΠΈ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Π²ΠΎ написитС:

Π‘Π΅Π³Π° ΠΊΠΎΠ³Π° Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π²Ρ‚Π΅ овој ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΡ˜Π°Π» ΠΈ стС ΡƒΠ±Π΅Π΄Π΅Π½ΠΈ Π²ΠΎ ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈΡ‚Π΅ ΠΎΠ΄ статичката Π°Π½Π°Π»ΠΈΠ·Π°, ΠΌΠΎΠΆΠ΅Π±ΠΈ ќС сакатС Π΄Π° Π³ΠΎ испробатС. Но, ΠΎΠ΄ ΠΊΠ°Π΄Π΅ Π΄Π° сС Π·Π°ΠΏΠΎΡ‡Π½Π΅? Како Π΄Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Ρ‚Π΅ Π½ΠΎΠ²Π° Π°Π»Π°Ρ‚ΠΊΠ° Π²ΠΎ Π²Π°ΡˆΠΈΠΎΡ‚ Ρ‚Π΅ΠΊΠΎΠ²Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚? И ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ Ρ‚ΠΈΠΌΠΎΡ‚ со Π½Π΅Π³ΠΎ? ΠžΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° ΠΎΠ²ΠΈΠ΅ ΠΏΡ€Π°ΡˆΠ°ΡšΠ° ќС Π³ΠΈ Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ.

Π—Π°Π±Π΅Π»Π΅ΡˆΠΊΠ°. Π‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠ°Ρ‚Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡƒΠ²Π° ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°ΠΆΡƒΠ²Π° Ρ‚ΠΎΠ»ΠΊΡƒ корисна Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠ°ΠΊΠΎ ΠΏΡ€Π΅Π³Π»Π΅Π΄ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ. Вој Π³ΠΎ Π½Π°Π΄ΠΎΠΏΠΎΠ»Π½ΡƒΠ²Π° овој процСс, помагајќи ΠΎΠ΄Π½Π°ΠΏΡ€Π΅Π΄ Π΄Π° сС Π·Π°Π±Π΅Π»Π΅ΠΆΠ°Ρ‚ ΠΈ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π°Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, нСточности ΠΈ опаснитС дизајни. ΠœΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΅ Π΄Π° сС фокусирамС Π½Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π·Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ ΠΈ Ρ˜Π°ΡΠ½ΠΎΡΡ‚ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚, намСсто Π΄Π° Π±Π°Ρ€Π°ΠΌΠ΅ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½Π° Π·Π°Π³Ρ€Π°Π΄Π° ΠΈΠ»ΠΈ Ρ‡ΠΈΡ‚Π°Π°Ρ‚ Π·Π΄ΠΎΠ΄Π΅Π²Π½ΠΈ спорСдбСни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

0. Π—Π°ΠΏΠΎΠ·Π½Π°Π²Π°ΡšΠ΅ со Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π°

Π‘Γ¨ Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° со ΠΏΡ€ΠΎΠ±Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°. Навистина, Ρ‚Π΅ΡˆΠΊΠΎ Π΅ Π΄Π° сС ΠΎΠ΄Π»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄Π° внСсСтС Π½Π΅ΡˆΡ‚ΠΎ Π²ΠΎ процСсот Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ Π°ΠΊΠΎ никогаш ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Π½Π΅ стС ја Π²ΠΈΠ΄Π΅Π»Π΅ Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° Π²ΠΎ ΠΆΠΈΠ²ΠΎ. Π—Π°Ρ‚ΠΎΠ°, ΠΏΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅ΡˆΡ‚ΠΎ ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π΅ Π΄Π° ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π½Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π°.

Π¨Ρ‚ΠΎ ќС Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ Π²ΠΎ ΠΎΠ²Π°Π° Ρ„Π°Π·Π°:

  • Кои сС Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° со Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚;
  • Π”Π°Π»ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Π΅ ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π΅Π½ со Π²Π°ΡˆΠ°Ρ‚Π° Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°?
  • Какви ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈΠΌΠ° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π²ΠΎ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ?

ΠžΡ‚ΠΊΠ°ΠΊΠΎ ќС инсталиратС сè ΡˆΡ‚ΠΎ Π²ΠΈ Ρ‚Ρ€Π΅Π±Π°, ΠΏΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅ΡˆΡ‚ΠΎ ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π΅ Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (Windows, Linux, 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-студио-Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ (Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° C++ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π½Π° Linux / macOS)
  • pvs-studio-dotnet (Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π°, C# ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π½Π° Linux / macOS)
  • pvs-studio.Ρ‚Π΅Π³Π»Π° (Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° 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" (Линукс).

Π’ΠΎ Ρ€Π΅Π΄, Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π²Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Π½Π° сСрвСрот Π·Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π°. Π‘Π΅Π³Π°, Π°ΠΊΠΎ нСкој поставил Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ ΠΊΠΎΠ΄, Ρ„Π°Π·Π°Ρ‚Π° Π½Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ќС ΠΏΡ€ΠΎΠΏΠ°Π΄Π½Π΅ ΠΈ ќС ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚, сСпак, ΠΎΠ²Π° Π½Π΅ Π΅ сосСма ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ, бидСјќи Π΅ поСфикасно Π΄Π° сС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π½Π΅ ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ќС сС ΡΠΏΠΎΡ˜Π°Ρ‚ Π³Ρ€Π°Π½ΠΊΠΈΡ‚Π΅, Ρ‚ΡƒΠΊΡƒ ΠΏΡ€Π΅Π΄ Π½Π΅Π³ΠΎ, Π²ΠΎ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° Π±Π°Ρ€Π°ΡšΠ΅ Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π°ΡšΠ΅.

ΠžΠΏΡˆΡ‚ΠΎ Π·Π΅ΠΌΠ΅Π½ΠΎ, ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π±Π°Ρ€Π°ΡšΠ΅ Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π΅ сС Ρ€Π°Π·Π»ΠΈΠΊΡƒΠ²Π° ΠΌΠ½ΠΎΠ³Ρƒ ΠΎΠ΄ Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎΡ‚ΠΎ Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° 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 Π½Π΅ Π΅ Π½Π° списокот Π½Π° услуги спомСнати Π²ΠΎ ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π°, ќС Π²ΠΈ Π±ΠΈΠ΄Π΅ корисСн ΠΎΠΏΡˆΡ‚ΠΈΠΎΡ‚ Π΄Π΅Π» посвСтСн Π½Π° Ρ‚Π΅ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° овој Ρ‚ΠΈΠΏ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°.

Π‘ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π±Π°Ρ€Π°ΡšΠ°Ρ‚Π° Π·Π° ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π°ΡšΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ ΠΎΠ±Π²Ρ€Π·ΡƒΠ²Π°ΡšΠ° ΡˆΡ‚ΠΎ содрТат ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ°, Π° со Ρ‚ΠΎΠ° Π΄Π° создадСтС Π³Ρ€Π°Π½ΠΈΡ†Π° ΡˆΡ‚ΠΎ Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ја ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅.

Π‘Π΅Ρ‚ΠΎ ΠΎΠ²Π° Π΅ сСкако Π΄ΠΎΠ±Ρ€ΠΎ, Π½ΠΎ Π±ΠΈ сакал Π΄Π° ΠΌΠΎΠΆΠ°ΠΌ Π΄Π° Π³ΠΈ Π²ΠΈΠ΄Π°ΠΌ ситС ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ° Π½Π° Π΅Π΄Π½ΠΎ мСсто. НС само ΠΎΠ΄ статичкиот Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, Ρ‚ΡƒΠΊΡƒ ΠΈ ΠΎΠ΄ Π΅Π΄ΠΈΠ½Π΅Ρ‡Π½ΠΈΡ‚Π΅ тСстови ΠΈΠ»ΠΈ ΠΎΠ΄ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈΠΎΡ‚ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. ΠŸΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ услуги ΠΈ Π΄ΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° ΠΎΠ²Π°. PVS-Studio, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠΌΠ° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊ Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π²ΠΎ SonarQube.

2. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° машини Π·Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΈ

Π‘Π΅Π³Π° Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Π³ΠΎ инсталиратС ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Π·Π° сСкојднСвна Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°. Π”ΠΎ овој ΠΌΠΎΠΌΠ΅Π½Ρ‚ вСќС стС сС Π·Π°ΠΏΠΎΠ·Π½Π°Π»Π΅ со ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½ΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°, ΠΏΠ° ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Ρ€Π΅Ρ‡Π΅ Π½Π°Ρ˜Π»Π΅ΡΠ½ΠΈΠΎΡ‚ Π΄Π΅Π».

Како Π½Π°Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½Π° ΠΎΠΏΡ†ΠΈΡ˜Π°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ°Ρ‚ сами Π΄Π° Π³ΠΎ инсталираат ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΠΎΡ‚ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Π‘Π΅ΠΏΠ°ΠΊ, ΠΎΠ²Π° ќС ΠΏΠΎΡ‚Ρ€Π°Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Π²Ρ€Π΅ΠΌΠ΅ ΠΈ ќС Π³ΠΈ ΠΎΠ΄Π²Π»Π΅Ρ‡Π΅ ΠΎΠ΄ Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚, ΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ овој процСс ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ инсталатСр ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ Π·Π½Π°ΠΌΠ΅Π½Ρ†Π°. Π—Π° PVS-Studio ΠΈΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·Π½Π°ΠΌΠ΅Π½Ρ†Π° Π·Π° автоматска ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°. Π‘Π΅ΠΏΠ°ΠΊ, сСкогаш ΠΈΠΌΠ° ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€ΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Chocolatey (Windows), Homebrew (macOS) ΠΈΠ»ΠΈ дСсСтици ΠΎΠΏΡ†ΠΈΠΈ Π·Π° Linux.

ΠŸΠΎΡ‚ΠΎΠ° ќС Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΈ инсталиратС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΡ†ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Visual Studio, Π˜Π”Π•Π, ВСлосипСдист ΠΈΡ‚Π½

3. БСкојднСвна ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°

Π’ΠΎ ΠΎΠ²Π°Π° Ρ„Π°Π·Π°, Π²Ρ€Π΅ΠΌΠ΅ Π΅ Π΄Π° ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Π·Π±ΠΎΡ€ΠΎΠ²ΠΈ Π·Π° Π½Π°Ρ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° Π·Π°Π±Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ ΠΏΡ€ΠΈ сСкојднСвна ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°. Π—Π° цСлосна Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Π²Ρ€Π΅ΠΌΠ΅, Π½ΠΎ ΠΊΠΎΠ»ΠΊΡƒ чСсто Π³ΠΎ ΠΌΠ΅Π½ΡƒΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ΄ΠΎΡ‚ Π²ΠΎ Ρ‚Π΅ΠΊΠΎΡ‚ Π½Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ одСднаш? РСчиси ΠΈ Π΄Π° Π½Π΅ΠΌΠ° Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ€Π°ΡšΠ΅ ΠΊΠΎΠ΅ Π΅ Ρ‚ΠΎΠ»ΠΊΡƒ Π³ΠΎΠ»Π΅ΠΌΠΎ ΡˆΡ‚ΠΎ вСднаш ќС влијаС Π½Π° Ρ†Π΅Π»Π°Ρ‚Π° Π±Π°Π·Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ. Π‘Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΡˆΡ‚ΠΎ сС ΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅ Ρ€Π΅Ρ‚ΠΊΠΎ Π½Π°Π΄ΠΌΠΈΠ½ΡƒΠ²Π° дСсСтина, ΠΏΠ° ΠΈΠΌΠ° смисла Π΄Π° сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π°Ρ‚. Π—Π° Ρ‚Π°ΠΊΠ²Π° ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π° постои Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°. Π‘Π°ΠΌΠΎ Π½Π΅ ΠΏΠ»Π°ΡˆΠ΅Ρ‚Π΅ сС, ΠΎΠ²Π° Π½Π΅ Π΅ Π΄Ρ€ΡƒΠ³Π° Π°Π»Π°Ρ‚ΠΊΠ°. Ова Π΅ ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ кој Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ само ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ зависности, Π° Ρ‚ΠΎΠ° сС случува автоматски ΠΏΠΎ ΠΈΠ·Π³Ρ€Π°Π΄Π±Π°Ρ‚Π° Π°ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΎ IDE со инсталиран Π΄ΠΎΠ΄Π°Ρ‚ΠΎΠΊ.

Ако Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚ ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΠΎ Π½Π΅ΠΎΠ΄Π°ΠΌΠ½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚ΠΈΠΎΡ‚ ΠΊΠΎΠ΄, Ρ‚ΠΎΠ° ќС Π³ΠΎ ΠΏΡ€ΠΈΡ˜Π°Π²ΠΈ нСзависно. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PVS-Studio ќС Π²ΠΈ ΠΊΠ°ΠΆΠ΅ Π·Π° ΠΎΠ²Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅:

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° - ΠΎΠ΄ Π²ΠΎΠ²Π΅Π΄ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π°
Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, Π½Π΅ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΄Π° ΠΈΠΌ сС ΠΊΠ°ΠΆΠ΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π΄Π° ја користат Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π°. Π’Ρ€Π΅Π±Π° Π½Π΅ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΈΠΌ ΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΡˆΡ‚ΠΎ Π΅ ΠΈ ΠΊΠ°ΠΊΠΎ Π΅. Π•Π²Π΅, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, статии Π·Π° Π±Ρ€Π· ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ Π½Π° PVS-Studio, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ слични упатства Π·Π° која Π±ΠΈΠ»ΠΎ Π°Π»Π°Ρ‚ΠΊΠ° ΡˆΡ‚ΠΎ ја ΠΏΡ€Π΅Ρ‚ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅:

Π’Π°ΠΊΠ²ΠΈΡ‚Π΅ написи Π³ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ ситС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π·Π° сСкојднСвна ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° ΠΈ Π½Π΅ ΠΎΠ΄Π·Π΅ΠΌΠ°Π°Ρ‚ ΠΌΠ½ΠΎΠ³Ρƒ Π²Ρ€Π΅ΠΌΠ΅. πŸ™‚

Π”ΡƒΡ€ΠΈ ΠΈ Π²ΠΎ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° запознавањС со Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π°, потиснавмС ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ° Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π΅Π΄Π½ΠΎ ΠΎΠ΄ ΠΏΡ€Π²ΠΈΡ‚Π΅ Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ°. Π—Π° ΠΆΠ°Π», статичкитС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ Π½Π΅ сС ΡΠΎΠ²Ρ€ΡˆΠ΅Π½ΠΈ, ΠΏΠ° ΠΎΠ΄Π²Ρ€Π΅ΠΌΠ΅-Π½Π°Π²Ρ€Π΅ΠΌΠ΅ Π΄Π°Π²Π°Π°Ρ‚ Π»Π°ΠΆΠ½ΠΈ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²ΠΈ. ΠžΠ±ΠΈΡ‡Π½ΠΎ Π΅ лСсно Π΄Π° Π³ΠΈ потиснСтС; Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ PVS-Studio Π·Π° Visual Studio, само Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° Π΅Π΄Π½ΠΎ ΠΊΠΎΠΏΡ‡Π΅:

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° - ΠΎΠ΄ Π²ΠΎΠ²Π΅Π΄ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π°
Π‘Π΅ΠΏΠ°ΠΊ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ повСќС ΠΎΡ‚ΠΊΠΎΠ»ΠΊΡƒ само Π΄Π° Π³ΠΈ потиснСтС. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΡ˜Π°Π²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°. Ако Π»Π°ΠΆΠ½ΠΎΡ‚ΠΎ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°, Ρ‚ΠΎΠ³Π°Ρˆ Π²ΠΎ ΠΈΠ΄Π½ΠΈΡ‚Π΅ Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅ Π΄Π΅ΠΊΠ° сСкој ΠΏΠ°Ρ‚ ΠΈΠΌΠ° сС ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΈ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ Π»Π°ΠΆΠ½ΠΈ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²ΠΈ спСцифични Π·Π° Π²Π°ΡˆΠ°Ρ‚Π° Π±Π°Π·Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ.

ПослС ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅

Π’Π°ΠΊΠ°, Π³ΠΈ ΠΏΠΎΠΌΠΈΠ½Π°Π²ΠΌΠ΅ ситС Ρ„Π°Π·ΠΈ Π½Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° статичка Π°Π½Π°Π»ΠΈΠ·Π° Π²ΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈΠΎΡ‚ процСс. И ΠΏΠΎΠΊΡ€Π°Ρ˜ ваТноста Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ‚Π°ΠΊΠ²ΠΈ Π°Π»Π°Ρ‚ΠΊΠΈ Π½Π° CI, Π½Π°Ρ˜Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ мСсто Π·Π° Π½ΠΈΠ²Π½ΠΎ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π΅ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ΠΎΡ‚ Π½Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚. На ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° ΠΊΡ€Π°ΠΈΡˆΡ‚Π°Ρ‚Π°, статичСн Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π΅ Π΅ ΡΡƒΠ΄ΠΈΡ˜Π° кој Π½Π΅ΠΊΠ°Π΄Π΅ Π΄Π°Π»Π΅ΠΊΡƒ ΠΎΠ΄ вас Π²Π΅Π»ΠΈ Π΄Π΅ΠΊΠ° ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π΅ Π΅ Π΄ΠΎΠ±Π°Ρ€. Напротив, Ρ‚ΠΎΠ° Π΅ асистСнт кој Π²ΠΈ ΠΊΠ°ΠΆΡƒΠ²Π° Π΄Π°Π»ΠΈ стС ΡƒΠΌΠΎΡ€Π½ΠΈ ΠΈ Π²Π΅ потсСтува Π΄Π°Π»ΠΈ Π½Π΅ΡˆΡ‚ΠΎ стС Π·Π°Π±ΠΎΡ€Π°Π²ΠΈΠ»Π΅.

Π’ΠΎΡ‡Π½ΠΎ, Π±Π΅Π· Ρ€Π΅Π΄ΠΎΠ²Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°, статичката Π°Π½Π°Π»ΠΈΠ·Π° Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ Π½Π΅ΠΌΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° Π³ΠΎ поСдностави Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚. На ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° ΠΊΡ€Π°ΠΈΡˆΡ‚Π°Ρ‚Π°, Π½Π΅Ρ˜Π·ΠΈΠ½Π°Ρ‚Π° Π³Π»Π°Π²Π½Π° ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠ° Π·Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ΠΎΡ‚ Π½Π΅ Π»Π΅ΠΆΠΈ Ρ‚ΠΎΠ»ΠΊΡƒ Π²ΠΎ Π±Π°Ρ€Π°ΡšΠ΅Ρ‚ΠΎ слоТСни ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ²Π΅Ρ€Π·Π½ΠΈ Π΄Π΅Π»ΠΎΠ²ΠΈ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ‚, Ρ‚ΡƒΠΊΡƒ Π²ΠΎ Π½ΠΈΠ²Π½ΠΎΡ‚ΠΎ Ρ€Π°Π½ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅. БогласСтС сС Π΄Π΅ΠΊΠ° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ΡƒΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ°Ρ‚Π° ќС Π±ΠΈΠ΄Π°Ρ‚ испратСни Π½Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π΅ само ΡˆΡ‚ΠΎ Π΅ Π½Π΅ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π½ΠΎ, Ρ‚ΡƒΠΊΡƒ ΠΈ ΠΎΠ΄Π·Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³Ρƒ Π²Ρ€Π΅ΠΌΠ΅. Π‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠ°Ρ‚Π° Π°Π½Π°Π»ΠΈΠ·Π°, ΠΊΠΎΠ³Π° сС користи Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ, ја Ρ€Π°Π·Π³Π»Π΅Π΄ΡƒΠ²Π° сСкоја ΠΏΡ€ΠΎΠΌΠ΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° Π²Π°ΡˆΠΈΠΎΡ‚ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ ΠΈ извСстува Π·Π° сомнитСлни мСста Π΄ΠΎΠ΄Π΅ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚.

И Π°ΠΊΠΎ Π²ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ»Π΅Π³ΠΈ сè ΡƒΡˆΡ‚Π΅ Π½Π΅ стС сигурни Π΄Π°Π»ΠΈ Π²Ρ€Π΅Π΄ΠΈ Π΄Π° сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΡ‚, Ρ‚ΠΎΠ³Π°Ρˆ Π²ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΠΌ сСга Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° ја Ρ‡ΠΈΡ‚Π°Ρ‚Π΅ ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° "ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π·Π° Π²ΠΎΠ²Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° статичниот Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ΄ PVS-Studio Π²ΠΎ процСсот Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜Π‘Π΅ однСсува Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈΡ‚Π΅ Π³Ρ€ΠΈΠΆΠΈ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π΄Π΅ΠΊΠ° статичката Π°Π½Π°Π»ΠΈΠ·Π° ќС ΠΈΠΌ ΠΎΠ΄Π·Π΅ΠΌΠ΅ Π²Ρ€Π΅ΠΌΠ΅ ΠΈ Ρ‚Π°ΠΊΠ° Π½Π°Ρ‚Π°ΠΌΡƒ.

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π° - ΠΎΠ΄ Π²ΠΎΠ²Π΅Π΄ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π°

Ако сакатС Π΄Π° ја сподСлитС ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° со ΠΏΡƒΠ±Π»ΠΈΠΊΠ° ΡˆΡ‚ΠΎ Π·Π±ΠΎΡ€ΡƒΠ²Π° англиски, Π²Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ користСтС ја врската Π·Π° ΠΏΡ€Π΅Π²ΠΎΠ΄: Максим Π—Π²Ρ˜Π°Π³ΠΈΠ½Ρ†Π΅Π². Π‘Ρ‚Π°Ρ‚ΠΈΡ‡ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·Π°: ΠΎΠ΄ ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ Π΄ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π°.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€