рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рдкрд╛рд╕реВрди рдПрдХрддреНрд░реАрдХрд░рдг

рдЕрдВрддрд╣реАрди рдХреЛрдб рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди рдХрд┐рдВрд╡рд╛ рдбреАрдмрдЧрд┐рдВрдЧрдореБрд│реЗ рдХрдВрдЯрд╛рд│рд▓реЗ, рдХрдзреАрдХрдзреА рдЖрдкрдг рдЖрдкрд▓реЗ рдЬреАрд╡рди рдХрд╕реЗ рд╕реЛрдкреЗ рдХрд░рд╛рд╡реЗ рдпрд╛рдмрджреНрджрд▓ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛. рдЖрдгрд┐ рдереЛрдбрд╛рд╕рд╛ рд╢реЛрдз рдШреЗрддрд▓реНрдпрд╛рдирдВрддрд░, рдХрд┐рдВрд╡рд╛ рдЪреБрдХреВрди рдЕрдбрдЦрд│рд▓реНрдпрд╛рд╡рд░, рдЖрдкрдг рдЬрд╛рджреВрдЪрд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдкрд╛рд╣реВ рд╢рдХрддрд╛: "рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг". рддреЗ рдХрд╛рдп рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рддреБрдордЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рд╢реА рдХрд╕реЗ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзреВ рд╢рдХрддреЗ рддреЗ рдкрд╛рд╣реВ рдпрд╛.

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рдкрд╛рд╕реВрди рдПрдХрддреНрд░реАрдХрд░рдг
рдЦрд░рдВ рддрд░, рдЬрд░ рддреБрдореНрд╣реА рдХреЛрдгрддреНрдпрд╛рд╣реА рдЖрдзреБрдирд┐рдХ рднрд╛рд╖реЗрдд рд▓рд┐рд╣рд┐рд▓рдВ рддрд░, рддреЗ рд▓рдХреНрд╖рд╛рдд рди рдШреЗрддрд╛, рддреБрдореНрд╣реА рддреЗ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╛рджреНрд╡рд╛рд░реЗ рдЪрд╛рд▓рд╡рд▓реЗ. рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА рдХреЛрдгрддрд╛рд╣реА рдЖрдзреБрдирд┐рдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛрдбрдордзреАрд▓ рд╕рдВрднрд╛рд╡реНрдп рд╕рдорд╕реНрдпрд╛рдВрдмрджреНрджрд▓ рдЪреЗрддрд╛рд╡рдгреАрдВрдЪрд╛ рдПрдХ рдЫреЛрдЯрд╛рд╕рд╛ рд╕рдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЛ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУрдордзреНрдпреЗ C++ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛рдирд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреБрдвреАрд▓ рдЧреЛрд╖реНрдЯреА рджрд┐рд╕реВ рд╢рдХрддрд╛рдд:

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рдкрд╛рд╕реВрди рдПрдХрддреНрд░реАрдХрд░рдг
рдпрд╛ рдЖрдКрдЯрдкреБрдЯрдордзреНрдпреЗ рдЖрдкрдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдкрд╛рд╣рддреЛ рд╣реЛрддреЗ рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рдХреБрдареЗрд╣реА рд╡рд╛рдкрд░рд▓реЗ рдирд╛рд╣реА. рддрд░ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд, рдЖрдкрдг рдЬрд╡рд│рдЬрд╡рд│ рдиреЗрд╣рдореАрдЪ рдПрдХ рд╕рд╛рдзрд╛ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд╛рдкрд░рд▓рд╛. рддрдерд╛рдкрд┐, рдХрд╡реНрд╣рд░рд┐рдЯреА, рдХреНрд▓реЛрдХрд╡рд░реНрдХ рдХрд┐рдВрд╡рд╛ рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУ рд╕рд╛рд░рдЦреНрдпрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рдХрдВрдкрд╛рдЗрд▓рд░рджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЪреЗрддрд╛рд╡рдгреА рдХреЗрд╡рд│ рд╕рдорд╕реНрдпрд╛рдВрдЪреА рдПрдХ рд▓рд╣рд╛рди рд╢реНрд░реЗрдгреА рджрд░реНрд╢рд╡реВ рд╢рдХрддрд╛рдд.

рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛рдп рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рдЕрдВрдорд▓рд╛рдд рдЖрдгрд╛рдпрдЪреЗ рд╣реЗ рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ рдорд╛рд╣рд┐рдд рдирд╕рд▓реНрдпрд╛рд╕, рд╣рд╛ рд▓реЗрдЦ рд╡рд╛рдЪрд╛рдпрд╛ рдкрджреНрдзрддреАрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА.

рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рдЪреА рдЧрд░рдЬ рдХрд╛ рдЖрд╣реЗ?

рдереЛрдбрдХреНрдпрд╛рдд: рдкреНрд░рд╡реЗрдЧ рдЖрдгрд┐ рд╕рд░рд▓реАрдХрд░рдг.

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХреЛрдбрдордзреНрдпреЗ рдмрд░реНтАНрдпрд╛рдЪ рднрд┐рдиреНрди рд╕рдорд╕реНрдпрд╛ рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ: рднрд╛рд╖реЗрдЪреНрдпрд╛ рдЪреБрдХреАрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рдкрд╛рд╕реВрди рддреЗ рдЯрд╛рдпрдкреЛрдкрд░реНрдпрдВрдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреНрдпрд╛рдРрд╡рдЬреА

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). рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУрдордзреАрд▓ рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУрдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рд╕рдорд╛рди рдЪрд┐рддреНрд░ рджрд┐рд╕реЗрд▓ (рдХреНрд▓рд┐рдХ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп):

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рдкрд╛рд╕реВрди рдПрдХрддреНрд░реАрдХрд░рдг
рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рд╣рд╕рд╛ рдореЛрдареНрдпрд╛ рдХреЛрдб рдмреЗрд╕рд╕рд╣ рдкреНрд░рдХрд▓реНрдкрд╛рдВрд╕рд╛рдареА рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рдЪреЗрддрд╛рд╡рдгреА рджреЗрддрд╛рдд. рддреНрдпрд╛ рд╕рд░реНрд╡рд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА, рдХрд╛рд░рдг рддреБрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рдЖрдзреАрдЪ рдХрд╛рд░реНрдпрд░рдд рдЖрд╣реЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЧрдВрднреАрд░ рдирд╛рд╣реАрдд. рддрдерд╛рдкрд┐, рдЖрдкрдг рдЖрдкрдг рд╕рд░реНрд╡рд╛рдд рдордиреЛрд░рдВрдЬрдХ рдЗрд╢рд╛рд░реЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕ рддреНрдпрд╛рдВрдирд╛ рджреБрд░реБрд╕реНрдд рдХрд░рд╛. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдЙрдЯрдкреБрдЯ рдлрд┐рд▓реНрдЯрд░ рдХрд░рдгреЗ рдЖрдгрд┐ рдлрдХреНрдд рд╕рд░реНрд╡рд╛рдд рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдВрджреЗрд╢ рд╕реЛрдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУрд╕рд╛рдареА рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУ рдкреНрд▓рдЧрдЗрдирдордзреНрдпреЗ, рд╣реЗ рддреНрд░реБрдЯреА рдкрд╛рддрд│реА рдЖрдгрд┐ рд╢реНрд░реЗрдгреАрдиреБрд╕рд╛рд░ рдлрд┐рд▓реНрдЯрд░ рдХрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рд╕рд░реНрд╡рд╛рдд рдЕрдЪреВрдХ рдЖрдЙрдЯрдкреБрдЯрд╕рд╛рдареА, рдлрдХреНрдд рд╕реЛрдбрд╛ рдЙрдЪреНрдЪ ╨╕ рдЬрдирд░рд▓ (рдХреНрд▓рд┐рдХ рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рджреЗрдЦреАрд▓):

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рдкрд╛рд╕реВрди рдПрдХрддреНрд░реАрдХрд░рдг
рдЦрд░рдВрдЪ, 178 рдЪреЗрддрд╛рд╡рдгреА рдЕрдиреЗрдХ рд╣рдЬрд╛рд░рд╛рдВрдкреЗрдХреНрд╖рд╛ рдкрд╛рд╣рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ...

рдЯреЕрдмрдордзреНрдпреЗ рдордзреНрдпрдо ╨╕ рдХрдореА рдмрд░реНтАНрдпрд╛рдЪрджрд╛ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдЗрд╢рд╛рд░реЗ рдЕрд╕рддрд╛рдд, рдкрд░рдВрддреБ рдпрд╛ рд╢реНрд░реЗрдгреАрдВрдордзреНрдпреЗ рдХрдореА рдЕрдЪреВрдХрддрд╛ (рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛) рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдирд┐рджрд╛рдирд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реЛрддреЛ. рдЪреЗрддрд╛рд╡рдгреА рдкрд╛рддрд│реА рдЖрдгрд┐ рд╡рд┐рдВрдбреЛрдЬ рдЕрдВрддрд░реНрдЧрдд рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрд░реНрдпрд╛рдпрд╛рдВрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдорд╛рд╣рд┐рддреА рдпреЗрдереЗ рдЖрдврд│реВ рд╢рдХрддреЗ: *рд░рдбрдгреЗ*.

рд╕рд░реНрд╡рд╛рдд рдордиреЛрд░рдВрдЬрдХ рддреНрд░реБрдЯреАрдВрдЪреЗ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди рдХрд░рдгреЗ (рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдпрд╢рд╕реНрд╡реАрд░рд┐рддреНрдпрд╛ рджреБрд░реБрд╕реНрдд рдХрд░рдгреЗ) рдлрд╛рдпрджреЗрд╢реАрд░ рдЖрд╣реЗ рдЙрд░реНрд╡рд░рд┐рдд рдЗрд╢рд╛рд░реЗ рджрдбрдкреВрди рдЯрд╛рдХрд╛. рд╣реЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реБрди рдирд╡реАрди рдЗрд╢рд╛рд░реЗ рдЬреБрдиреНрдпрд╛рдордзреНрдпреЗ рдЧрдорд╛рд╡реВ рдирдпреЗрдд. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╕рд╛рдареА рд╕рд╣рд╛рдпреНрдпрдХ рдЖрд╣реЗ, рдмрдЧреНрд╕рдЪреА рд╕реВрдЪреА рдирд╛рд╣реА. ЁЯЩВ

1. рдСрдЯреЛрдореЗрдЯрд┐рдЭреЗрд╢рди

рдкрд░рд┐рдЪрд┐рдд рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░, рдкреНрд▓рдЧрдЗрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрдгрд┐ CI рдордзреНрдпреЗ рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ. рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реНрдЯреЕрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд╛рдкрд░рдгреЗ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рд╣реЗ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рдХреНрд╖рдо рдХрд░рдгреЗ рд╡рд┐рд╕рд░реВ рд╢рдХрддреЛ рдХрд┐рдВрд╡рд╛ рддреЗ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдирд╛рд╣реА. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрдЪреА рдХрд╛рд╣реА рдЕрдВрддрд┐рдо рддрдкрд╛рд╕рдгреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рдЪрд╛рдЪрдгреА рди рдХреЗрд▓реЗрд▓рд╛ рдХреЛрдб рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд╛рд╕ рд╢рд╛рдЦреЗрдд рдпреЗрдК рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА.

рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рддреБрдореНрд╣реА рдХрд╛рдп рд╢рд┐рдХрд╛рд▓:

  • рд╕рд╛рдзрди рдХреЛрдгрддреЗ рдСрдЯреЛрдореЗрд╢рди рдкрд░реНрдпрд╛рдп рдкреНрд░рджрд╛рди рдХрд░рддреЗ;
  • рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рддреБрдордЪреНрдпрд╛ рдЕрд╕реЗрдВрдмреНрд▓реА рд╕рд┐рд╕реНрдЯрдорд╢реА рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗ рдХрд╛?

рдкрд░рд┐рдкреВрд░реНрдг рджрд╕реНрддрдРрд╡рдЬ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, рдХрдзреАрдХрдзреА рддреБрдореНрд╣рд╛рд▓рд╛ рд▓рд┐рд╣рд╛рд╡реЗ рд▓рд╛рдЧрддреЗ рд╕рдорд░реНрдерди. рд╣реЗ рд╕рд╛рдорд╛рдиреНрдп рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреА рдорджрдд рдХрд░рдгреНрдпрд╛рдд рдЖрдирдВрдж рд╣реЛрдд рдЖрд╣реЗ. ЁЯЩВ

рдЖрддрд╛ рд╕рддрдд рдПрдХрд╛рддреНрдорддрд╛ (CI) рд╕реЗрд╡рд╛рдВрдХрдбреЗ рд╡рд│реВ. рдХреЛрдгрддреНрдпрд╛рд╣реА рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдВрд╢рд┐рд╡рд╛рдп рдХреЛрдгрддреЗрд╣реА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреНрдпреЗ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕реНрдЯреЗрдЬ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗ рд╕рд╣рд╕рд╛ рдмрд┐рд▓реНрдб рдЖрдгрд┐ рдпреБрдирд┐рдЯ рдЪрд╛рдЪрдгреНрдпрд╛рдВрдирдВрддрд░ рд╕реНрдерд┐рдд рдЕрд╕рддреЗ. рд╣реЗ рд╡рд┐рд╡рд┐рдз рдХрдиреНрд╕реЛрд▓ рдЙрдкрдпреБрдХреНрддрддрд╛ рд╡рд╛рдкрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, PVS-Studio рдЦрд╛рд▓реАрд▓ рдЙрдкрдпреБрдХреНрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ:

  • PVS-Studio_Cmd.exe (рд╡рд┐рдВрдбреЛрдЬрд╡рд░реАрд▓ рдЙрдкрд╛рдпрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, C#, C++ рдкреНрд░рдХрд▓реНрдк)
  • CLMonitor.exe (рд╕рдВрдХрд▓рди рдирд┐рд░реАрдХреНрд╖рдг)
  • pvs-рд╕реНрдЯреБрдбрд┐рдУ-рд╡рд┐рд╢реНрд▓реЗрд╖рдХ (рд▓рд┐рдирдХреНрд╕ / рдореЕрдХрдУрдПрд╕рд╡рд░реАрд▓ C++ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг)
  • pvs-studio-dotnet (рд╕реЛрд▓реНрдпреВрд╢рди рдЕреЕрдирд╛рд▓рд┐рд╕рд┐рд╕, рд▓рд┐рдирдХреНрд╕/рдореЕрдХрдУрдПрд╕рд╡рд░ рд╕реА# рдкреНрд░реЛрдЬреЗрдХреНрдЯ)
  • pvs-studio.jar (рдЬрд╛рд╡рд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг)
  • PlogConverter (рдЕрд╣рд╡рд╛рд▓ рдлрд╛рдЗрд▓ рдХрдирд╡рд░реНрдЯрд░)

CI рдордзреНрдпреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рддреАрди рдЧреЛрд╖реНрдЯреА рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ:

  • рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛;
  • рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд╛рд▓рд╡рд╛;
  • рдкрд░рд┐рдгрд╛рдо рд╡рд┐рддрд░реАрдд рдХрд░рд╛.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд▓рд┐рдирдХреНрд╕ (рдбреЗрдмрд┐рдпрди-рдмреЗрд╕) рд╡рд░ рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рдЖрджреЗрд╢ рдЪрд╛рд▓рд╡рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓:

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

рд╡рд┐рдВрдбреЛрдЬ рдЪрд╛рд▓рд╡рдгрд╛рд▒реНрдпрд╛ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУ рддреИрдирд╛рдд рдХрд░рдгреНрдпрд╛рдмрджреНрджрд▓ рддреБрдореНрд╣реА рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ *рдпреЗрдереЗ*.

рд╕реНрдерд╛рдкрдиреЗрдирдВрддрд░, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдереЗрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд╛рд▓рд╡рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рддрдерд╛рдкрд┐, рд╕рдВрдХрд▓рди рдЖрдгрд┐ рдЪрд╛рдЪрдгреНрдпрд╛ рдЙрддреНрддреАрд░реНрдг рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░рдЪ рд╣реЗ рдХрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реА рдЬрд╛рддреЗ. рдпрд╛рдЪреЗ рдХрд╛рд░рдг рдЕрд╕реЗ рдХреА рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕ рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рд╕рдВрдХрд▓рдирд╛рдкреЗрдХреНрд╖рд╛ рджреБрдкреНрдкрдЯ рд╡реЗрд│ рд▓рд╛рдЧрддреЛ.

рд▓рд╛рдБрдЪ рдкрджреНрдзрдд рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЖрдгрд┐ рдкреНрд░рдХрд▓реНрдк рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдореА рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди C++ (Linux) рд╕рд╛рдареА рдкрд░реНрдпрд╛рдп рджрд╛рдЦрд╡рддреЛ:

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

рдкрд╣рд┐рд▓реА рдХрдорд╛рдВрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрд▓ рдЖрдгрд┐ рджреБрд╕рд░реА рд▓рд┐рдлрд╛рдлреЗрдЕрд╣рд╡рд╛рд▓ рдордЬрдХреВрд░ рд╕реНрд╡рд░реВрдкрд╛рдд рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ, рд╕реНрдХреНрд░реАрдирд╡рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдЪреЗрддрд╛рд╡рдгреА рдЕрд╕рд▓реНрдпрд╛рд╕ 0 рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд рд░рд┐рдЯрд░реНрди рдХреЛрдб рджреЗрддреЗ. рдПрд░рд░ рдореЗрд╕реЗрдЬ рдЖрд▓реНрдпрд╛рд╡рд░ рдмрд┐рд▓реНрдб рдмреНрд▓реЙрдХ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпрд╛рд╕рд╛рд░рдЦреА рдпрдВрддреНрд░рдгрд╛ рд╕реЛрдпреАрд╕реНрдХрд░рдкрдгреЗ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ. рддрдерд╛рдкрд┐, рдЖрдкрдг рдиреЗрд╣рдореА рдзреНрд╡рдЬ рдХрд╛рдвреВ рд╢рдХрддрд╛ -w рдЖрдгрд┐ рдЪреЗрддрд╛рд╡рдгреА рдЕрд╕рд▓реЗрд▓реА рдЕрд╕реЗрдВрдмреНрд▓реА рдмреНрд▓реЙрдХ рдХрд░реВ рдирдХрд╛.

рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛. рдордЬрдХреВрд░ рд╕реНрд╡рд░реВрдк рдЧреИрд░рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ. рд╣реЗ рдлрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгреВрди рджрд┐рд▓реЗ рдЖрд╣реЗ. рдЕрдзрд┐рдХ рдордиреЛрд░рдВрдЬрдХ рдЕрд╣рд╡рд╛рд▓ рд╕реНрд╡рд░реВрдкрд╛рдХрдбреЗ рд▓рдХреНрд╖ рджреНрдпрд╛ - FullHtml. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдбрджреНрд╡рд╛рд░реЗ рдиреЗрд╡реНрд╣рд┐рдЧреЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.

рдЖрдкрдг рд▓реЗрдЦрд╛рдд CI рд╡рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ "рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУ рдЖрдгрд┐ рд╕рддрдд рдПрдХрддреНрд░реАрдХрд░рдг"(рд╡рд┐рдВрдбреЛрдЬ) рдХрд┐рдВрд╡рд╛"рдЯреНрд░реЕрд╡реНрд╣рд┐рд╕ рд╕реАрдЖрдпрдордзреНрдпреЗ рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУ рдХрд╕рд╛ рд╕реЗрдЯ рдХрд░рд╛рдпрдЪрд╛" (рд▓рд┐рдирдХреНрд╕).

рдареАрдХ рдЖрд╣реЗ, рддреБрдореНрд╣реА рдмрд┐рд▓реНрдб рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ. рдЖрддрд╛, рдЬрд░ рдХреЛрдгреА рдЪрд╛рдЪрдгреА рди рдХреЗрд▓реЗрд▓рд╛ рдХреЛрдб рдЕрдкрд▓реЛрдб рдХреЗрд▓рд╛ рдЕрд╕реЗрд▓, рддрд░ рдкрдбрддрд╛рд│рдгреАрдЪрд╛ рдЯрдкреНрдкрд╛ рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрдИрд▓, рдЖрдгрд┐ рддреБрдореНрд╣реА рд╕рдорд╕реНрдпрд╛ рд╢реЛрдзрдгреНрдпрд╛рдд рд╕рдХреНрд╖рдо рдЕрд╕рд╛рд▓, рддрдерд╛рдкрд┐, рд╣реЗ рдкреВрд░реНрдгрдкрдгреЗ рд╕реЛрдпреАрдЪреЗ рдирд╛рд╣реА, рдХрд╛рд░рдг рд╢рд╛рдЦрд╛рдВрдЪреЗ рд╡рд┐рд▓реАрдиреАрдХрд░рдг рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рдирд╡реНрд╣реЗ рддрд░ рдкреНрд░рдХрд▓реНрдк рддрдкрд╛рд╕рдгреЗ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдо рдЖрд╣реЗ. рддреНрдпрд╛рдЪреНрдпрд╛ рдЖрдзреА, рдкреБрд▓ рд╡рд┐рдирдВрддреА рдЯрдкреНрдкреНрдпрд╛рд╡рд░. рдП.

рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдкреБрд▓ рд╡рд┐рдирдВрддреА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗрдЯ рдХрд░рдгреЗ рд╣реЗ 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 рд▓реЗрдЦрд╛рдд рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реЗрд╡рд╛рдВрдЪреНрдпрд╛ рд╕реВрдЪреАрдордзреНрдпреЗ рдирд╕рд▓рд╛ рддрд░реАрд╣реА, рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рдЪреНрдпрд╛ рд╕рд┐рджреНрдзрд╛рдВрддрд╛рд╕рд╛рдареА рд╕рдорд░реНрдкрд┐рдд рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рднрд╛рдЧ рдЙрдкрдпреБрдХреНрдд рд╡рд╛рдЯреЗрд▓.

рдкреБрд▓ рд╡рд┐рдирдВрддреНрдпрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗрдЯ рдХрд░реВрди, рддреБрдореНрд╣реА рдЗрд╢рд╛рд░реЗ рдЕрд╕рд▓реЗрд▓реА рдХрдорд┐рдЯ рдЕрд╡рд░реЛрдзрд┐рдд рдХрд░реВ рд╢рдХрддрд╛, рдЬреНрдпрд╛рдореБрд│реЗ рдЪрд╛рдЪрдгреА рди рдХреЗрд▓реЗрд▓рд╛ рдХреЛрдб рдУрд▓рд╛рдВрдбреВ рд╢рдХрдд рдирд╛рд╣реА рдЕрд╢реА рд╕реАрдорд╛ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛.

рд╣реЗ рд╕рд░реНрд╡ рдирдХреНрдХреАрдЪ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдорд▓рд╛ рд╕рд░реНрд╡ рдЗрд╢рд╛рд░реЗ рдПрдХрд╛рдЪ рдард┐рдХрд╛рдгреА рдкрд╛рд╣рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╡реНрд╣рд╛рдпрдЪреЗ рдЖрд╣реЗ. рдХреЗрд╡рд│ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╛рдХрдбреВрдирдЪ рдирд╛рд╣реА рддрд░ рдпреБрдирд┐рдЯ рдЪрд╛рдЪрдгреНрдпрд╛рдВрдордзреВрди рдХрд┐рдВрд╡рд╛ рдбрд╛рдпрдиреЕрдорд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╛рдХрдбреВрдирд╣реА. рдпрд╛рд╕рд╛рдареА рд╡рд┐рд╡рд┐рдз рд╕реЗрд╡рд╛ рдЖрдгрд┐ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЖрд╣реЗрдд. рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрд╣реЗ SonarQube рдордзреНрдпреЗ рдПрдХрддреНрд░реАрдХрд░рдгрд╛рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрди.

2. рд╡рд┐рдХрд╕рдХ рдорд╢реАрдирд╡рд░ рдПрдХрддреНрд░реАрдХрд░рдг

рдЖрддрд╛ рджреИрдирдВрджрд┐рди рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реНрдерд╛рдкрд┐рдд рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ. рдпрд╛ рдХреНрд╖рдгрд╛рдкрд░реНрдпрдВрдд рддреБрдореНрд╣реА рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдмрд╣реБрддреЗрдХ рдкрджреНрдзрддреАрдВрд╢реА рдЖрдзреАрдЪ рдкрд░рд┐рдЪрд┐рдд рдЭрд╛рд▓рд╛ рдЖрд╣рд╛рдд, рдореНрд╣рдгреВрди рдпрд╛рд▓рд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рднрд╛рдЧ рдореНрд╣рдгрддрд╛ рдпреЗрдИрд▓.

рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдкрд░реНрдпрд╛рдп рдореНрд╣рдгреВрди, рд╡рд┐рдХрд╕рдХ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реНрд╡рддрдГ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддрд╛рдд. рддрдерд╛рдкрд┐, рдпрд╛рд╕ рдмрд░рд╛рдЪ рд╡реЗрд│ рд▓рд╛рдЧреЗрд▓ рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕рд╛рдкрд╛рд╕реВрди рддреНрдпрд╛рдВрдЪреЗ рд▓рдХреНрд╖ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрдИрд▓, рдореНрд╣рдгреВрди рдЖрдкрдг рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдзреНрд╡рдЬ рд╡рд╛рдкрд░реВрди рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдХрд░реВ рд╢рдХрддрд╛. рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУрд╕рд╛рдареА рд╡рд┐рд╡рд┐рдз рдЖрд╣реЗрдд рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╕реНрдерд╛рдкрдиреЗрд╕рд╛рдареА рдзреНрд╡рдЬ. рддрдерд╛рдкрд┐, рдиреЗрд╣рдореА рдкреЕрдХреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрд╕рддрд╛рдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Chocolatey (Windows), Homebrew (macOS) рдХрд┐рдВрд╡рд╛ Linux рд╕рд╛рдареА рдбрдЭрдирднрд░ рдкрд░реНрдпрд╛рдп.

рдирдВрддрд░ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУ, рдХрд▓реНрдкрдирд╛, рд░рд╛рдЗрдбрд░ рдЗ

3. рд░реЛрдЬрдЪрд╛ рд╡рд╛рдкрд░

рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рджреИрдирдВрджрд┐рди рд╡рд╛рдкрд░рд╛рджрд░рдореНрдпрд╛рди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡реЗрдЧрд╡рд╛рди рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдорд╛рд░реНрдЧрд╛рдВрдмрджреНрджрд▓ рдХрд╛рд╣реА рд╢рдмреНрдж рдмреЛрд▓рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ. рд╕рдВрдкреВрд░реНрдг рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕рд╛рдареА рдмрд░рд╛рдЪ рд╡реЗрд│ рд▓рд╛рдЧрддреЛ, рдкрд░рдВрддреБ рдЖрдкрдг рд╕рдВрдкреВрд░реНрдг рдкреНрд░рдХрд▓реНрдкрд╛рдд рдПрдХрд╛рдЪ рд╡реЗрд│реА рдХреЛрдб рдХрд┐рддреА рд╡реЗрд│рд╛ рдмрджрд▓рддреЛ? рдХреНрд╡рдЪрд┐рддрдЪ рдХреЛрдгрддреЗрд╣реА рд░рд┐рдлреЕрдХреНрдЯрд░рд┐рдВрдЧ рдЗрддрдХреЗ рдореЛрдареЗ рдЖрд╣реЗ рдХреА рддреЗ рд╕рдВрдкреВрд░реНрдг рдХреЛрдб рдмреЗрд╕рд╡рд░ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рдгрд╛рдо рдХрд░реЗрд▓. рдПрдХрд╛ рд╡реЗрд│реА рдмрджрд▓рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рдлрд╛рдпрд▓реАрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдХреНрд╡рдЪрд┐рддрдЪ рдбрдЭрдирдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрд╕рддреЗ, рдореНрд╣рдгреВрди рддреНрдпрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреЗ рдЕрд░реНрдердкреВрд░реНрдг рдЖрд╣реЗ. рдЕрд╢реА рдкрд░рд┐рд╕реНрдерд┐рддреА рдЖрд╣реЗ рд╡рд╛рдвреАрд╡ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЛрдб. рдлрдХреНрдд рдШрд╛рдмрд░реВ рдирдХрд╛, рд╣реЗ рджреБрд╕рд░реЗ рд╕рд╛рдзрди рдирд╛рд╣реА. рд╣рд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореЛрдб рдЖрд╣реЗ рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдмрджрд▓рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡рд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ рдЖрдгрд┐ рддреБрдореНрд╣реА рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ IDE рдордзреНрдпреЗ рдХрд╛рдо рдХрд░рдд рдЕрд╕рд╛рд▓ рддрд░ рдмрд┐рд▓реНрдбрд┐рдВрдЧрдирдВрддрд░ рд╣реЗ рдЖрдкреЛрдЖрдк рд╣реЛрддреЗ.

рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╛рд▓рд╛ рдЕрд▓реАрдХрдбреЗрдЪ рдмрджрд▓рд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрдордзреНрдпреЗ рд╕рдорд╕реНрдпрд╛ рдЖрдврд│рд▓реНрдпрд╛рд╕, рддреЛ рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдпрд╛рдЪреА рддрдХреНрд░рд╛рд░ рдХрд░реЗрд▓. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реВрдЪрдирд╛ рд╡рд╛рдкрд░реВрди рдпрд╛рдмрджреНрджрд▓ рд╕рд╛рдВрдЧреЗрд▓:

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рдкрд╛рд╕реВрди рдПрдХрддреНрд░реАрдХрд░рдг
рдЕрд░реНрдерд╛рдд, рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛ рд╕рд╛рдзрди рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрдгреЗ рдкреБрд░реЗрд╕реЗ рдирд╛рд╣реА. рддреЗ рдХрд╛рдп рдЖрд╣реЗ рдЖрдгрд┐ рдХрд╕реЗ рдЖрд╣реЗ рд╣реЗ рдЖрдкрдг рддреНрдпрд╛рдВрдирд╛ рдХрд╕реЗ рддрд░реА рд╕рд╛рдВрдЧрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпреЗрдереЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреАрд╡реНрд╣реАрдПрд╕-рд╕реНрдЯреБрдбрд┐рдУрд╕рд╛рдареА рддреНрд╡рд░рд┐рдд рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рдмрджреНрджрд▓рдЪреЗ рд▓реЗрдЦ рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рдЖрдкрдг рдЖрдкрд▓реНрдпрд╛ рдкрд╕рдВрддреАрдЪреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕рд╛рдзрдирд╛рд╕рд╛рдареА рд╕рдорд╛рди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╢реЛрдзреВ рд╢рдХрддрд╛:

рдЕрд╕реЗ рд▓реЗрдЦ рд░реЛрдЬрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реА рд╕рд░реНрд╡ рдорд╛рд╣рд┐рддреА рджреЗрддрд╛рдд рдЖрдгрд┐ рдЬрд╛рд╕реНрдд рд╡реЗрд│ рдШреЗрдд рдирд╛рд╣реАрдд. ЁЯЩВ

рд╕рд╛рдзрди рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░рд╣реА, рдЖрдореНрд╣реА рдкрд╣рд┐рд▓реНрдпрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдгрд╛рджрд░рдореНрдпрд╛рди рдЕрдиреЗрдХ рдЪреЗрддрд╛рд╡рдгреА рджрдбрдкрд▓реНрдпрд╛. рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд░рд┐рдкреВрд░реНрдг рдирд╛рд╣реАрдд, рдореНрд╣рдгреВрди рддреЗ рд╡реЗрд│реЛрд╡реЗрд│реА рдЦреЛрдЯреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рджреЗрддрд╛рдд. рддреНрдпрд╛рдВрдирд╛ рджрд╛рдмрдгреЗ рд╕рд╣рд╕рд╛ рд╕реЛрдкреЗ рдЕрд╕рддреЗ; рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУрд╕рд╛рдареА PVS-Studio рдкреНрд▓рдЧрдЗрдирдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдПрдХ рдмрдЯрдг рдХреНрд▓рд┐рдХ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓:

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рдкрд╛рд╕реВрди рдПрдХрддреНрд░реАрдХрд░рдг
рддрдерд╛рдкрд┐, рдЖрдкрдг рддреНрдпрд╛рдВрдирд╛ рджрд╛рдмрдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдмрд░реЗрдЪ рдХрд╛рд╣реА рдХрд░реВ рд╢рдХрддрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА рд╕рдорд░реНрдердирд╛рд╕рд╛рдареА рд╕рдорд╕реНрдпрд╛ рдиреЛрдВрджрд╡реВ рд╢рдХрддрд╛. рдЬрд░ рдЪреБрдХреАрдЪреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рджреБрд░реБрд╕реНрдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рддрд░ рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рдЕрджреНрдпрддрдирд╛рдВрдордзреНрдпреЗ рддреБрдореНрд╣реА рд▓рдХреНрд╖рд╛рдд рдШреЗрдК рд╢рдХрддрд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рддреБрдордЪреНрдпрд╛ рдХреЛрдбрдмреЗрд╕рд╕рд╛рдареА рдХрдореА рдЖрдгрд┐ рдХрдореА рдЪреБрдХреАрдЪреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЖрд╣реЗрдд.

рдПрдХреАрдХрд░рдгрд╛рдирдВрддрд░

рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдПрдХрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдЯрдкреНрдкреНрдпрд╛рдВрддреВрди рдЧреЗрд▓реЛ рдЖрд╣реЛрдд. CI рд╡рд░ рдЕрд╢реА рд╕рд╛рдзрдиреЗ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреЗ рдорд╣рддреНрддреНрд╡ рдЕрд╕реВрдирд╣реА, рддреНрдпрд╛рдВрдирд╛ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдЪреЗ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдард┐рдХрд╛рдг рдореНрд╣рдгрдЬреЗ рд╡рд┐рдХрд╕рдХрд╛рдЪрд╛ рд╕рдВрдЧрдгрдХ. рд╢реЗрд╡рдЯреА, рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣рд╛ рдиреНрдпрд╛рдпрд╛рдзреАрд╢ рдирд╛рд╣реА рдЬреЛ рддреБрдордЪреНрдпрд╛рдкрд╛рд╕реВрди рджреВрд░ рдХреБрдареЗрддрд░реА рдореНрд╣рдгрддреЛ рдХреА рдХреЛрдб рдЪрд╛рдВрдЧрд▓рд╛ рдирд╛рд╣реА. рдпрд╛рдЙрд▓рдЯ, рддреЛ рдПрдХ рдЕрд╕рд┐рд╕реНрдЯрдВрдЯ рдЖрд╣реЗ рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдердХрд╡рд╛ рдЖрд▓рд╛ рдЖрд╣реЗ рдХрд╛ рддреЗ рд╕рд╛рдВрдЧрддреЛ рдЖрдгрд┐ рддреБрдореНрд╣реА рдХрд╛рд╣реА рд╡рд┐рд╕рд░рд▓рд╛рдд рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рдг рдХрд░реВрди рджреЗрддреЛ.

рдЦрд░реЗ рдЖрд╣реЗ, рдирд┐рдпрдорд┐рдд рд╡рд╛рдкрд░рд╛рд╢рд┐рд╡рд╛рдп, рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рдореБрд│реЗ рд╡рд┐рдХрд╛рд╕ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╕реБрд▓рдн рд╣реЛрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдирд╛рд╣реА. рд╢реЗрд╡рдЯреА, рд╡рд┐рдХрд╕рдХрд╛рд╕рд╛рдареА рддреНрдпрд╛рдЪрд╛ рдореБрдЦреНрдп рдлрд╛рдпрджрд╛ рдХреЛрдбрдЪреНрдпрд╛ рдЬрдЯрд┐рд▓ рдЖрдгрд┐ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╡рд┐рднрд╛рдЧрд╛рдВрдЪрд╛ рд╢реЛрдз рдШреЗрдгреНрдпрд╛рдордзреНрдпреЗ рдирд╛рд╣реА рддрд░ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд▓рд╡рдХрд░ рд╢реЛрдзрдгреНрдпрд╛рдд рдЖрд╣реЗ. рд╕рд╣рдордд рдЖрд╣реЗ рдХреА рд╕рдВрдкрд╛рджрдиреЗ рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рдкрд╛рдард╡рд┐рд▓реНрдпрд╛рдирдВрддрд░ рд╕рдорд╕реНрдпрд╛ рд╢реЛрдзрдгреЗ рдХреЗрд╡рд│ рдЕрдкреНрд░рд┐рдпрдЪ рдирд╛рд╣реА рддрд░ рдЦреВрдк рд╡реЗрд│ рдШреЗрдгрд╛рд░реЗ рджреЗрдЦреАрд▓ рдЖрд╣реЗ. рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдирд┐рдпрдорд┐рддрдкрдгреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ рддреЗрд╡реНрд╣рд╛, рдкреНрд░рддреНрдпреЗрдХ рдмрджрд▓ рдереЗрдЯ рддреБрдордЪреНрдпрд╛ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдкрд╛рд╣рддреЛ рдЖрдгрд┐ рдХреЛрдбрд╡рд░ рдХрд╛рдо рдХрд░рдд рдЕрд╕рддрд╛рдирд╛ рд╕рдВрд╢рдпрд╛рд╕реНрдкрдж рдард┐рдХрд╛рдгрд╛рдВрдЪрд╛ рдЕрд╣рд╡рд╛рд▓ рджреЗрддреЛ.

рдЖрдгрд┐ рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд┐рдВрд╡рд╛ рддреБрдордЪреНрдпрд╛ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдВрдирд╛ рдЕрдЬреВрдирд╣реА рдЦрд╛рддреНрд░реА рдирд╕реЗрд▓ рдХреА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд▓рд╛рдЧреВ рдХрд░рдгреЗ рдпреЛрдЧреНрдп рдЖрд╣реЗ рдХреА рдирд╛рд╣реА, рддрд░ рдореА рд╕реБрдЪрд╡рд┐рддреЛ рдХреА рддреБрдореНрд╣реА рдЖрддрд╛ рд▓реЗрдЦ рд╡рд╛рдЪрд╛рдпрд▓рд╛ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рд╛ "рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ PVS-Studio рд╕рд╛рджрд░ рдХрд░рдгреНрдпрд╛рдЪреА рдХрд╛рд░рдгреЗ". рд╣реЗ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЪрд┐рдВрддреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рддреЗ рдХреА рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╕ рддреНрдпрд╛рдВрдЪрд╛ рд╡реЗрд│ рд▓рд╛рдЧреЗрд▓ рдЗрддреНрдпрд╛рджреА.

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рдкрд╛рд╕реВрди рдПрдХрддреНрд░реАрдХрд░рдг

рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╛ рд▓реЗрдЦ рдЗрдВрдЧреНрд░рдЬреА рднрд╛рд╖рд┐рдХ рдкреНрд░реЗрдХреНрд╖рдХрд╛рдВрд╕рд╣ рд╕рд╛рдорд╛рдпрд┐рдХ рдХрд░рд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓ рддрд░ рдХреГрдкрдпрд╛ рднрд╛рд╖рд╛рдВрддрд░ рджреБрд╡рд╛ рд╡рд╛рдкрд░рд╛: Maxim Zvyagintsev. рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг: рдкреНрд░рд╛рд░рдВрднрд╛рдкрд╛рд╕реВрди рдПрдХрддреНрд░реАрдХрд░рдгрд╛рдкрд░реНрдпрдВрдд.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛