CppCat рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрд╡рд▓реЛрдХрди

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

рдЪрд▓реЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЦреЗрд▓ рдореЛрдордмрддреНрддреА рдХреЗ рд▓рд╛рдпрдХ рд╣реИред


рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧрддреА, рд╡рд╣ рд╣реИ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2005 \ 2008 рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреА рдХрдореАред рдирд╣реАрдВ, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдПрдкреАрдЖрдИ рдерд╛ рдФрд░ рд╢рд╛рдпрдж рдЗрд╕реЗ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реА ++ рдПрдХ рдпреБрд╡рд╛ рднрд╛рд╖рд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реИ, рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдЕрднреА рднреА VS2008 рдкрд░ рд▓рд╛рдЗрд╡ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рднреА рдирд╣реАрдВ рдпрджрд┐ рд╡рд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рддреЛ рдкреНрд░рддрд┐ рддрд┐рдорд╛рд╣реА рдПрдХ рджрд░реНрдЬрди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрднреА рднреА рдПрдХ рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдЪреНрдЫрд╛ рдареАрдХ рд╣реИред

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

рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддреАрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЪреБрдирд╛:


рдиреЛрдЯрдкреИрдб ++ рдФрд░ рдЬреАрд░реЛрдПрдордХреНрдпреВ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЙрди рджреЛрдиреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдХрдо рдЕрдиреБрднрд╡ рдерд╛ - рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рдФрд░ рд╡рд╣рд╛рдБ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рд╕реЗ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рдереА рдХрд┐ рдХреИрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЬрд╛рдВрдЪ рдХрд░реЗрдВ (рдореБрдЭреЗ VS2010 рдХреЗ рддрд╣рдд рдирд┐рд░реНрдорд╛рдг рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рдерд╛)ред

рдиреЛрдЯрдкреИрдб ++


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 86 рдлрд╛рдЗрд▓реЗрдВ, рдкреВрд░реНрдг рд╕реНрдХреИрди рдХреЗ рд▓рд┐рдП 2 рдорд┐рдирдЯред CppCat рд╕реЗ рд╕рдВрджрд┐рдЧреНрдз рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 48 рд╕рдВрджреЗрд╢ (рдкреНрд░рддрд┐ рдлрд╝рд╛рдЗрд▓ рдФрд╕рдд 0.55 рд╕рдВрджреЗрд╢)

рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддреА рд╣реИ рдЬрдм рдПрдХ рдмрд╛рдЗрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рддрд╛рд░реНрдХрд┐рдХ 'рдФрд░' рдФрд░ рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ 'рдФрд░' рднреНрд░рдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
ToAscii(wParam,(lParam >> 16) && 0xff,keys,&dwReturnedValue,0); // V560. A part of conditional expression is always true/false. 


рдирдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ
 WPARAM wParam ... if(wParam<0) // V547. Expression is always true/false. 


рд╕реВрдЪрдХрд╛рдВрдХ -1 рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд╕реЗрд▓ рдХрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдкрддрд╛
 j=lstrlen(BGHS[SelfIndex].editstring); BGHS[SelfIndex].editstring[j-1]=0x00; // V557. Array overrun is possible. 

рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИ - рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╢реВрдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрди рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдореИрдВ рдХрд┐рд╕реА рдорд╛рдорд▓реЗ рдХреА рдЖрд╢рд╛ рди рдХрд░реВрдВред


рджреЛрд╣рд░рд╛ рдХрд╛рдоред рдПрдХ рдмрд╛рдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рддрд╣реА рд╣реИред
 lpcs = &cs; lpcs = (LPCREATESTRUCT)lParam; // V519. The 'x' variable is assigned values twice successively. Perhaps this is a mistake. 


рднрд╡рди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрдХрд╡рд╛рд╕ред
 if(MATCH) { return returnvalue+MAX_GRIDS; } if(!MATCH)) // V560. A part of conditional expression is always true/false. { return -1; } 


рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рд╕реНрдореГрддрд┐ рдХреЗ рд▓рд┐рдП рдЧрд▓рдд рдЬрд╛рдВрдЪ
 char *source = new char[docLength]; if (source == NULL) // V668. There is no sense in testing the pointer against null, as the memory was allocated using the 'new' operator. The exception will be generated in the case of memory allocation error. return; 

рдореЗрд░реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдХрд┐рд╕реА рднреА C ++ рдХреЛрдб рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рдЧрд▓рддреА рд╣реИ (рдпрд╣ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 24 рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ)ред C рд╕реЗ рд╕реНрдореГрддрд┐ рдЖрдмрдВрдЯрди рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЗрд╕рдХреА рдЬрдбрд╝реЗрдВ рд╣реИрдВ, рдЬреЛ NULL рдХреЛ рддреНрд░реБрдЯрд┐ рдкрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП C ++ рдореЗрдВ рдирдП рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, "рдХреНрдпрд╛ рдЙрдкрд▓рдмреНрдз рдореЗрдореЛрд░реА рд░рди рдЖрдЙрдЯ рд╣реЛ рдЧрдИ рд╣реИ?" рдЖрдкрдХреЛ std рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :: bad_alloc рдЕрдкрд╡рд╛рдж, рдФрд░ NULL рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВред


рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реНрдпрд╛рдореЛрд╣
 TCHAR intStr[5]; ... if (!intStr) // V600. Consider inspecting the condition. The 'Foo' pointer is always not equal to NULL. 

рдпрджрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдпрд╣ рдмрд╛рдд рд╕рд╛рдордиреЗ рдЖрддреА рд╣реИ рдХрд┐ рдкрд╛рдВрдЪ рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдШреЛрд╖рд┐рдд рд╕рд░рдгреА рдореЗрдВ рд╕реВрдЪрдХ NULL рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдХреБрдЫ рдЗрддрдирд╛ рдЦрд░рд╛рдм рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдмрд╕ рдЧрд┐рд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред


рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рдХреА рджреЛрд╣рд░реА рдЬрд╛рдВрдЪ
 do { ... } while(openFound.success && (styleAt == SCE_H_DOUBLESTRING || styleAt == SCE_H_DOUBLESTRING) && searchStartPoint > 0); 

рдпрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрджреНрдзрд░рдг (рдбрдмрд▓ рдФрд░ рд╕рд┐рдВрдЧрд▓) рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрдмрд▓ рдЪреЗрдХ рдбрдмрд▓ред SCE_H_SINGLESTRING рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЗ рдЪреЗрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ, рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛ рдерд╛ред рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдмрдЧ рдореЗрдВ рд╕реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ XML рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реИ, рдФрд░ рди рдХреЗрд╡рд▓ "рд╕реБрдзрд╛рд░ рд╕рд▓рд╛рд╣" рд╣реИред


рдЧрд▓рдд (рдореЗрд░реА рд░рд╛рдп рдореЗрдВ) рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ

рджреЛ рд▓рдЧрд╛рддрд╛рд░ рдЕрдЧрд░ рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ
 //Setup GUI if (!_beforeSpecialView.isPostIt) // V581. The conditional expressions of the 'if' operators situated alongside each other are identical. { ... } //Set old style if not fullscreen if (!_beforeSpecialView.isPostIt) { ... } 


рдпрд╣рд╛рдВ рдореИрдВ CppCat рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВред рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛? рдХреЛрдб рдорд╛рдиреНрдп рд╣реИ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ "рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЧрдпрд╛!" рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЧрд▓рддреА рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╡рд╣рд╛рдБ "рдФрд░" рд╣реЛрдЧрд╛ред рдмрд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдбрд┐рдЬрд╛рдЗрди рдХреЛрдбред

"&& 'рдСрдкрд░реЗрд╢рди рдХреА рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдБ" рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ "|| рдСрдкрд░реЗрд╢рди ┬╗
 printPage = (!(_pdlg.Flags & PD_PAGENUMS) || (pageNum >= _pdlg.nFromPage) && (pageNum <= _pdlg.nToPage)); 


CppCat рд╣рдардкреВрд░реНрд╡рдХ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕рдВрдЪрд╛рд▓рди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрд░реНрде рдФрд░ рд╕реНрд╡рдЪреНрдЫрддрд╛ рджреЛрдиреЛрдВ рдореЗрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрд╛рдирддрд╛ рдерд╛ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдмреЗрд╢рдХ, "рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд╣рд┐рдд рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ," рд▓реЗрдХрд┐рди рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдпрд╣ рдирд╣реАрдВ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЕрд░реНрдерд╣реАрди рдХреЛрдб рдЕрдиреНрдп рд╕рдВрдХрд▓рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдордЭ рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИред
 if (unicodeSupported) ::DispatchMessageW(&msg); else // V523. The 'then' statement is equivalent to the 'else' statement ::DispatchMessage(&msg); 


рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ "#ffine DispatchMessage DispatchMessageW" рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдПрдХ рдмрд╛рдд рд╣реИ - рдпрд╣ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдореИрдХреНрд░реЛрдЬрд╝ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд╖рдо рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЛрдб рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд┐рд╕реНрдкреИрд╕рдореИрд╕реЗрдЬ DispatchMessageA рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреЛрдб рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ред
рдмреЗрд╢рдХ, рдореБрдЭреЗ рджреЛрд╖ рд▓рдЧрддрд╛ рд╣реИ: "рдХреНрдпрд╛ рдЕрдиреНрдп рд╕рдВрдХрд▓рди рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ" рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрдЪрд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рд╕реЗ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдиреЛрдЯрдкреИрдб ++ рдЖрдЙрдЯрдкреБрдЯ
48 рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд▓рдЧрднрдЧ 38 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ рдФрд░ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ред рдЗрдирдореЗрдВ рд╕реЗ, 30 рд╕реНрдерд╛рди рд╕реНрдкрд╖реНрдЯ рдХреАрдбрд╝реЗ рд╣реИрдВ, рдФрд░ 8 рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╢реИрд▓реАрдЧрдд рдкрд░рд┐рд╡рд░реНрддрдиред рдореИрдВ рдХреЛрдб рд▓реЙрдЬрд┐рдХ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ CppCat рдХреЗ 10 рдкрджреЛрдВ рдХреЛ рдЭреВрдард╛ рдорд╛рдирддрд╛ рд╣реВрдВред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ - рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред

ZeroMq


72 рдлрд╛рдЗрд▓реЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП 1 рдорд┐рдирдЯред

рдмрд┐рд▓реНрдХреБрд▓ 1 рд╕рдВрджрд┐рдЧреНрдз рдЬрдЧрд╣ рдорд┐рд▓реАред рдФрд░ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрд▓рдд рд╣реИред

 rc = pipe_->write (&probe_msg_); // zmq_assert (rc) is not applicable here, since it is not a bug. pipe_->flush (); rc = probe_msg_.close (); // V519. The 'x' variable is assigned values twice successively. Perhaps this is a mistake. 


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


рд╡рд┐рд╢реНрд▓реЗрд╖рдХ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдареАрдХ рдХреНрдпреЛрдВ рд╣реИред

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

рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ


420 рдлрд╛рдЗрд▓реЗрдВ (8 рдЙрдкрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ), рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП 9 рдорд┐рдирдЯ, 99 рдЪреЗрддрд╛рд╡рдиреАред рдпрд╣ рдкреНрд░рддрд┐ рдлрд╝рд╛рдЗрд▓ рдФрд╕рддрди 0.23 рдЪреЗрддрд╛рд╡рдиреА рд╣реИред

рдкреНрд░рдХрд╛рд░ std :: рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдмреЗрд╡рдХреВрдл рдЧрд▓рддреА
 void CHttpDownloaderBase::GetResponseHeader(const std::string& strHeaderName, std::list<std::string>& listValues) const { listValues.empty(); // V530. The return value of function 'Foo' is required to be utilized. ... 

рднреНрд░рдо рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рдЪреМрдЦрдЯреЛрдВ рдореЗрдВ рдЦрд╛рд▓реА рдХрдВрдЯреЗрдирд░ рдкреНрд░рдХрд╛рд░ рд╡рд┐рдзрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕рд╛рдл рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди std :: рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╢реВрдиреНрдп рдЬрд╛рдВрдЪ рд╣реИред рд╕реНрдкрд╖реНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ()


рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЪреЗрдХ рдХрд░рдирд╛
 const char *xml_attr(xml_t* xml, const char *attr) { ... const char *name = xml->name; if (! xml || ! xml->attr) // V595. The pointer was utilized before it was verified against nullptr. return NULL; 


рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░
 while (*(n = ++s + strspn(s, XML_WS))) // V567. Undefined behavior. The variable is modified while being used twice between sequence points. {...} 

рджрд░рдЕрд╕рд▓, VS2010 рд╕реЗ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░, рдпрд╣ рдХреЛрдб рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ - рд╣рд╛рдБ, рдорд╛рдирдХ рдХрд╣рддреЗ рд╣реИрдВ "рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ред" рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИред


рдХреБрдЦреНрдпрд╛рдд рд╕рдВрдЪрд╛рд▓рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ
 if (!text[++r] == '\\') // V562. It's odd to compare a bool type value with a value of N. { break; } if (!text[++r] == 'u') // V562. It's odd to compare a bool type value with a value of N. { break; } 

рдпрд╣ рдЖрд╕рд╛рди рд╣реИ, рдСрдкрд░реЗрдЯрд░ "!" "==" рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ


рд╕реВрдЪрдХ рдЕрдВрдХрдЧрдгрд┐рдд
 TCHAR *ch = path + lstrlen(path) - 1; // V532. Consider inspecting the statement of '*pointer++' pattern. Probably meant: '(*pointer)++'. while (*ch && *ch != '\\') *ch--; 

CppCat рдХрд╛ рд╕реБрдЭрд╛рд╡ рдХрд┐ рдореИрдВ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдорд╛рди рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЧрд▓рдд рд╣реИ, рдореИрдВ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╣реА рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдлрд┐рд░ рднреА, рдЗрд╕ рд╕рдВрджреЗрд╢ рд╕реЗ рдХреБрдЫ рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИ - рдпрд╣ рд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдп рд▓реЗрдиреЗ рдХреЗ рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ - "*"ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдмрд╕ "ch--" рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ


рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд┐рддрд┐
 while (*p1 != 0 && *p1 == _T(' ')) // V590. Consider inspecting this expression. The expression is excessive or contains a misprint. p1++; 

рдпрд╣ рд╕рд░рд▓ рд╣реИ - рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде p1 рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдЪреЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЪрд╛рд▓рди
  m_dwInPartPos = 0; m_pcOutData = NULL; ... m_dwInPartPos = 0; // V519. The 'x' variable is assigned values twice successively. 


рдирд╣реАрдВ рдХрд┐ рдПрдирдо
 if (type == eRT_unk) // V556. The values of different enum types are compared. return false; 

C ++ рдХреЗ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рджреБрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдХрдо рд╕реЗ рдХрдо рдЬрдм рддрдХ рдирдП рдорд╛рдирдХ рдореЗрдВ рдПрдирдо рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЖрдЧрдорди) рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╣реИ рдХрд┐ рдПрдирдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЗрдХрд╛рдИ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рдПрдХ enum рдореЗрдВ eRt_unk рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ eResourceUn рдкрд╣рдЪрд╛рдирд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдмрд╕ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛ рдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ рдмрд░рд╛рдмрд░ рдереЗ 0. рддреНрд░реБрдЯрд┐ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдХреЛрдб рдореЗрдВ рдереА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдм рдХреБрдЫ рднрд╛рдЧреНрдп рд╕реЗ рдмрд╛рд╣рд░ рдерд╛ред


рдЦреИрд░, рдФрд░ рдЬрд╣рд╛рдВ рд╢реИрд▓реА рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ рдХреЗ рдмрд┐рдирд╛: = рддреБрд▓рдирд╛ рдореЗрдВ == рдХреЗ рдмрдЬрд╛рдп
 if (scheme == ZLIB_COMPRESSION) out.push(boost::iostreams::zlib_compressor()); else if (scheme = GZIP_COMPRESSION) out.push(boost::iostreams::gzip_compressor()); // V559. Suspicious assignment inside the condition expression of 'if/while/for' operator. 

рдЦреИрд░, рдореИрдВ рдХреНрдпрд╛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ - рдПрдХ рдмреЗрд╡рдХреВрдл рдЧрд▓рддреА, рдХреЛрдИ рдмрд╣рд╛рдирд╛ рдирд╣реАрдВ рд╣реИред


рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛


рдХрд┐рд╕реА рд╡реНрдпреВрд╣ рдХреА рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рдЬрд╛рдирд╛

 int len = lstrlen(szLogDir); TCHAR ch = szLogDir[len-1]; // V557. Array overrun is possible. 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд▓реЗрди рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ "> 0" рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЗ рдареАрдХ рдКрдкрд░, szLogDir рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЧреИрд░-рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рдЪреЗрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдЧрд╛ред

рд╕рдВрджреЗрд╣рд╛рд╕реНрдкрдж рдЦрд░рд╛рдмреА

рдореБрдЭреЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдРрд╕рд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдорд┐рд▓рд╛:
 if (m_packets[i] != NULL) delete m_packets[i]; 


CppCat рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреЗ рдХрд╣рд╛ рдХрд┐ рдкреВрд░реНрдг рдХреЛ рд╣рдЯрд╛рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдерд╛ред

рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдирд┐рд╖реНрдХрд░реНрд╖
99 рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ, рд▓рдЧрднрдЧ 65 рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрдЧреНрд╕ рдХрд╛ рд╡рд┐рддрд░рдг рдФрд░ рдХреЛрдб рдореЗрдВ рд╕рд┐рд░реНрдл "рд╕реБрдзрд╛рд░" рдХрд╣реАрдВ 50/50 рдХреЗ рдЖрд╕рдкрд╛рд╕ рдерд╛ред

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


рдЖрдХрд░реНрд╖рдг рдЖрддреЗ рд╣реИрдВ


рд╡рд┐рдкрдХреНрд╖



рдПрдХ рдЛрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ!

64-рдмрд┐рдЯ рдЪреЗрдХ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рдЕрднрд╛рд╡ред

рдореБрдЭреЗ рдХрднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╣рдореЗрд╢рд╛ рдЙрди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ред рд╡рд┐рдВрдбреЛрдЬ x64 рдХреЗ рддрд╣рдд, 32-рдмрд┐рдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдФрд░ рддрджрдиреБрд╕рд╛рд░, 64-рдмрд┐рдЯ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рд╢реНрди рдЕрдХреНрд╕рд░ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдбреНрд░рд╛рдЗрд╡рд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╛ рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ 3 рдЬреАрдмреА рд╕реЗ рдЕрдзрд┐рдХ рд░реИрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ, рдпрд╣ рд▓рдЧрднрдЧ 10-15% рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВред

MsBuild рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреА рдХрдореА, рдЖрджрд┐ред

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

рдПрдХ рдкреНрд▓рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд╣реАрдВ!

рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рддрдкрд╕реНрдпрд╛

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

рдЗрдЪреНрдЫрд╛-рд╕реВрдЪреА


рд╣реЛрдЯрд▓ 1

рдпрд╣ рдЙрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдЬреЛ рд╕рддреНрдпрд╛рдкрди рд╕реЗ рдмрд╛рд╣рд░ рдХрд┐рдП рдЧрдП рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдХреЛрдб рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрд╣реАрдВ-рдХрд╣реАрдВ рдПрдХ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦреА рдЧрдИ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдУрд░ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА рд╕рд╣рдХрд░реНрдореА рдПрдХ рд╣реА рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдореЗрдВ "// - V: is_test_ok & =: 501" рдЬреИрд╕реЗ рдХреЛрдб рдкрдврд╝рдирд╛ рдФрд░ рдЙрдирдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдирд╛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╣реЛрдЯрд▓рдХрд╛ реи

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

рдЕрдВрддрд┐рдо рдирд┐рд╖реНрдХрд░реНрд╖


CppCat рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдпрд╣ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЦрд░реАрдж рдЙрдкрдХрд░рдг рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдЖрдЗрдП рд╣рдордмреЗ: 80,000 рд░реВрдмрд▓ ($ 2,370) рдкрд░ рд╣рд╛рд▓ рдХреА рд╕рдореАрдХреНрд╖рд╛ рд╕реЗ рдПрдХ рд╡реИрдХреНрдпреВрдо рдореЗрдВ рдФрд╕рдд рд╕реА ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдФрд╕рдд рд╡реЗрддрди рд▓реЗрддреЗ рд╣реИрдВред рддреЛ рдЙрдирдХреЗ 1 рдШрдВрдЯреЗ рдХреЗ рдХрд╛рдо рдХрд╛ рдЦрд░реНрдЪ рд▓рдЧрднрдЧ $ 14 рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рдмрдЧ рдвреВрдВрдврдирд╛ рдФрд░ рдареАрдХ рдХрд░рдирд╛ (рдФрд░ рднрд▓реЗ рд╣реА рдЖрдк рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЖрдк рдЬреЛ рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдШрдВрдЯреЗ рдХрд╛ рдХрд╛рдо рд╣реИ)ред CppCat рдХреА рд▓рд╛рдЧрдд $ 250 рд╣реИред рдпрд╣ 17 рдШрдВрдЯреЗ рдХреЗ рдХрд╛рдо рдХреА рддрд░рд╣ рд╣реИред рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЖрдк рдмрдЧ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдкрд░ 17 рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ (рдФрд░ рдРрд╕реА рдХреНрдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡реЗ рдХрдо рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ?), рддреЛ рдЦрд░реАрдж рдЙрдЪрд┐рдд рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рджреЗрдЦрднрд╛рд▓ рдХреЗ рд▓рд┐рдП CppCat рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ VS2008 рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ рдФрд░ рдПрдХреАрдХрд░рдг рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВред

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


All Articles