рдЕрдирдиреНрдд рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рд╡рд╛ рдбрд┐рдмрдЧрд┐рдЩрдмрд╛рдЯ рдердХрд┐рдд, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рддрдкрд╛рдИрдВ рдЖрдлреНрдиреЛ рдЬреАрд╡рди рдХрд╕рд░реА рд╕рд░рд▓ рдмрдирд╛рдЙрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреНрдиреБрд╣реБрдиреНрдЫред рд░ рдЕрд▓рд┐рдХрддрд┐ рдЦреЛрдЬреА рдЧрд░реЗрдкрдЫрд┐, рд╡рд╛ рд╕рдВрдпреЛрдЧрд╡рд╢ рдпрд╕рдорд╛ рдареЛрдХреНрдХрд┐рдПрд░, рддрдкрд╛рдИрдВ рдЬрд╛рджреБрдИ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: "рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред" рдпреЛ рдХреЗ рд╣реЛ рд░ рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╕рдБрдЧ рдХрд╕рд░реА рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рд╕рдХреНрдЫ рд╣реЗрд░реМрдВред
рд╡рд╛рд╕реНрддрд╡рдорд╛, рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХреБрдиреИ рдкрдирд┐ рдЖрдзреБрдирд┐рдХ рднрд╛рд╖рд╛рдорд╛ рд▓реЗрдЦреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐, рдпреЛ рдорд╣рд╕реБрд╕ рдирдЧрд░реА, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдорд╛рд░реНрдлрдд рдЪрд▓рд╛рдЙрдиреБрд╣реБрдиреНрдЫред рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рдХреБрдиреИ рдкрдирд┐ рдЖрдзреБрдирд┐рдХ рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ рдХреЛрдбрдорд╛ рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВрдХреЛ рд╕рд╛рдиреЛ рд╕реЗрдЯ рднрдП рдкрдирд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛрдорд╛ 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 рд▓реЗ рдирд┐рдореНрди рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдЧрд░реНрджрдЫ:
рдпрджрд┐ рддрдкрд╛рдИрдВ рдпрд╕ рддреНрд░реБрдЯрд┐рдорд╛ рдЖрдлреНрдиреЛ рд╣рд╛рддрд╣рд░реВ рдкреЛрдХрд╛рдЙрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдХрдореНрдкрд╛рдЗрд▓рд░ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░рдорд╛ рддрдпрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН: *
рд░ рддрдкрд╛рдИрдВрд▓реЗ рдмреБрдЭреНрдиреБрднрдПрдХреЛ рд░реВрдкрдорд╛, рдХреЛрдбрдХреЛ рддреНрдпрд╕реНрддрд╛ рдЦрдгреНрдбрд╣рд░реВрдорд╛ рддреБрд░реБрдиреНрддреИ рдзреНрдпрд╛рди рджрд┐рди рд╕рдзреИрдВ рд╕рдореНрднрд╡ рдЫреИрди, рд░ рдпрд╕рдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВ рд░рд╛рдореНрд░реЛ рдШрдгреНрдЯрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдбрд┐рдмрдЧ рдЧрд░реНрди рдмрд╕реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдХрд┐рди рд╕рдмреИ рдХреБрд░рд╛ рдпрддрд┐ рдЕрдиреМрдареЛ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ рднрдиреЗрд░ рд╕реЛрдЪреНрджреИред
рдпрджреНрдпрдкрд┐, рдпреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдПрдХ рдЧрд▓реНрддреА рд╣реЛред рдХреЗ рд╣реБрдиреНрдЫ рдпрджрд┐ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рд╕рдмреЛрдкреНрдЯрд┐рдорд▓ рдХреЛрдб рд▓реЗрдЦреНрдпреЛ рдХрд┐рдирднрдиреЗ рдЙрд╕рд▓реЗ рднрд╛рд╖рд╛рдХреЛ рдХреЗрд╣реА рд╕реВрдХреНрд╖реНрдорддрд╛ рдмрд┐рд░реНрд╕реНрдпреЛ? рд╡рд╛ рдХреЛрдбрдорд╛ рдкрдирд┐ рдпрд╕рд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ рдЫ
рдпреА рдЕрд╡рд╕реНрдерд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рджреЗрдЦрд╛ рдкрд░реНрдпреЛред рдпреЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╣реЛ рдЬрд╕рд▓реЗ рдХреЛрдбрдорд╛ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдФрдВрд▓реНрдпрд╛рдЙрдЫ рд░ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреЗрдЫ рдХрд┐рди рдпреЛ рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди, рдпрд╕рд▓реЗ рдХреЗ рдирд┐рдореНрддреНрдпрд╛рдЙрди рд╕рдХреНрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗред рдпреЛ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рди рд╕рдХреНрдЫ рднрдиреНрдиреЗ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рдЫ: *
рддрдкрд╛рдИрдВрд▓реЗ рд▓реЗрдЦрд╣рд░реВрдорд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреЗ рдердк рд░реЛрдЪрдХ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
10 рдХреЛ рд▓рд╛рдЧрд┐ C++ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рд╢реАрд░реНрд╖ 2019 рддреНрд░реБрдЯрд┐рд╣рд░реВ 10 рдХреЛ рд▓рд╛рдЧрд┐ C# рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рд╢реАрд░реНрд╖ 2019 рддреНрд░реБрдЯрд┐рд╣рд░реВ 10 рдХрд╛ рд▓рд╛рдЧрд┐ рдЬрд╛рднрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рд╢реАрд░реНрд╖ 2019 рдмрдЧрд╣рд░реВ
рдЕрдм рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рд╕рд╛рдордЧреНрд░реА рдкрдвреНрдиреБрднрдПрдХреЛ рдЫ рд░ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд╛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдмрд╛рд░реЗ рд╡рд┐рд╢реНрд╡рд╕реНрдд рд╣реБрдиреБрд╣реБрдиреНрдЫ, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрд░ рдХрд╣рд╛рдБ рд╕реБрд░реБ рдЧрд░реНрдиреЗ? рддрдкрд╛рдИрдВрдХреЛ рд╣рд╛рд▓рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдирдпрд╛рдБ рдЙрдкрдХрд░рдг рдХрд╕рд░реА рдПрдХреАрдХреГрдд рдЧрд░реНрдиреЗ? рдЕрдирд┐ рдЙрд╣рд╛рдБрд▓рд╛рдИ рдЯреЛрд▓реАрдХреЛ рдкрд░рд┐рдЪрдп рдХрд╕рд░реА рджрд┐рдиреЗ ? рддрдкрд╛рдИрдВрд▓реЗ рддрд▓ рдпреА рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рдкрд╛рдЙрдиреБрд╣реБрдиреЗрдЫред
рдиреЛрдЯред рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд▓реЗ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдЬрд╕реНрддрд╛ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬрд▓рд╛рдИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╡рд╛ рд░рджреНрдж рдЧрд░реНрджреИрдиред рдпрд╕рд▓реЗ рдпрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдкреВрд░рдХ рдмрдирд╛рдЙрдБрдЫ, рдЯрд╛рдпрдкреЛ, рдЕрд╢реБрджреНрдзрддрд╛, рд░ рдЦрддрд░рдирд╛рдХ рдбрд┐рдЬрд╛рдЗрдирд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рдзреНрдпрд╛рди рджрд┐рди рд░ рд╕рдЪреНрдпрд╛рдЙрди рдорджреНрджрдд рдЧрд░реНрджрдЫред рдпреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд░ рдХреЛрдб рд╕реНрдкрд╖реНрдЯрддрд╛ рдорд╛ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдорд╛ рдлреЛрдХрд╕ рдЧрд░реНрди рдзреЗрд░реИ рдЙрддреНрдкрд╛рджрдХ рдЫ, рдПрдХ рдЧрд▓рдд рдХреЛрд╖реНрдардХ рдЦреЛрдЬреНрдиреБ рднрдиреНрджрд╛ рд╕рдЯреНрдЯрд╛ рд╡рд╛
0. рдЙрдкрдХрд░рдг рдЪрд┐рдиреНрджреИ
рдпреЛ рд╕рдмреИ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЧ рд╕реБрд░реБ рд╣реБрдиреНрдЫред рд╡рд╛рд╕реНрддрд╡рдорд╛, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдХрд╣рд┐рд▓реНрдпреИ рдЙрдкрдХрд░рдг рдкреНрд░рддреНрдпрдХреНрд╖ рджреЗрдЦреНрдиреБ рднрдПрдХреЛ рдЫреИрди рднрдиреЗ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдХреЗрд╣рд┐ рдкрд░рд┐рдЪрдп рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рддрдкрд╛рдИрдВрд▓реЗ рдЧрд░реНрдиреБ рдкрд░реНрдиреЗ рдкрд╣рд┐рд▓реЛ рдХреБрд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛ
рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕ рдЪрд░рдгрдорд╛ рдХреЗ рд╕рд┐рдХреНрдиреБрд╣реБрдиреЗрдЫ:
- рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рд╣рд░реВ рдХреЗ рд╣реБрдиреН;
- рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рддрдкрд╛рдИрдВрдХреЛ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдВрдЧ рдЙрдкрдпреБрдХреНрдд рдЫ?
- рддрдкрд╛рдИрдХрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рдЕрд╣рд┐рд▓реЗ рдХреЗ рдХрд╕реНрддрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЫрдиреН?
рддрдкрд╛рдИрд▓реЗ рдЪрд╛рд╣рд┐рдиреЗ рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рддрдкрд╛рдИрд▓реЗ рдЧрд░реНрдиреБ рдкрд░реНрдиреЗ рдкрд╣рд┐рд▓реЛ рдХреБрд░рд╛ рд╕рдореНрдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд▓рд╛рдЙрдиреБ рд╣реЛ (
рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╣рд░реВрд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдареВрд▓реЛ рдХреЛрдб рдЖрдзрд╛рд░рдХреЛ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рдЬрд╛рд░реА рдЧрд░реНрдЫрдиреНред рддреА рд╕рдмреИ рдареАрдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди, рдХрд┐рдирдХрд┐ рддрдкрд╛рдИрдВрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ, рдЬрд╕рдХреЛ рдорддрд▓рдм рдпреА рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЫреИрдирдиреНред рдпрджреНрдпрдкрд┐, рддрдкрд╛рдИрдВ
рд╡рд╛рд╕реНрддрд╡рдорд╛, 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
рдкрд╣рд┐рд▓реЛ рдЖрджреЗрд╢рд▓реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреЗрдЫ, рд░ рджреЛрд╕реНрд░реЛрд▓реЗ
рдиреЛрдЯред рдкрд╛рда рдврд╛рдБрдЪрд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫред рдпреЛ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд░реВрдк рдорд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рдЫред рдердк рд░реЛрдЪрдХ рд░рд┐рдкреЛрд░реНрдЯ рдврд╛рдБрдЪрд╛рдорд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН - FullHtmlред рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЛрдб рдорд╛рд░реНрдлрдд рдиреЗрднрд┐рдЧреЗрдЯ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред
рддрдкрд╛рдЗрдБ рд▓реЗрдЦ рдорд╛ 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
рддрдкрд╛рдЗрдБ рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдердк рдЬрд╛рдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ *
рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗрдЯрдЕрдк рдЧрд░реЗрд░, рддрдкрд╛рдИрдВрд▓реЗ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рдХрдорд┐рдЯрд╣рд░реВ рдмреНрд▓рдХ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕рд▓реЗ рдЧрд░реНрджрд╛ рдкрд░реАрдХреНрд╖рдг рдирдЧрд░рд┐рдПрдХреЛ рдХреЛрдб рдкрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред
рдпреЛ рд╕рдмреИ рдкрдХреНрдХреИ рд░рд╛рдореНрд░реЛ рдЫ, рддрд░ рдо рд╕рдмреИ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рдПрдХреИ рдард╛рдЙрдБрдорд╛ рд╣реЗрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрди рдЪрд╛рд╣рдиреНрдЫреБред рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрдмрд╛рдЯ рдорд╛рддреНрд░ рд╣реЛрдЗрди, рддрд░ рдПрдХрд╛рдЗ рдкрд░реАрдХреНрд╖рдг рд╡рд╛ рдЧрддрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрдмрд╛рдЯ рдкрдирд┐ред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рд╣рд░реВ рд░ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рдЫрдиреНред PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдЫ
2. рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ рдПрдХреАрдХрд░рдг
рдЕрдм рдпреЛ рджреИрдирд┐рдХ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рд╕рдордп рд╣реЛред рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛ рддрдкрд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдХрд╛рдо рдЧрд░реНрдиреЗ рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВрд╕рдБрдЧ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдиреБрднрдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рднрд╛рдЧ рднрдиреНрди рд╕рдХрд┐рдиреНрдЫред
рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЖрдлреИрдВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдпрджреНрдпрдкрд┐, рдпрд╕рд▓реЗ рдзреЗрд░реИ рд╕рдордп рд▓рд┐рдиреЗрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рдХрд╛рд╕рдмрд╛рдЯ рд╡рд┐рдЪрд▓рд┐рдд рдЧрд░реНрдиреЗрдЫ, рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдЗрдБ рд╕реНрдерд╛рдкрдирд╛рдХрд░реНрддрд╛ рд░ рдЖрд╡рд╢реНрдпрдХ рдЭрдгреНрдбрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ рдХреЛ рд▓рд╛рдЧреА рд╡рд┐рднрд┐рдиреНрди рдЫрдиреН
рддреНрдпрд╕реЛ рднрдП рддрдкрд╛рдИрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐
3. рджреИрдирд┐рдХ рдкреНрд░рдпреЛрдЧ
рдпрд╕ рдЪрд░рдгрдорд╛, рдпреЛ рджреИрдирд┐рдХ рдкреНрд░рдпреЛрдЧрдХреЛ рд╕рдордпрдорд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд▓рд╛рдИ рдЧрддрд┐ рджрд┐рдиреЗ рддрд░рд┐рдХрд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗрд╣реА рд╢рдмреНрджрд╣рд░реВ рднрдиреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдордп рд╣реЛред рд╕рдореНрдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдкреВрд░реНрдг рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд▓реЗ рдзреЗрд░реИ рд╕рдордп рд▓рд┐рдиреНрдЫ, рддрд░ рд╣рд╛рдореА рдХрддрд┐ рдкрдЯрдХ рд╕рдореНрдкреВрд░реНрдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреМрдВ? рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдкрдирд┐ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░рд┐рдЩ рдпрддрд┐ рдареВрд▓реЛ рдЫ рдХрд┐ рдпрд╕рд▓реЗ рддреБрд░реБрдиреНрддреИ рд╕рдореНрдкреВрд░реНрдг рдХреЛрдб рдЖрдзрд╛рд░рд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдЫред рдПрдХ рдкрдЯрдХрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рднрдЗрд░рд╣реЗрдХрд╛ рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рд░рд▓реИ рдПрдХ рджрд░реНрдЬрдирднрдиреНрджрд╛ рдмрдвреА рд╣реБрдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреБ рдЕрд░реНрдердкреВрд░реНрдг рд╣реБрдиреНрдЫред рдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕реНрддреЛ рдЕрд╡рд╕реНрдерд╛ рдЫ
рдпрджрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд▓реЗ рднрд░реНрдЦрд░реИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХреЛ рдХреЛрдбрдорд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдПрдорд╛, рдпрд╕рд▓реЗ рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реНрдиреЗрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, PVS-Studio рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпрд╕рдмрд╛рд░реЗ рдЕрд▓рд░реНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмрддрд╛рдЙрдиреЗрдЫ:
рдЕрд╡рд╢реНрдп рдкрдирд┐, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рднрдиреНрдиреБ рдкрд░реНрдпрд╛рдкреНрдд рдЫреИрдиред рд╣рд╛рдореАрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдпреЛ рдХреЗ рд╣реЛ рд░ рдпреЛ рдХрд╕реНрддреЛ рдЫ рднрдиреЗрд░ рдмрддрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, PVS-рд╕реНрдЯреБрдбрд┐рдпреЛрдХреЛ рд▓рд╛рдЧрд┐ рджреНрд░реБрдд рд╕реБрд░реБрд╡рд╛рддрдХреЛ рдмрд╛рд░реЗрдорд╛ рд▓реЗрдЦрд╣рд░реВ рдЫрдиреН, рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдордирдкрд░реНрдиреЗ рдХреБрдиреИ рдкрдирд┐ рдЙрдкрдХрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд╛рди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
рд╡рд┐рдиреНрдбреЛрдЬрдорд╛ PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ (C, C++, C#) рд▓рд┐рдирдХреНрд╕ рд░ macOS (C, C++) рдорд╛ PVS-Studio рдХрд╕рд░реА рдЪрд▓рд╛рдЙрдиреЗ PVS-Studio Java рдХрд╕рд░реА рд╕реБрд░реБ рдЧрд░реНрдиреЗ
рддреНрдпрд╕реНрддрд╛ рд▓реЗрдЦрд╣рд░реВрд▓реЗ рджреИрдирд┐рдХ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рд░ рдзреЗрд░реИ рд╕рдордп рд▓рд╛рдЧреНрджреИрдиред ЁЯЩВ
рдЙрдкрдХрд░рдг рдЬрд╛рдиреНрдирдХреЛ рдЪрд░рдгрдорд╛ рдкрдирд┐, рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЛ рд▓рдиреНрдЪрд╣рд░реВ рдордзреНрдпреЗ рдПрдХрдХреЛ рд╕рдордпрдорд╛ рдзреЗрд░реИ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВрд▓рд╛рдИ рджрдмрд╛рдПрдХрд╛ рдЫреМрдВред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╣рд░реВ рд╕рд╣реА рдЫреИрдирдиреН, рддреНрдпрд╕реИрд▓реЗ рд╕рдордп рд╕рдордпрдорд╛ рддрд┐рдиреАрд╣рд░реВ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рджрд┐рдиреНрдЫрдиреНред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рджрдмрд╛рдЙрди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреНрдЫ; рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рднрд┐рдЬреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдпреЛрдХреЛ рд▓рд╛рдЧрд┐ PVS-рд╕реНрдЯреБрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрдирдорд╛ рддрдкрд╛рдИрд▓реЗ рдПрдЙрдЯрд╛ рдмрдЯрди рдХреНрд▓рд┐рдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:
рдпрджреНрдпрдкрд┐, рддрдкрд╛рдЗрдБ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рджрдмрд╛рдЙрди рднрдиреНрджрд╛ рдмрдвреА рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдорд░реНрдерди рдЧрд░реНрди рд╕рдорд╕реНрдпрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрджрд┐ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рднрд╡рд┐рд╖реНрдпрдХрд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХрд╣рд░реВрдорд╛ рддрдкрд╛рдИрд▓реЗ рдпрд╛рдж рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рддрдкрд╛рдЗрдБрдХреЛ рдХреЛрдбрдмреЗрд╕рдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдо рд░ рдХрдо рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХрд╣рд░реВ рдЫрдиреНред
рдПрдХреАрдХрд░рдг рдкрдЫрд┐
рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд▓рд╛рдИ рдПрдХреАрдХреГрдд рдЧрд░реНрдиреЗ рд╕рдмреИ рдЪрд░рдгрд╣рд░реВ рдкрд╛рд░ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВред CI рдорд╛ рддреНрдпрд╕реНрддрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреЗ рдорд╣рддреНрддреНрд╡рдХреЛ рдмрд╛рдмрдЬреБрдж, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рди рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рдХрдореНрдкреНрдпреБрдЯрд░ рд╣реЛред рдЖрдЦрд┐рд░, рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рдиреНрдпрд╛рдпрд╛рдзреАрд╢ рд╣реЛрдЗрди рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдмрд╛рдЯ рдЯрд╛рдврд╛ рдХрддреИ рднрдиреНрдЫ рдХрд┐ рдХреЛрдб рд░рд╛рдореНрд░реЛ рдЫреИрдиред рдпрд╕рдХреЛ рд╡рд┐рдкрд░рд┐рдд, рдпреЛ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╣реЛ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдерд╛рдХреЗрдХреЛ рдЫ рднрдиреЗ рдмрддрд╛рдЙрдБрдЫ рд░ рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХреЗрд╣рд┐ рдмрд┐рд░реНрд╕рдиреБрднрдпреЛ рднрдиреЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдореНрдЭрд╛рдЙрдБрдЫред
рд╕рд╛рдБрдЪреЛ, рдирд┐рдпрдорд┐рдд рдкреНрд░рдпреЛрдЧ рдмрд┐рдирд╛, рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд▓реЗ рд╡рд┐рдХрд╛рд╕рд▓рд╛рдИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рд░рд▓ рдмрдирд╛рдЙрди рдЕрд╕рдореНрднрд╡ рдЫред рдЖрдЦрд┐рд░, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕рдХреЛ рдореБрдЦреНрдп рдлрд╛рдЗрджрд╛ рдХреЛрдбрдХреЛ рдЬрдЯрд┐рд▓ рд░ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рдЦрдгреНрдбрд╣рд░реВрдХреЛ рдЦреЛрдЬреАрдорд╛ рд╣реЛрдЗрди, рддрд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдкрд╣рд┐рдЪрд╛рдирдорд╛ рдЫред рдкрд░рд┐рдХреНрд╖рдгрдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдореНрдкрд╛рджрдирд╣рд░реВ рдкрдард╛рдЗрд╕рдХреЗрдкрдЫрд┐ рд╕рдорд╕реНрдпрд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБ рдЕрдкреНрд░рд┐рдп рдорд╛рддреНрд░ рд╣реЛрдЗрди, рдзреЗрд░реИ рд╕рдордп рд▓рд╛рдЧреНрдиреЗ рдкрдирд┐ рд╣реЛ рднрдиреНрдиреЗ рдХреБрд░рд╛рдорд╛ рд╕рд╣рдордд рд╣реБрдиреБрд╣реБрдиреНрдЫред рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдЬрдм рдирд┐рдпрдорд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рд╡рд░реНрддрдирд▓рд╛рдИ рд╕реАрдзрд╛ рддрдкрд╛рдЗрдБрдХреЛ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ рд╣реЗрд░реНрдЫ рд░ рдХреЛрдбрдорд╛ рдХрд╛рдо рдЧрд░реНрджрд╛ рд╢рдВрдХрд╛рд╕реНрдкрдж рд╕реНрдерд╛рдирд╣рд░реВ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реНрджрдЫред
рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╡рд╛ рддрдкрд╛рдЗрдБрдХрд╛ рд╕рд╣рдХрд░реНрдореАрд╣рд░реВ рдЕрдЭреИ рдкрдирд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд▓рд╛рдЧреВ рдЧрд░реНрди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рдЫреИрди рднрдиреЗрд░ рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрдиреБрд╣реБрдиреНрди рднрдиреЗ, рдо рд╕реБрдЭрд╛рд╡ рджрд┐рдиреНрдЫреБ рдХрд┐ рддрдкрд╛рдЗрдБ рдЕрдм рд▓реЗрдЦ рдкрдвреНрди рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН "
рдпрджрд┐ рддрдкрд╛рдЗрдБ рдпреЛ рд▓реЗрдЦ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓реНрдиреЗ рджрд░реНрд╢рдХрд╣рд░реВрд╕рдБрдЧ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рд▓рд┐рдЩреНрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН: Maxim Zvyagintsevред
рд╕реНрд░реЛрдд: www.habr.com