рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рджреЗрдЦрд┐ рдПрдХреАрдХрд░рдг рд╕рдореНрдо

рдЕрдирдиреНрдд рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рд╡рд╛ рдбрд┐рдмрдЧрд┐рдЩрдмрд╛рдЯ рдердХрд┐рдд, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рддрдкрд╛рдИрдВ рдЖрдлреНрдиреЛ рдЬреАрд╡рди рдХрд╕рд░реА рд╕рд░рд▓ рдмрдирд╛рдЙрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреНрдиреБрд╣реБрдиреНрдЫред рд░ рдЕрд▓рд┐рдХрддрд┐ рдЦреЛрдЬреА рдЧрд░реЗрдкрдЫрд┐, рд╡рд╛ рд╕рдВрдпреЛрдЧрд╡рд╢ рдпрд╕рдорд╛ рдареЛрдХреНрдХрд┐рдПрд░, рддрдкрд╛рдИрдВ рдЬрд╛рджреБрдИ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: "рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред" рдпреЛ рдХреЗ рд╣реЛ рд░ рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╕рдБрдЧ рдХрд╕рд░реА рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рд╕рдХреНрдЫ рд╣реЗрд░реМрдВред

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

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рджреЗрдЦрд┐ рдПрдХреАрдХрд░рдг рд╕рдореНрдо
рдпрд╕ рдЖрдЙрдЯрдкреБрдЯрдорд╛ рд╣рд╛рдореА рд╣реЗрд░реНрдЫреМрдВ рдХрд┐ рдЪрд░ var рд╕рдорд╛рд░реЛрд╣рдорд╛ рдХрд╣рд┐рдБ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрдиред рддреНрдпрд╕реЛрднрдП рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛рдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рд▓рдЧрднрдЧ рд╕рдзреИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрднрдпреЛред рдпрджреНрдпрдкрд┐, рдХрднрд░рд┐рдЯреА, рдХреНрд▓реЛрдХрд╡рд░реНрдХ рд╡рд╛ PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ рдЬрд╕реНрддрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╣рд░реВрдХреЛ рд╡рд┐рдкрд░реАрдд, рдХрдореНрдкрд╛рдЗрд▓рд░рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХрд╛ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВрд▓реЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рд╕рд╛рдиреЛ рджрд╛рдпрд░рд╛ рдорд╛рддреНрд░ рд╕рдВрдХреЗрдд рдЧрд░реНрди рд╕рдХреНрдЫред

рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╣реЛ рд░ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдерд╛рд╣рд╛ рдЫреИрди рднрдиреЗ, рдпреЛ рд▓реЗрдЦ рдкрдвреНрдиреБрд╣реЛрд╕реНрдпрд╕ рдкрджреНрдзрддрд┐рдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдиреНрдирдХреЛ рд▓рд╛рдЧрд┐ред

рддрдкрд╛рдИрд▓рд╛рдИ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рди рдЪрд╛рд╣рд┐рдиреНрдЫ?

рд╕рдВрдХреНрд╖реЗрдкрдорд╛: рддреНрд╡рд░рдг рд░ рд╕рд░рд▓реАрдХрд░рдгред

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЛрдбрдорд╛ рдзреЗрд░реИ рдлрд░рдХ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ: рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгрдХреЛ рдЧрд▓рдд рдкреНрд░рдпреЛрдЧрджреЗрдЦрд┐ рдЯрд╛рдЗрдкреЛрд╕рдореНрдоред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдХреЛ рд╕рдЯреНрдЯрд╛

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-рд╕реНрдЯреБрдбрд┐рдпреЛрдХреЛ рдорд╛рдорд▓рд╛рдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рд╕рдорд╛рди рддрд╕реНрд╡реАрд░ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ (рдХреНрд▓рд┐рдХ рдЧрд░реНрди рд╕рдХрд┐рдиреЗ):

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

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рджреЗрдЦрд┐ рдПрдХреАрдХрд░рдг рд╕рдореНрдо
рд╡рд╛рд╕реНрддрд╡рдорд╛, 178 рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рдзреЗрд░реИ рд╣рдЬрд╛рд░ рднрдиреНрджрд╛ рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫрдиреН ...

рдЯреНрдпрд╛рдмрд╣рд░реВрдорд╛ рдордзреНрдпрдо ╨╕ рдХрдо рдкреНрд░рд╛рдпрдГ рддреНрдпрд╣рд╛рдБ рд░рд╛рдореНрд░реЛ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рдЫрдиреН, рддрд░ рдпреА рдХреЛрдЯреАрд╣рд░реВрдорд╛ рддреА рдирд┐рджрд╛рдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН рдЬрд╕рдорд╛ рдХрдо рд╕рдЯреАрдХрддрд╛ (рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛) рдЫред рдЪреЗрддрд╛рд╡рдиреА рд╕реНрддрд░рд╣рд░реВ рд░ Windows рдЕрдиреНрддрд░реНрдЧрдд рдХрд╛рдо рдЧрд░реНрдиреЗ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ: *рд░реБрдиреБ*.

рд╕рдмреИрднрдиреНрджрд╛ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реНрдиреБ (рд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдЪреНрдпрд╛рдЗрдпреЛ) рд▓рд╛рдпрдХ рдЫ рдмрд╛рдБрдХреА рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рджрдмрд╛рдЙрдиред рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫ рддрд╛рдХрд┐ рдирдпрд╛рдБ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рдкреБрд░рд╛рдирд╛рд╣рд░реВ рдмреАрдЪ рд╣рд░рд╛рдЙрди рдирдкрд░реЛрд╕реНред рдердк рд░реВрдкрдорд╛, рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╣рд╛рдпрдХ рд╣реЛ, рдмрдЧрд╣рд░реВрдХреЛ рд╕реВрдЪреА рд╣реЛрдЗрдиред ЁЯЩВ

1. рдЕрдЯреЛрдореЗрдЯрд┐рдЬрд╛рд╕рд┐рдпрд╛

рдкрд░рд┐рдЪрд┐рдд рднрдПрдкрдЫрд┐, рдпреЛ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рд░ CI рдорд╛ рдПрдХреАрдХреГрдд рдЧрд░реНрдиреЗ рд╕рдордп рд╣реЛред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВрд▓реЗ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдпреЛ рдЧрд░рд┐рдиреБрдкрд░реНрдЫред рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рдХреНрд╖рдо рдЧрд░реНрди рдмрд┐рд░реНрд╕рди рд╕рдХреНрдЫ рд╡рд╛ рдпреЛ рдЧрд░реНрди рдЪрд╛рд╣рдБрджреИрдиред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдмреИ рдХреБрд░рд╛рдХреЛ рдЕрдиреНрддрд┐рдо рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рддрд╛рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдирдЧрд░рд┐рдПрдХреЛ рдХреЛрдб рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд╛рд╕ рд╢рд╛рдЦрд╛рдорд╛ рдкреНрд░рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред

рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕ рдЪрд░рдгрдорд╛ рдХреЗ рд╕рд┐рдХреНрдиреБрд╣реБрдиреЗрдЫ:

  • рдЙрдкрдХрд░рдгрд▓реЗ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ;
  • рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рддрдкрд╛рдЗрдБрдХреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рд╕рдВрдЧ рдЙрдкрдпреБрдХреНрдд рдЫ?

рд╕рд┐рджреНрдз рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдЕрд╡рд╕реНрдерд┐рдд рдирднрдПрдХреЛрд▓реЗ, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдВ рддрдкрд╛рдИрдВрд▓реЗ рд▓реЗрдЦреНрдиреБ рдкрд░реНрдЫ рд╕рдорд░реНрдердиред рдпреЛ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рд░ рд╣рд╛рдореА рддрдкрд╛рдИрдВрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрди рдкрд╛рдЙрдБрджрд╛ рдЦреБрд╕реА рдЫреМрдВред ЁЯЩВ

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

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

CI рдорд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдПрдХреАрдХреГрдд рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рддреАрди рдЪреАрдЬрд╣рд░реВ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

  • рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН;
  • рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд▓рд┐рдирдХреНрд╕ (рдбреЗрдмрд┐рдпрди-рдмреЗрд╕) рдорд╛ PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рдЖрджреЗрд╢рд╣рд░реВ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

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

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

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

рддрдкрд╛рдЗрдБ Windows рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдердк рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ *рдпрд╣рд╛рдБ*.

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

рд▓рдиреНрдЪ рд╡рд┐рдзрд┐ рдкреНрд▓реЗрдЯрдлрд░реНрдо рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рднрдПрдХреЛрд▓реЗ, рдо рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ C++ (Linux) рдХреЛ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦрд╛рдЙрдиреЗрдЫреБ:

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

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

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

рддрдкрд╛рдЗрдБ рд▓реЗрдЦ рдорд╛ CI рдорд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗрдЯрдЕрдк рдмрд╛рд░реЗ рдердк рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ "PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ рд░ рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг"(рд╡рд┐рдиреНрдбреЛрдЬ) рд╡рд╛"Travis CI рдорд╛ PVS-Studio рдХрд╕рд░реА рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреЗ"(рд▓рд┐рдирдХреНрд╕)ред

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

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреБ 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-рд╕реНрдЯреБрдбрд┐рдпреЛ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдЫ SonarQube рдорд╛ рдПрдХреАрдХрд░рдг рдХреЛ рд▓рд╛рдЧреА рдкреНрд▓рдЧрдЗрди.

2. рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ рдПрдХреАрдХрд░рдг

рдЕрдм рдпреЛ рджреИрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рд╕рдордп рд╣реЛред рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛ рддрдкрд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдХрд╛рдо рдЧрд░реНрдиреЗ рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВрд╕рдБрдЧ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдиреБрднрдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рднрд╛рдЧ рднрдиреНрди рд╕рдХрд┐рдиреНрдЫред

рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЖрдлреИрдВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдпрджреНрдпрдкрд┐, рдпрд╕рд▓реЗ рдзреЗрд░реИ рд╕рдордп рд▓рд┐рдиреЗрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рдХрд╛рд╕рдмрд╛рдЯ рд╡рд┐рдЪрд▓рд┐рдд рдЧрд░реНрдиреЗрдЫ, рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдЗрдБ рд╕реНрдерд╛рдкрдирд╛рдХрд░реНрддрд╛ рд░ рдЖрд╡рд╢реНрдпрдХ рдЭрдгреНрдбрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ рдХреЛ рд▓рд╛рдЧреА рд╡рд┐рднрд┐рдиреНрди рдЫрдиреН рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд▓рд╛рдЧреА рдЭрдгреНрдбрд╛ред рдпрджреНрдпрдкрд┐, рддреНрдпрд╣рд╛рдБ рд╕рдзреИрдВ рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХрд╣рд░реВ рдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Chocolatey (Windows), Homebrew (macOS) рд╡рд╛ рд▓рд┐рдирдХреНрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рджрд░реНрдЬрдиреМрдВ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВред

рддреНрдпрд╕реЛ рднрдП рддрдкрд╛рдИрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ, рдЖрдЗрдбрд┐рдпрд╛, рд╕рд╡рд╛рд░ рдЖрджрд┐

3. рджреИрдирд┐рдХ рдкреНрд░рдпреЛрдЧ

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

рдпрджрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд▓реЗ рднрд░реНрдЦрд░реИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдХреЛрдбрдорд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдПрдорд╛, рдпрд╕рд▓реЗ рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реНрдиреЗрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, PVS-Studio рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпрд╕рдмрд╛рд░реЗ рдЕрд▓рд░реНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмрддрд╛рдЙрдиреЗрдЫ:

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

рддреНрдпрд╕реНрддрд╛ рд▓реЗрдЦрд╣рд░реВрд▓реЗ рджреИрдирд┐рдХ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рд░ рдзреЗрд░реИ рд╕рдордп рд▓рд╛рдЧреНрджреИрдиред ЁЯЩВ

рдЙрдкрдХрд░рдг рдЬрд╛рдиреНрдирдХреЛ рдЪрд░рдгрдорд╛ рдкрдирд┐, рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЛ рд▓рдиреНрдЪрд╣рд░реВ рдордзреНрдпреЗ рдПрдХрдХреЛ рд╕рдордпрдорд╛ рдзреЗрд░реИ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВрд▓рд╛рдИ рджрдмрд╛рдПрдХрд╛ рдЫреМрдВред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╣рд░реВ рд╕рд╣реА рдЫреИрдирдиреН, рддреНрдпрд╕реИрд▓реЗ рд╕рдордп рд╕рдордпрдорд╛ рддрд┐рдиреАрд╣рд░реВ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рджрд┐рдиреНрдЫрдиреНред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рджрдмрд╛рдЙрди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреНрдЫ; рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛрдХреЛ рд▓рд╛рдЧрд┐ PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрдирдорд╛ рддрдкрд╛рдИрд▓реЗ рдПрдЙрдЯрд╛ рдмрдЯрди рдХреНрд▓рд┐рдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

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

рдПрдХреАрдХрд░рдг рдкрдЫрд┐

рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реНрдиреЗ рд╕рдмреИ рдЪрд░рдгрд╣рд░реВ рдкрд╛рд░ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВред CI рдорд╛ рддреНрдпрд╕реНрддрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рдорд╣рддреНрддреНрд╡рдХреЛ рдмрд╛рдмрдЬреБрдж, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рди рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рдХрдореНрдкреНрдпреБрдЯрд░ рд╣реЛред рдЖрдЦрд┐рд░, рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рдиреНрдпрд╛рдпрд╛рдзреАрд╢ рд╣реЛрдЗрди рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдмрд╛рдЯ рдЯрд╛рдврд╛ рдХрддреИ рднрдиреНрдЫ рдХрд┐ рдХреЛрдб рд░рд╛рдореНрд░реЛ рдЫреИрдиред рдпрд╕рдХреЛ рд╡рд┐рдкрд░рд┐рдд, рдпреЛ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╣реЛ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдерд╛рдХреЗрдХреЛ рдЫ рднрдиреЗ рдмрддрд╛рдЙрдБрдЫ рд░ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХреЗрд╣рд┐ рдмрд┐рд░реНрд╕рдиреБрднрдпреЛ рднрдиреЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдореНрдЭрд╛рдЙрдБрдЫред

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

рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╡рд╛ рддрдкрд╛рдЗрдБрдХрд╛ рд╕рд╣рдХрд░реНрдореАрд╣рд░реВ рдЕрдЭреИ рдкрдирд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд▓рд╛рдЧреВ рдЧрд░реНрди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрдиреБрд╣реБрдиреНрди рднрдиреЗ, рдо рд╕реБрдЭрд╛рд╡ рджрд┐рдиреНрдЫреБ рдХрд┐ рддрдкрд╛рдЗрдБ рдЕрдм рд▓реЗрдЦ рдкрдвреНрди рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН "рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ рдкрд░рд┐рдЪрдп рдЧрд░рд╛рдЙрдиреЗ рдХрд╛рд░рдгрд╣рд░реВ"ред рдпрд╕рд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдЪрд┐рдиреНрддрд╛рд▓рд╛рдИ рд╕рдореНрдмреЛрдзрди рдЧрд░реНрджрдЫ рдХрд┐ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд▓реЗ рдЙрдиреАрд╣рд░реВрдХреЛ рд╕рдордп рд▓рд┐рдиреНрдЫ рд░ рдпрд╕реНрддреИред

рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг - рдкрд░рд┐рдЪрдп рджреЗрдЦрд┐ рдПрдХреАрдХрд░рдг рд╕рдореНрдо

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди