PVS- рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ TortoiseGit рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ



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



TortoiseGit



рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рд╡рд┐рд╡рд░рдг : TortoiseGit Microsoft Windows рдХреЗ рд▓рд┐рдП git рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╢реНрдп рдЧреНрд░рд╛рд╣рдХ рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рд╢реЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди) рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред Git рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рдЧрднрдЧ TortoiseSVN рдХреЗ рд╕рдорд╛рди рд╣реИред



TortoiseGit рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЫреЛрдЯрд╛ рд╣реИред рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЖрдХрд╛рд░ 35 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк "рдПрдХреНрд╕рдЯ" рдлреЛрд▓реНрдбрд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ 9 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд░рд╣ рдЬрд╛рдПрдВрдЧреЗред



рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рд░рдЦрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реА ++ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ / рдбрдмреНрд▓реНрдпреВ 4 рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рдЪреМрдерд╛ рд╕реНрддрд░)ред рд╕рд╛рде рд╣реА, рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдореБрдЭреЗ Cppcheck рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдорд┐рд▓рд╛ ред



рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╛ рд╕рдХрддрд╛ рд╣реИред



рдорд╛рдиреНрдпрддрд╛ рдкрд░рд┐рдгрд╛рдо



TortoiseGit рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдВред рддреБрд░рдВрдд рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред Stdafx.h рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рднреНрд░рдо рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдмрд╣реБрдд рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ред



рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ рдЧрд▓рдд stdafx.h рдлрд╛рдЗрд▓реЗрдВ рдЬреБрдбрд╝реА рд╣реЛрдВрдЧреАред рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп, рд╕рдорд╕реНрдпрд╛рдПрдБ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд╣рд▓реЗ рд╕реЗ * .pch рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕реНрд╡рдпрдВ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИрдВ рдЬрдм * * .рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред TortoiseGit рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред



M_Rev2 рдХреЗ рд╕рд╛рде рдиреЗрд▓рдбрд╛



class CGitStatusListCtrl : public CListCtrl { .... CString m_Rev1; CString m_Rev2; .... }; void CGitStatusListCtrl::OnContextMenuList(....) { .... if( (!this->m_Rev1.IsEmpty()) || (!this->m_Rev1.IsEmpty()) ) .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V501 рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ '(!-> m_Rev1.IsEmpty ()) рдмрд╛рдИрдВ рдУрд░ рдФрд░' рджрд╛рдИрдВ рдУрд░ '|| рдСрдкрд░реЗрдЯрд░ред gitstatuslistctrl.cpp 1560



рд╡рд░реНрдЧ рдореЗрдВ рджреЛ рд╕рджрд╕реНрдп рд╣реИрдВ: m_Rev1 рдФрд░ m_Rev2ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЙрдкрд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдлрд┐рд░, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

 if( (!this->m_Rev1.IsEmpty()) || (!this->m_Rev2.IsEmpty()) )
      
      





рдПрдХ рдФрд░ рдмрд╣реБрдд рд╕рдорд╛рди рдЬрдЧрд╣:

 void CGitStatusListCtrl::OnNMDblclk(....) { .... if( (!m_Rev1.IsEmpty()) || (!m_Rev1.IsEmpty())) // m_Rev1 twice??? .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V501 рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ ('! M_Rev1.IsEmpty ())' рдмрд╛рдИрдВ рдУрд░ рдФрд░ 'рджрд╛рдИрдВ рдУрд░' рдСрдкрд░реЗрдЯрд░ред gitstatuslistctrl.cpp 2642



рдХреЛрдб рдореЗрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╣реИ рдЬреЛ рдХрд╣рддреА рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рднреА рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рдЧрд▓рдд рдерд╛ :)ред



рдФрд░ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдФрд░ рдЯрд╛рдЗрдкреЛ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: gitstatuslistctrl.cpp 3274ред



рд╢рд░реНрддреЛрдВ рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред



 svn_error_t * svn_mergeinfo__adjust_mergeinfo_rangelists(....) { .... if (range->start + offset > 0 && range->end + offset > 0) { if (range->start + offset < 0) range->start = 0; else range->start = range->start + offset; if (range->end + offset < 0) range->end = 0; else range->end = range->end + offset; .... }
      
      





рдЪреЗрддрд╛рд╡рдиреА PVS-Studio: V637 рджреЛ рд╡рд┐рдкрд░реАрдд рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рджреВрд╕рд░реА рд╢рд░реНрдд рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 2464, 2466ред рдЯреЛрд░реНрдЯреЛрдЗрд╕рдЧрд┐рдЯрдЧрд░реНрдЧреЗ рдорд░реНрдЬрд┐рдирдлреЛ рд╕реАред 2464



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

 if (A > 0 && B > 0) { if (A < 0) range->start = 0; else range->start = A; if (B < 0) range->end = 0; else range->end = B; .... }
      
      





рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЪреЗрдХ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ (рдП <0), (рдмреА <0)ред рдпреЗ рд╢рд░реНрддреЗрдВ рдХрднреА рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрддреАрдВред рдХреЛрдб рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рд╣реИред



рдПрдХ рд╕реВрдЪрдХ рдХреЛ рд░реЛрдХрдирд╛ рднреВрд▓ рдЧрдпрд╛



 void svn_path_splitext(const char **path_root, const char **path_ext, const char *path, apr_pool_t *pool) { const char *last_dot; .... last_dot = strrchr(path, '.'); if (last_dot && (last_dot + 1 != '\0')) .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V528 рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ 'char' рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реВрдЪрдХ рдХреА рддреБрд▓рдирд╛ '\ 0' рдорд╛рди рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ: * last_dot + 1! = '\ 0'ред path.c 1258



рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ (last_dot + 1! = '\ 0') рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ, рдПрдХ рдХреЛ рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкрд░рд┐рдгрд╛рдо рдХреА рддреБрд▓рдирд╛ рд╢реВрдиреНрдп рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИред рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛:

 if (last_dot && (*(last_dot + 1) != '\0'))
      
      





рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд▓рд┐рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ:

 if (last_dot && last_dot[1] != '\0')
      
      





PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдПрдХ рдФрд░ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдкрд╛рдИ:

 static const char * fuzzy_escape(const char *src, apr_size_t len, apr_pool_t *pool) { const char *src_orig = src; .... while (src_orig < src_end) { if (! svn_ctype_isascii(*src_orig) || src_orig == '\0') .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V528 рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ 'char' рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реВрдЪрдХ рдХреА рддреБрд▓рдирд╛ '\ 0' рдорд╛рди рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рд╕рдВрднрд╡рддрдГ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ: * src_orig == '\ 0'ред utf.c 501



рдпрд╣ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 if (! svn_ctype_isascii(*src_orig) || *src_orig == '\0')
      
      





рдЕрд╖реНрдЯрдХ рд╕рдВрдЦреНрдпрд╛



рдХреЛрдб рд╣реИ рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдШреВрдорддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЕрдХреНрд╕рд░ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВред рдЗрд╕рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд▓рдЧрднрдЧ рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдИрдмреАрдПрдо EBCDIC рдпреВрдПрд╕-рдХрдирд╛рдбрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЛрдИ рднреА рдЕрднреА рдЗрд╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдХреЛрдб рд╣реИ:

 static CodeMap map[]= { {037, _T("IBM037")}, // IBM EBCDIC US-Canada {437, _T("IBM437")}, // OEM United States {500, _T("IBM500")}, // IBM EBCDIC International .... };
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V536 рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрдерд┐рд░ рдорд╛рди рдХреЛ рдПрдХ рдЕрд╖реНрдЯрдХ рд░реВрдк рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рдПред рдЕрдХреНрдЯреВрдмрд░: 037, рджрд┐рд╕рдВрдмрд░: 31. рдпреВрдирд┐рдХреЛрдбреНрдпреВрдЯрд┐рд▓реНрд╕ред рд╕реАрдкреА 42



рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкрд╛рда рдХреЛ рд╕реБрдВрджрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, 0 рдХреЛ рд╕рдВрдЦреНрдпрд╛ 37 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдпрд╣ рдЧрд▓рдд рд╣реИред рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ 37 рдЕрд╖реНрдЯрдХ рд╕рдВрдЦреНрдпрд╛ 037 рдмрди рдЧрдИ рд╣реИред рдЕрд╖реНрдЯрдХ рд╕рдВрдЦреНрдпрд╛ 03 7 рджрд╢рдорд▓рд╡ рд╕рдВрдЦреНрдпрд╛ 31 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред



рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рд╣реЛрддреА рд╣реИрдВ



 void CCloneDlg::OnBnClickedCheckSvn() { .... CString str; m_URLCombo.GetWindowText(str); while(str.GetLength()>=1 && str[str.GetLength()-1] == _T('\\') && str[str.GetLength()-1] == _T('/')) { str=str.Left(str.GetLength()-1); } .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ: V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реИред рд╢рд╛рдпрдж '||' рдСрдкрд░реЗрдЯрд░ рдХреЛ рдпрд╣рд╛рдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред clonedlg.cpp 413



рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕рднреА \ / рдФрд░ рд╡рд░реНрдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рд╡рд░реНрдг рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рддреНрд░реБрдЯрд┐:

 str[str.GetLength()-1] == _T('\\') && str[str.GetLength()-1] == _T('/')
      
      





рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рд╡рд░реНрдг рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ \ / рдФрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 while(str.GetLength()>=1 && (str[str.GetLength()-1] == _T('\\') || str[str.GetLength()-1] == _T('/'))) { str=str.Left(str.GetLength()-1); }
      
      





рд╕реНрдерд┐рддрд┐ рдЬрд╛рдБрдЪ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐:

 enum git_ack_status { GIT_ACK_NONE, GIT_ACK_CONTINUE, GIT_ACK_COMMON, GIT_ACK_READY }; static int wait_while_ack(gitno_buffer *buf) { .... if (pkt->type == GIT_PKT_ACK && (pkt->status != GIT_ACK_CONTINUE || pkt->status != GIT_ACK_COMMON)) { .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V547 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реИред рд╕рдВрднрд╡рддрдГ '&&' рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред smart_protocol.c 264



рдпрд╣рд╛рдВ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрддреА рд╣реИред рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ GIT_ACK_CONTINUE рдХреЗ рд▓рд┐рдП рдЕрд╕рдорд╛рди рд╣реИ рдпрд╛ GIT_ACK_COMMON рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред



рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдЧреБрдо рд╣реИ



рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рдХреНрд▓рд╛рд╕ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реЛрддреЗ рд╣реИрдВ:

 class Command { virtual bool Execute() = 0; .... };
      
      





рд╡реЗ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдЖрднрд╛рд╕реА рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рднреВрд▓ рдЧрдПред рдХрдИ рдЕрдиреНрдп рд╡рд░реНрдЧ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВ:

 class SVNIgnoreCommand : public Command .... class AddCommand : public Command .... class AutoTextTestCommand : public Command ....
      
      





рдЪреВрдВрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдирд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред

 BOOL CTortoiseProcApp::InitInstance() { .... Command * cmd = server.GetCommand(....); .... delete cmd; .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V599 рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ 'рдХрдорд╛рдВрдб' рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВред TortoiseGitProc tortoiseproc.cpp 497



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



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



рдПрдХ рдмрд╛рд░ рдФрд░ред рдкреНрд░рд╢реНрди рдХрд╛ рд╕рд╣реА рдЙрддреНрддрд░ рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ C ++ рдкрд░ рдХрд┐рддрд╛рдмреЗрдВ рдХреИрд╕реЗ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд▓реЗрдЦ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ? рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИ!



рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ



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

 void free_decoration(struct decoration *n) { unsigned int i; struct object_decoration *hash = n->hash; if (n == NULL || n->hash == NULL) return; .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V595 'n' рдкреЙрдЗрдВрдЯрд░ рдХреЛ nullptr рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 41, 43. рд╕рдЬреНрдЬрд╛ред 41



рд╕реВрдЪрдХ 'n' рдХреЛ 'n-> рд╣реИрд╢' рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред NULL рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдиреАрдЪреЗ 'n' рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреЙрдЗрдВрдЯрд░ рдЕрд╢рдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реЛрдВрдЧреАред



рдЕрдорд╛рдиреНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк



 int CGit::GetCommitDiffList(....) { .... cmd.Format( _T("git.exe diff -r -R --raw -C -M --numstat -z %s --"), ignore, rev1); .... }
      
      





рдЪреЗрддрд╛рд╡рдиреА PVS-Studio: V576 рдЧрд▓рдд рдкреНрд░рд╛рд░реВрдкред 'рдкреНрд░рд╛рд░реВрдк' рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рдХреА рдПрдХ рдЕрд▓рдЧ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИред рдЕрдкреЗрдХреНрд╖рд┐рдд: 2. рд╡рд░реНрддрдорд╛рди: 3. git.cpp 1231



рдПрдХ рддрдереНрдпрд╛рддреНрдордХ рддрд░реНрдХ рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐рдкреВрд░реНрдг рд╣реИред



рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЦрддрд░рдирд╛рдХ рдРрд░реЗ рдЗрдВрдбреЗрдХреНрд╕



TortoiseGit рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВ:

 static svn_error_t * token_compare(....) { .... int idx = datasource_to_index(file_token[i]->datasource); file[i] = &file_baton->files[idx]; .... }
      
      





рдпрд╣ рдЦрддрд░рдирд╛рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ 'idx' рдХрд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ datasource_to_index рдлрд╝рдВрдХреНрд╢рди -1 рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддрд╛ рд╣реИ:

 static int datasource_to_index(svn_diff_datasource_e datasource) { switch (datasource) { .... } return -1; }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V557 рдРрд░реЗ рдЕрдВрдбрд░рд░реВрди рд╕рдВрднрд╡ рд╣реИред 'Idx' рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдорд╛рди -1 рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред diff_file.c 1052



рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХреЛрдб рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЦрддрд░рдирд╛рдХ рд╣реИред рд╕рд░рдгреА рдХрд╛ рдПрдХ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред



рд╕рдВрд╕рд╛рдзрди рд░рд┐рд╕рд╛рд╡



 CMyMemDC(CDC* pDC, ....) { .... CreateCompatibleDC(pDC); .... }
      
      





PVS-Studio рдЪреЗрддрд╛рд╡рдиреА: V530 'CreateCompatibleDC' рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред mymemdc.h 36



рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдВрджрд░реНрдн (рдбреАрд╕реА) рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐ рдпрд╣рд╛рдВ: mymemdc.h 70



рд╡рд┐рднрд┐рдиреНрди рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ



рдЧрд┐рдиреЗ рд╣реБрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдкрд░ рднреНрд░рдо рд╣реЛрддрд╛ рд╣реИ:

 static enum { ABORT, VERBATIM, WARN, WARN_STRIP, STRIP } signed_tag_mode = ABORT; static enum { ERROR, DROP, REWRITE } tag_of_filtered_mode = ERROR; static void handle_tag(const char *name, struct tag *tag) { .... switch(tag_of_filtered_mode) { case ABORT: .... }
      
      





рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V556 рд╡рд┐рднрд┐рдиреНрди рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ: рд╕реНрд╡рд┐рдЪ (ENUM_TYPE_A) {рдорд╛рдорд▓рд╛ ENUM_TYPE_B: ...}ред рддреЗрдЬреА рд╕реЗ рдирд┐рд░реНрдпрд╛рдд



Tag_of_filtered_mode рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ ABORT рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред



рдЯрд╛рдЗрдкреЛ



 static int blame_internal(git_blame *blame) { .... blame->ent = ent; blame->path = blame->path; .... }
      
      





рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪреЗрддрд╛рд╡рдиреА: V570 'рджреЛрд╖-> рдкрде' рдЪрд░ рдЦреБрдж рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рджреЛрд╖ ред9 319



рдЕрдиреНрдп рдХреАрдбрд╝реЗ



рдЕрдиреНрдп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рдЪреВрдХ рдкрд╛рдИ рдЧрдИрдВред рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд▓реЗрдЦ рдореЗрдВ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдореБрдЭреЗ рд░реЛрдЪрдХ рдирд╣реАрдВ рд▓рдЧрд╛ред TortoiseGit рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рднреА рдХрдорд┐рдпреЛрдВ рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред



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



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



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



PVS-Studio рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ: http://www.viva64.com/en/pvs-studio-download/



рдпрд╣ рд▓реЗрдЦ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╣реИред



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



рдХреНрдпрд╛ рдЖрдкрдиреЗ рд▓реЗрдЦ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИ?
рдЕрдХреНрд╕рд░ рд╣рдорд╛рд░реЗ рд▓реЗрдЦреЛрдВ рд╕реЗ рд╡рд╣реА рдкреНрд░рд╢реНрди рдкреВрдЫреЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдордиреЗ рдпрд╣рд╛рдВ рдЙрдирдХреЗ рдЙрддреНрддрд░ рдПрдХрддреНрд░ рдХрд┐рдП рд╣реИрдВ: рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рдХреИрдкреНрдкрдХреИрдЯ, рд╕рдВрд╕реНрдХрд░рдг 2014 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм ред рдХреГрдкрдпрд╛ рд╕реВрдЪреА рджреЗрдЦреЗрдВред




All Articles