Cppcheck рдХреЗ рд╕рд╛рде рд╕реЛрд░реНрд╕ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛

C ++ рдХреЛрдб рдХреЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рдХрдИ рд╣рд╛рд▓рд┐рдпрд╛ рд▓реЗрдЦреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ cppcheck рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд░рд╣реА рд╣реИред рдпрд╣ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдпреБрд╡рд╛ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЬреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреЗ рдиреНрдпреВрдирддрдо рдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде рдХреЛрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, cppcheck рдиреЗ Xorg рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рднреЗрджреНрдпрддрд╛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХреА , рдЬреЛ рд▓рдЧрднрдЧ 23 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рдереА! рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рд╣рдЬрд╛рд░реЛрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реЛрдВ рдХреА рдорджрдж рдХрд░ рдЪреБрдХрд╛ рд╣реИ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЖрдк рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ cppcheck рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдИ рдЧрдИ рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕реВрдЪреА рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣реА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдФрд░ рд╣рд░ рдЬрдЧрд╣ cppcheck рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ - рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред

Cppcat рдФрд░ cppcheck


рдореИрдВ рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдЖрд╡рд╛рдЬ рджреА рдЧрдИ рд╣реИред CppCat рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд╣рд▓реЗ рд╣реА рдРрд╕реА рддреБрд▓рдирд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ (PVS-Studio рдХреЗ рд╕рд╛рде), рд▓реЗрдХрд┐рди рддрдм рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░рд╛ рдкрд╛рдиреА рдмрд╣ рдЪреБрдХрд╛ рд╣реИ, рдФрд░ PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ (рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреА рдЧреВрдврд╝рддрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдБ, рддреБрд▓рдирд╛ рдмрд╣реБрдд рд╣реА рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреГрдкрдпрд╛ рд╣рдореЗрдВ PVS рдХреА рдХреАрдордд рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗрдВред -рд╕реНрдЯрдбрд┐рдпреЛред рдХреГрдкрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред ") рдПрдХрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред Cppcat, cppcheck рдХреА рддрд░рд╣, рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ (рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП VisualStudio рдФрд░ рдПрдХ рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рдг рдХреЗ рд╕рд╛рде)ред

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

рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ, рдореИрдВ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ CppCat рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рджреЛ рдмрд╛рд░ рдмрд┐рдирд╛ рд╕реЛрдЪреЗ-рд╕рдордЭреЗ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛:

рдЫрд╡рд┐

рдХрд┐рд╕ рд╡рдЬрд╣ рд╕реЗ, рдЦреЛрдЬ-рд╕реНрдерд╛рдкрд┐рдд-рд╡рд┐рдЬрд╝реБрдЕрд▓-рд╕реНрдЯреВрдбрд┐рдпреЛ -2013-рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛-IE-11-рд░рд┐рдмреВрдЯ-рдЕрдкрдбреЗрдЯ рдЦреЛрдЬ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛, рдЬреЛ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рдмреЛрдЭ рдирд╣реАрдВ рдмрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдкрд░ рд▓рдЧрднрдЧ рдЖрдзрд╛ рджрд┐рди рд▓рдЧрд╛ред

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

рдЯреНрд░реЗрдирд┐рдВрдЧ

рдЪреВрдВрдХрд┐ cppcheck рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ, рдХреЛрдИ рднреА рдЧреАрддрд╛ рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Cppcheck рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
unzip cppcheck-master.zip cd cppcheck-master make 

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

рдЯреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди: RHEL 6.1, i5-2400 @ 3.10GHz рдкреНрд░реЛрд╕реЗрд╕рд░ (рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд░рдирдЯрд╛рдЗрдо рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред

рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА - рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд▓рд┐рдирдХреНрд╕ :) рдкрд░ред рдмреЗрд╢рдХ, рд▓реЛрдХрдкреНрд░рд┐рдп рдЖрдИрдбреАрдИ рдХреЗ рд▓рд┐рдП cppcheck рдореЗрдВ рдХрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдЬ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рдиреЛрдЯрдкреИрдб ++ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

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

рдПрдХ рдЙрдЪрд┐рдд рдкреНрд░рд╢реНрди рдЙрда рд╕рдХрддрд╛ рд╣реИ - рд▓рд┐рдирдХреНрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдиреЛрдЯрдкреИрдб ++ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ рдпрджрд┐ рдиреЛрдЯрдкреИрдб ++ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбрдмреНрд▓реНрдпреВрдПрдПрдирдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ? рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рд╕рд░рд▓ рд╣реИ - рдореЗрд░реА рд╕реНрдореГрддрд┐ рдореЗрдВ cppcheck рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╣реИ рдЬреЛ рдмрд┐рд▓реНрдб рд╡рд╛рддрд╛рд╡рд░рдг рдпрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ ред рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд╕рднреА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рд╡рдлрд╛рджрд╛рд░ рд╣реИ, рдЖрджрд┐ред рдпрд╣ рдЕрджреНрднреБрдд рд╕рдВрдкрддреНрддрд┐ рдЖрдкрдХреЛ рдХрд╣реАрдВ рднреА cppcheck рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдФрд░ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЬреЛ CppCat рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдКрдкрд░ рд╕реНрдерд╛рдкрдирд╛ рдЦреЛрдЬ рджреЗрдЦреЗрдВ) ред

Cappcheck рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдкрдорд╛рди рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рд╣реИ:
 ./cppcheck-master/cppcheck -q -j4 npp.6.5.3.src/ 

рдЬрдмрдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдХрдорд╛рдВрдб рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ -q ("рд╕рд╛рдЗрд▓реЗрдВрдЯ" рдореЛрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ - рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рдЧрддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) рдФрд░ -j4 - рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ 4 рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдгред

рдкрд┐рдЫрд▓реЗ рдЖрджреЗрд╢ рдХрд╛ рдкрд░рд┐рдгрд╛рдо:
 [npp.6.5.3.src/PowerEditor/src/tools/ChangeIcon/ChangeIcon.cpp:214]: (error) Mismatching allocation and deallocation: resData [npp.6.5.3.src/PowerEditor/src/tools/ChangeIcon/ChangeIcon.cpp:216]: (error) Mismatching allocation and deallocation: resData [npp.6.5.3.src/scintilla/lexers/LexBash.cxx] -> [npp.6.5.3.src/scintilla/lexers/LexBash.cxx:194]: (error) Internal error. Token::Match called with varid 0. Please report this to Cppcheck developers 

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп - 5 рдорд┐рдирдЯред рддреНрд░реБрдЯрд┐ "(рддреНрд░реБрдЯрд┐) рдЖрдВрддрд░рд┐рдХ рддреНрд░реБрдЯрд┐ред рдЯреЛрдХрди :: рдорд┐рд▓рд╛рди рдЬрд┐рд╕реЗ varid 0. рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕реЗ Cppcheck рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ" рддреБрд░рдВрдд рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдмрдЧ рдХреЗ рдмрдЬрд╛рдп, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдПрдХ рдмрдЧ рдерд╛ :) рд╣рдо рдЗрд╕ рддрдереНрдп рдкрд░ рдЫреВрдЯ рджреЗрдВрдЧреЗ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ, рдФрд░ cppcheck рдХреЛ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ DWORD, LPTR, рдЖрджрд┐ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдЦреБрдж рдХреЛ рд╡рд┐рди рдореЗрдВ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рджрд┐рдЦрд╛рдПрдЧрд╛ред ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЧрд▓рддреА рдереА (2 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде)ред рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рд╢рд╛рдпрдж рдиреЛрдЯрдкреИрдб ++ рдХрд╛ рд▓реЗрдЦрдХ рд╕реНрд╡рдпрдВ cppcheck рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреЛрдб рдХрд╛ рд╡рд╣ рдЯреБрдХрдбрд╝рд╛ рдЬрд┐рд╕рдиреЗ рд╕рдВрджрд┐рдЧреНрдз рдмрдирд╛ рджрд┐рдпрд╛:

  BYTE* resData = new BYTE[cbRes]; LPBYTE writePtr = resData; ... if(!UpdateResource(hUpdate, RT_GROUP_ICON, lpResName, resLangId, resData, cbRes)) { _tprintf(_T("Unable to update icon group\n")); delete resData; return false; } IFDEBUG( _tprintf(_T("Updated group %d (lang %d)\n"), lpResName, resLangId); ) delete resData; } 


рдпрд╣ рдПрдХ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реНрд░реЛрдд, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдЪреМрдВрдХрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред UPD: рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рд╕рд░рдгреА рдХреЛ рд╣рдЯрд╛рдирд╛ [] рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

 ./cppcheck-master/cppcheck -q -j4 --enable=performance,portability,warning,style npp.6.5.3.src/ 2> npp.out 


--Enable рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЪреЗрдХ рдХреА рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

- рдкреНрд░рджрд░реНрд╢рди - рдкреНрд░рджрд░реНрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ;
- рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА - рд╕рдВрдЧрддрддрд╛ рдореБрджреНрджреЛрдВ;
- рдЪреЗрддрд╛рд╡рдиреА - рдЪреЗрддрд╛рд╡рдиреА - рд╕рдВрджрд┐рдЧреНрдз рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрдерд╛рди;
- рд╢реИрд▓реА - рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реИрд▓реА рддреНрд░реБрдЯрд┐рдпрд╛рдВред

рдЗрд╕ рдореЛрдб рдореЗрдВ, рд╢реЗрд░ рдХреА рд╢реИрд▓реАрдЧрдд / рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдмрдЧ (рдпрд╛рдиреА, рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рдЬрд┐рд╕рдореЗрдВ cppcheck "рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ") рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдХреИрдирд┐рдВрдЧ рд╕рдордп - 5 рдорд┐рдирдЯред рдореИрдВрдиреЗ рддреБрд░рдВрдд рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд░рд┐рдгрд╛рдо рднреЗрдЬрд╛ред

рдХреБрд▓ рд╕рдВрджреЗрд╢:
 wc -l < npp.out 379 


рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдЫреЛрдЯреЗ рдЖрдБрдХрдбрд╝реЗ:
 tr '()' '*' < npp.out | cut -d* -f2 | sort | uniq -c 3 error 39 performance 14 portability 211 style 112 warning 


рд╕рдВрджреЗрд╢ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА
 sort -t] -k2 npp.out | grep -v '(error)' | cut -d\) -f2- | sed "s/'[^']*'/%{VAR}/g" | sort | uniq -c | sort -n 1 Function parameter %{VAR} should be passed by reference. 1 memset() called to fill 0 bytes of %{VAR}. 1 scanf without field width limits can crash with huge input data. 1 The class %{VAR} does not have a constructor. 1 Unused variable: ent 1 Unused variable: loc 2 Array index %{VAR} is used before limits check. 2 Checking if unsigned variable %{VAR} is less than zero. 2 Found duplicate branches for %{VAR} and %{VAR}. 2 The class %{VAR} defines member variable with name %{VAR} also defined in its parent class %{VAR}. 2 Unsigned variable %{VAR} can't be negative so it is unnecessary to test it. 2 %{VAR} should return %{VAR}. 3 scanf without field width limits can crash with huge input data on some versions of libc. 4 Same expression on both sides of %{VAR}. 4 %{VAR} does not have a copy constructor which is recommended since the class contains a pointer to allocated memory. 5 Assignment of function parameter has no effect outside the function. 5 Ineffective call of function %{VAR}. Did you intend to call %{VAR} instead? 7 Consecutive return, break, continue, goto or throw statements are unnecessary. 11 Exception should be caught by reference. 11 The extra qualification %{VAR} is unnecessary and is considered an error by many compilers. 12 Variable %{VAR} is reassigned a value before the old one has been used. 22 Variable %{VAR} is assigned a value that is never used. 26 Variable %{VAR} is assigned in constructor body. Consider performing initialization in initialization list. 42 C-style pointer casting 98 Member variable %{VAR} is not initialized in the constructor. 108 The scope of the variable %{VAR} can be reduced. 



рдХреБрд▓ 28 рдЕрдиреЛрдЦреЗ рд╕рдВрджреЗрд╢ред

рд╕рдВрджреЗрд╢ "рдЪрд░% {VAR} рдХрд╛ рджрд╛рдпрд░рд╛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ", "C- рд╢реИрд▓реА рд╕реВрдЪрдХ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ", "рдЪрд░% {VAR} рдХреЛ рдирд┐рд░реНрдорд╛рддрд╛ рдирд┐рдХрд╛рдп рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред" рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпреЗ рдРрд╕реА рд╢реИрд▓реАрдЧрдд рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╣реИрдВ рдЬреЛ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдкреБрд░рд╛рдиреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдкрд░ рд▓рд┐рдЦрд╛ рд╣реИред

рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдПрдХ рд╕рдореБрджреНрд░ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ( рдЪреЗрддрд╛рд╡рдиреА ) рд╕рджрд╕реНрдп рд╡реИрд░рд┐рдПрдмрд▓% {VAR} рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рддреНрд░реБрдЯрд┐ cppcheck рдЪреЗрддрд╛рд╡рдиреА рдорд╛рдирддреА рд╣реИред рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдВрдХрд▓рдХ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдирдкреАрдкреА рдХреБрдЫ рдЪрдорддреНрдХрд╛рд░ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг
 //[npp.6.5.3.src/PowerEditor/src/WinControls/AnsiCharPanel/ansiCharPanel.h:46]: (warning) Member variable 'AnsiCharPanel::_ppEditView' is not initialized in the constructor. class AnsiCharPanel : public DockingDlgInterface { public: AnsiCharPanel(): DockingDlgInterface(IDD_ANSIASCII_PANEL) {}; void init(HINSTANCE hInst, HWND hPere, ScintillaEditView **ppEditView) { DockingDlgInterface::init(hInst, hPere); _ppEditView = ppEditView; }; virtual void display(bool toShow = true) const { DockingDlgInterface::display(toShow); }; void setParent(HWND parent2set){ _hParent = parent2set; }; void switchEncoding(); void insertChar(unsigned char char2insert) const; protected: virtual BOOL CALLBACK AnsiCharPanel::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam); private: ScintillaEditView **_ppEditView; ListView _listView; }; 

рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрдирд┐рдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХреЗрд╕ рдкрд░ рд╡реЛрд░рд┐рдВрдЧред


( рд╢реИрд▓реА ) '||' рдХреЗ рджреЛрдиреЛрдВ рдУрд░ рд╕рдорд╛рди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рддреНрдпрд╛рдкрдиред рдЙрд╕реА рддреНрд░реБрдЯрд┐ рдХреЛ CppCat рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╛ рддреЛ npp рд╕рдВрд╕реНрдХрд░рдг рдЙрд╕ рд▓реЗрдЦ рдореЗрдВ рдкреБрд░рд╛рдирд╛ рд╣реИ, рдпрд╛ рддреНрд░реБрдЯрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдп рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдПрдХ рд╣реА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
 while (closeFound.success && (styleAt == SCE_H_DOUBLESTRING || styleAt == SCE_H_SINGLESTRING) && searchStartPoint <= caret); 


рдФрд░ рдпрд╣ рдирдпрд╛ рдХреИрдЪрдЪреЗрдХ рдХреИрдЪ рд╣реИ:

 if (!(!commentLineSybol || !commentLineSybol[0] || commentLineSybol == NULL)) 


( рдкреНрд░рджрд░реНрд╢рди ) рд╡реИрд░рд┐рдПрдмрд▓ 'рд▓рд╛рдЗрдирдЗрдВрдбреЗрдВрдЯ' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреБрд░рд╛рдиреЗ рдорд╛рди рдХреЛ рдкреБрди: рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдбрдмрд▓ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд╛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдХреИрдкреНрдкреЗрдХ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рддреНрд░реБрдЯрд┐ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдпрд╣ рдХреЛрдб рдЬрд╛рдВрдЪрдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓реЗрдЦрдХ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдРрд╕реЗ рдХрдИ рджреЛрд╣рд░реЗ рдХрд╛рд░реНрдп рд╣реИрдВ, рд╕рд╛рде рд╣реА рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЪрд░ рдХреЗ рдЕрдкреНрд░рдпреБрдХреНрдд рдорд╛рди:

  int lineIndent = lineStart; ... lineIndent = _pEditView->execute(SCI_GETLINEINDENTPOSITION, i); _pEditView->getGenericText(linebuf, linebufferSize, lineIndent, lineEnd); 


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

( рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА ) рдЕрддрд┐рд░рд┐рдХреНрдд рдпреЛрдЧреНрдпрддрд╛ 'FunctionListPanel ::' рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдХрдИ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд╛рдиреА рдЬрд╛рддреА рд╣реИред рдПрдХ рдЙрдкрдпреЛрдЧреА рдЪреЗрддрд╛рд╡рдиреА рдЬреЛ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рдФрд░ CppCat рдореЗрдВ рдирд┐рдпреЛрдЬрд┐рдд рдирд╣реАрдВ рд╣реИ: рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ (рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА) рдХреЗ рдмреАрдЪ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рддреНрд░реБрдЯрд┐рдпрд╛рдВред рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдореЗрдВ рдпрд╣ рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:

 virtual BOOL CALLBACK FunctionListPanel::run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam); 


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

( рд╢реИрд▓реА ) рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЪреЗрддрд╛рд╡рдиреА рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрджрд░реНрдн рд╕реЗ рдкрдХрдбрд╝рдирд╛ рд╣реИ , рдФрд░ рдореВрд▓реНрдп рд╕реЗ рдирд╣реАрдВ:

  catch(std::exception e) { ::MessageBoxA(NULL, e.what(), "Exception", MB_OK); return -1; } 


( рд╢реИрд▓реА ) рд▓рдЧрд╛рддрд╛рд░ рд░рд┐рдЯрд░реНрди, рдмреНрд░реЗрдХ, рдЬрд╛рд░реА, рдЧреЛрдЯреЛ рдпрд╛ рдереНрд░реЛ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИрдВред рдбреЗрдб рдХреЛрдб: рд╡рд╛рдкрд╕реА рдХреЗ рдмрд╛рдж рдмреНрд░реЗрдХ:
  switch(lpnm->wID) { case REBAR_BAR_TOOLBAR: { ... return TRUE; break; } } 

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

 void SetValue( const TCHAR* _value ) { value = _value; } 


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

 if ( sscanf( value.c_str(), "%d", ival ) == 1 ) 


рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдЯреНрд░реИрдЯреЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдПрдХ рдЕрдиреНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐:
 sscanf( wordBuffer, "%[^.<>|&=\\/]", sKeywordBuffer ); 


рдХреЛрдИ рдмрдлрд░ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ wordBuffer рдФрд░ sKeywordBuffer рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреЗ рд╣реИрдВред

( рд╢реИрд▓реА ) 'TiXmlStringA :: рдСрдкрд░реЗрдЯрд░ =' рдХреЛ 'TiXmlStringA &' рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред = рдСрдкрд░реЗрдЯрд░ рд╢реВрдиреНрдп рджреЗрддрд╛ рд╣реИ:

 void operator = (const TiXmlStringA & copy); 

рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде, рдЖрдк рдорд╛рдирдХ C ++ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ:
 a = b = c; 


( рдЪреЗрддрд╛рд╡рдиреА ) рд╡рд░реНрдЧ 'ControlsTab' рд╕рджрд╕реНрдп рдЪрд░ рдХреЛ '_isVertical' рдирд╛рдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕рдХреЗ рдореВрд▓ рд╡рд░реНрдЧ 'TabBar' рдореЗрдВ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдЪрд░ рдХреА рджреЛрд╣рд░реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рддреНрд░реБрдЯрд┐:
 class ControlsTab : public TabBar { public : ... private : ... bool _isVertical; }; 

рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓ рд╡рд░реНрдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ:
 class TabBar : public Window { ... protected: ... bool _isVertical; }; 

рдкреЗрд╢реЗрд╡рд░реЛрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рддреБрд░рдВрдд рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рд╕рдВрд░рдХреНрд╖рд┐рдд / рдирд┐рдЬреА)ред

( рд╢реИрд▓реА ) 'рдпрджрд┐' рдФрд░ 'рдЕрдиреНрдп' рдХреЗ рд▓рд┐рдП рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╢рд╛рдЦрд╛рдПрдВ рдорд┐рд▓реАрдВред CppCat рдореЗрдВ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рдИ рдЧрдИрдВред рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд┐рддрд┐:
  if(eol_mode == SC_EOL_CRLF) extraEOLLength = 2; else if(eol_mode == SC_EOL_LF) extraEOLLength = 1; else // SC_EOL_CR extraEOLLength = 1; 


( рд╢реИрд▓реА ) рдпрджрд┐ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд░ 'lenFile' рд╢реВрдиреНрдп рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдЬрд╛рдБрдЪ рдХрд░рдирд╛ред CppCat рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рдорд╛рди рд╕рдВрджреЗрд╢ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ cccheck, windows.h рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдП рдмрд┐рдирд╛, WPARAM рдЬреИрд╕реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдЕрднреА рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЧреИрд░-рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реИред
  size_t lenFile = 0; ... if (lenFile <= 0) break; 


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

( рд╢реИрд▓реА ) рдПрд░реЗ рдЗрдВрдбреЗрдХреНрд╕ 'рдЬреЗ' рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдорд╛ рдЬрд╛рдБрдЪ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рдЬреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рд╣реИ рд╡рд╣ рд╕рд░рдгреА рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЬрд╛рдиреЗ рдХрд╛ рдЦрддрд░рд╛ рд╣реИ:
  int j; int ReturnValue; j=startcol; if(direction == 1){j++;} if(direction != 1){j--;} while((BGHS[SI].columnwidths[j] == 0)&&(j<=BGHS[SI].cols)&&(j>0)) 

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдмрд╛рд╣рд░реА рд╣реИ, рдЖрдк рд╕рд░рдгреА рдХреЗ рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░ рдЙрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, -1 рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

( рд╕реНрдЯрд╛рдЗрд▓ ) рдЕрдирд╕рд╛рдЗрдирдб рд╡реЗрд░рд┐рдПрдмрд▓ 'i' рдирд┐рдЧреЗрдЯрд┐рд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЯреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред рд▓реВрдк рдореЗрдВ рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реЛрддреА рд╣реИ => рдЕрдирдВрдд рд▓реВрдк:
 for(unsigned int i = position_of_click; i >= 0; --i) 

Gcc рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ -Wall -Wextra рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЕрдХреНрд╕рд░ рддрдм рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдЬрдм рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрдХрд▓рдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд░рд┐рдлреИрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ - рдмреЗрдореЗрд▓ рдкреНрд░рдХрд╛рд░ред рдпрд╣ int рдерд╛ - рдпрд╣ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реЛ рдЧрдпрд╛, рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИред

рдЫреЛрдЯреА-рдореЛрдЯреА рдЦрд╛рдорд┐рдпрд╛рдВ

( рд╢реИрд▓реА ) рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрд░: рдПрдВрдЯред рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рднреА рдЬрд╛рд░реА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред

( рдЪреЗрддрд╛рд╡рдиреА )% d рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ (рд╕рдВрдЦреНрдпрд╛ 2) рдХреЗ рд▓рд┐рдП 'int' рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рддрд░реНрдХ рдкреНрд░рдХрд╛рд░ 'DWORD {рдЙрд░реНрдл рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд▓рдВрдмрд╛}' рд╣реИ - рдПрдХ рдмрд╣реБрдд рд╣реА рд▓реЛрдХрдкреНрд░рд┐рдп рддреНрд░реБрдЯрд┐, printf рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред рдпрд╣ рднреА рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╡рд░реНрдЧ:
  class CachedValue { generic_string fullname; int index; }; 


( рдкреНрд░рджрд░реНрд╢рди ) рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ 'рд░реЗрдВрдЬ' рдХреЛ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред cppcheck рддрд░реНрдХ рдХреА рдирдХрд▓ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реИ:
 XYScrollPosition XYScrollToMakeVisible(const SelectionRange range, const XYScrollOptions options); 


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

( рд╢реИрд▓реА ) 'рдХреНрд▓рд╛рд╕ рдмрд╛рдЗрдЯрдЕрд░реЗ' рдореЗрдВ рдПрдХ рдХреЙрдкреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ рд╣реЛ рддреЛ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдХ рдХреЙрдкреА рдХреЙрдкреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


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

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

рдЫрд╡рд┐

рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдо XML рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

PS рдХреГрдкрдпрд╛ рдПрдХ рдмрдХрд╡рд╛рд╕ рдХреНрд╖рдорд╛ рдХрд░реЗрдВред Cppcheck рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдпрд╛рдж рдХреА рдЧрдИрдВред рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдПрдирдкреАрдкреА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ --platform = win32Aред

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


All Articles