PVS-Studio: MISRA C рдФрд░ MISRA C ++ рдХреЛрдбрд┐рдВрдЧ рдорд╛рдирдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ

PVS-Studio, MISRA C, MISRA C ++

рд╕рдВрд╕реНрдХрд░рдг 6.27 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, PVS-Studio рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ MISRA C рдФрд░ MISRA C ++ рдорд╛рдирдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдиреА рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрди рдорд╛рдирдХреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛, рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕ рд╕рд╛рд▓ рд╣рдордиреЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ CWE рдФрд░ SEI CERT рдЬреИрд╕реЗ рдорд╛рдирдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ, рдЗрди рдорд╛рдирдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рд▓рд╛рдЧреВ рдирд┐рджрд╛рди рдХреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдиреАрдЪреЗ рдЖрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдХрдИ рдирдП рдирд┐рджрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдереЗ рдпрд╛ рдЗрди рдорд╛рдирдХреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреБрд░рд╛рдиреЗ рдирд┐рджрд╛рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╡рд┐рднрд┐рдиреНрди рдорд╛рдирдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреА рдЕрдиреБрдкрд╛рд▓рди рддрд╛рд▓рд┐рдХрд╛рдПрдБ:


рдЕрдм рдпрд╣ MISRA C рдФрд░ MISRA C ++ рдорд╛рдирдХреЛрдВ рдХрд╛ рд╕рдордп рд╣реИред рдпреЗ CIS рдФрд░ C ++ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдорд╛рдирдХ рд╣реИрдВ рдЬреЛ MISRA (рдореЛрдЯрд░ рдЗрдВрдбрд╕реНрдЯреНрд░реА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдПрд╕реЛрд╕рд┐рдПрд╢рди) рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рдорд╛рдирдХреЛрдВ рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдореНрдмреЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд╕реБрд░рдХреНрд╖рд╛, рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╣реИред рдорд╛рдирдХ рдкрд╛рда рдХрд╛ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

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

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

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

MISRA рдорд╛рдирдХ рдореЗрдВ рдПрдХ рдирд┐рдпрдо рд╣реИ рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрджрд┐ рдХрдердиреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред MISRA C рдореЗрдВ, рдпрд╣ рдирд┐рдпрдо 15.6 рд╣реИ, рдФрд░ MISRA C ++ рдореЗрдВ рдпрд╣ 6-4-1 рд╣реИред рдЧрд▓рдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:

if (i == bestOffs) continue; 

рд╕рд╣реА рдХреЛрдб рд╣реИ:

 if (i == bestOffs) { continue; } 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо Winodws, Linux рдпрд╛ macOS рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреА рдЧрдИ рдореМрдЬреВрджрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рд╡рд░реНрдгрд┐рдд рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХ рдирд┐рдпрдо 1947 V2507 рдиреИрджрд╛рдирд┐рдХ рд╕рдВрдЪрд╛рд▓рди (MISRA C 15.6, MISRA C ++ 6-4-1) WinMerge рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди WinMerge рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ! рдХреЗрд╡рд▓ C рдФрд░ C ++ рдореЗрдВ рдХреЛрдб рдХреА рд▓рдЧрднрдЧ 250,000 рдкрдВрдХреНрддрд┐рдпрд╛рдБред

2018 рддрдХ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд┐рдВрдбреЛрдЬ, рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдерд╛ред рддрджрдиреБрд╕рд╛рд░, MISRA рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдиреЗ рдереЛрдбрд╝рд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рджрд┐рдпрд╛ред рдПрдХ рдмрдбрд╝реЗ рдореМрдЬреВрджрд╛ рдбреЗрд╕реНрдХрдЯреЙрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдИ рднреА рдЗрд╕ рдорд╛рдирдХ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд╕рдм рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рдЬрдм 2018 рдореЗрдВ рд╣рдордиреЗ рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕ рд╡рд░реНрд╖, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛:

  • рд╡рд┐рдВрдбреЛрдЬред рдЖрдИрдПрдЖрд░ рдПрдВрдмреЗрдбреЗрдб рд╡рд░реНрдХрдмреЗрдВрдЪ, рдПрдЖрд░ / рд╕реА рдХреЗ рд▓рд┐рдП рд╕реА / рд╕реА ++ рдХрдВрдкрд╛рдЗрд▓рд░, рд╕реА ++
  • рд╡рд┐рдВрдбреЛрдЬ / рд▓рд┐рдирдХреНрд╕ рдХреЗрдПрд▓ ilрд╡рд┐рдЬрд╝рди, рдбреАрдПрд╕-рдПрдордбреАрдХреЗ, рдПрдЖрд░рдПрдо рдХрдВрдкрд╛рдЗрд▓рд░ 5/6 рд╕реА, рд╕реА ++
  • рд╡рд┐рдВрдбреЛрдЬ / рд▓рд┐рдирдХреНрд╕ рдЯреЗрдХреНрд╕рд╛рд╕ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯреНрд╕ рдХреЛрдб рдХрдореНрдкреЛрдЬрд╝рд░ рд╕реНрдЯреВрдбрд┐рдпреЛ, рдПрдЖрд░рдПрдо рдХреЛрдб рдЬреЗрдирд░реЗрд╢рди рдЯреВрд▓реНрд╕ рд╕реА, рд╕реА ++
  • рд╡рд┐рдВрдбреЛрдЬ / рд▓рд┐рдирдХреНрд╕ / рдореИрдХрдУрдПрд╕ред рдЬреАрдПрдирдпреВ рдЖрд░реНрдо рдПрдВрдмреЗрдбреЗрдб рдЯреВрд▓рдЪрд┐рди, рдЖрд░реНрдо рдПрдВрдмреЗрдбреЗрдб рдЬреАрд╕реАрд╕реА рдХрдВрдкрд╛рдЗрд▓рд░, рд╕реА, рд╕реА ++

рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрдИ рдПрдореНрдмреЗрдбреЗрдб рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА MISRA рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдлрд┐рд░ рднреА, рд╣рдо рдЕрднреА рднреА рдбрд░рддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ, рдмрд┐рдирд╛ рд╕рдордЭ рдХреЗ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ "рдЕрдЬреАрдм рдирд┐рджрд╛рди" рдореЗрдВ рдкреЗрд╢ рдХрд░рдХреЗ "рдмрд░реНрдмрд╛рдж" рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, MISRA рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдмрд╣реБрдд рд╕рд╣реА рдирд┐рд░реНрдгрдп рдорд╛рдирддреЗ рд╣реИрдВред рдпреЗ рдирд┐рджрд╛рди рдХреЗрд╡рд▓ рддрднреА рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рдкрддрд╛ рд╣реЛ рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдЪрд╛рдирдХ рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХреНрдпреЛрдВ рдордирд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рдХреНрдпреЛрдВ рдЕрдЪрд╛рдирдХ рдЖрдк рдореИрд▓реЛрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдирдП рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреА рд╕реАрдорд╛рдПрдВ ( V2511 ) рдПрдореНрдмреЗрдбреЗрдб рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭреА рдЬрд╛рддреА рд╣реИрдВред рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдЬреЛ рд▓рдЧрд╛рддрд╛рд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЙрди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЕрдЪрд╛рдирдХ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреА рд╣реИред

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

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

MISRA рд╕рдХреНрд╖рдо рдХрд░реЗрдВ

рдЪреВрдВрдХрд┐ рд╡рд┐рдХрд▓рд╛рдВрдЧ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдкреБрдирдГ рдЖрд░рдВрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдореЛрдб рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред MISRA рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреЗ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдСрдкрд░реЗрд╢рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ (* .plog рдлрд╛рдЗрд▓реЗрдВ) рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдордЬрдмреВрдд рд╡реГрджреНрдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред

рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреАрд╡реА-рд╕реНрдЯреВрдбрд┐рдпреЛ-рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдирд┐рджрд╛рди (рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдЬреАрдП) рд╡рд╣рд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред -A рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдпрдо рд╕рдХреНрд╖рдо рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 -a [MODE], --analysis-mode [MODE] MODE defines the type of warnings: 1 - 64-bit errors; 2 - reserved; 4 - General Analysis; 8 - Micro-optimizations; 16 - Customers Specific Requests; 32 - MISRA. Modes can be combined by adding the values Default: 4 

GA рдФрд░ MISRA рдЕрд▓рд░реНрдЯ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 pvs-studio-analyzer analyze ... -a 36 ... -o /path/to/report.log ... 

рдорд╛рди 36 рдПрдХ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдпрд╛ 4 (GA - рдЬрдирд░рд▓ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕) рдФрд░ 32 (MISRA) рдХреЗ рд▓рд┐рдП рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрд▓рд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрдИ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 plog-converter -a GA:1,2 -t tasklist -o /path/to/ga_results.tasks /path/to/project.log plog-converter -a MISRA:1,2,3 -t tasklist -m misra -o /path/to/misra_results.tasks /path/to/project.log 

рдкрд╣рд▓реА ga_results.tasks рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдЙрдЪреНрдЪ рдФрд░ рдордзреНрдпрдо рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реНрддрд░реЛрдВ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рд╣реЛрдВрдЧреАред

рдФрд░ рджреВрд╕рд░реА рд░рд┐рдкреЛрд░реНрдЯ "misra_results.tasks" рдХреЛ рдХреЗрд╡рд▓ рд╕рднреА рд╕реНрддрд░реЛрдВ рдХреЗ MISRA рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реЗрдЧреАред "-M рдорд┐рд╢реНрд░рд╛" рд╕реНрд╡рд┐рдЪ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ MISRA рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕рдВрдЦреНрдпрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреАред

рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдореЗрдВ рд╕рднреА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд▓реЙрдиреНрдЪ рдореЛрдб, рд╕рд╛рде рд╣реА рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рд░реВрдк, рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред

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

рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд┐рдВрдХ:

  1. рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
  2. рд▓рд┐рдирдХреНрд╕ рдФрд░ рдореИрдХрдУрдПрд╕ рдкрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ
  3. рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ 6.22 рд╕реНрдЯреИрдЯрд┐рдХ рдХреЛрдб рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдПрдЖрд░рдПрдо рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ (рдХреЗрдЗрд▓, рдЖрдИрдПрдЖрд░) рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  4. рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЬреАрдПрдирдпреВ рдЖрд░реНрдо рдПрдВрдмреЗрдбреЗрдб рдЯреВрд▓рдЪрд┐рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИ



рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдПрдВрдбреНрд░реЗ рдХрд╛рд░рдкреЛрд╡ред PVS-Studio: MISRA C рдФрд░ MISRA C ++ рдХреЛрдбрд┐рдВрдЧ рдорд╛рдирдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди ред

Source: https://habr.com/ru/post/hi432660/


All Articles