
рдЬрдм рд╣рдо рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЕрдзрд┐рдХ рдЧреНрд░рд╛рд╣рдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЙрдЪрд┐рдд рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрддреНрд╕реБрдХрддрд╛ рд╕реЗ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдЯреВрд▓ рдХрд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдпрд╣ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдордиреЗ рдХреНрд░реЛрдорд┐рдпрдо рдХреЛрдб рдХреЛ рддреАрди рдмрд╛рд░ рдкрд╣рд▓реЗ рд╣реА рдЬрд╛рдВрдЪ рд▓рд┐рдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ рддреАрди рдмрд╛рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рдИрдВ, рдлрд┐рд░ рднреА рдореЗрд░реЗ рдореЗрд▓ рдореЗрдВ google.com рдкрд░ рдореЗрд▓ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡рд╛рд░рдВрдЯ рдирд╣реАрдВ рд╣реИред рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ Google рдЕрднреА рддрдХ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдФрд░ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджреЛ рднрд╛рдЧ рд╣реИрдВред рдкрд╣рд▓рд╛ рдХреНрд░реЛрдорд┐рдпрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдФрд░ рдПрдХреАрдХрд░рдг рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛
рдЕрдЧрд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛
рд╣реИ ред
рд╡реИрд╕реЗ, рдпрд╣ рд▓реЗрдЦ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рджреЗрдВред
рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд░реЛрдорд┐рдпрдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдХреНрдпреЛрдВ рд╣реИ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╣рд░ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд░реЛрдорд┐рдпрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдлрд┐рд░ рд╣рдо рдкрдврд╝рддреЗ рд╣реИрдВ ...
рдХреНрд░реЛрдорд┐рдпрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдореЗрдХрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдЙрдирдХреЗ рдкрд╛рд╕ рдХрд╛рд▓реНрдкрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рдХреЛрдб рд╣реИред рдРрд╕рд╛ рдХреИрд╕реЗ?
рдХреНрд░реЛрдорд┐рдпрдо рдЬреИрд╕реЗ рдбрд┐рдЬрд╛рдЗрдирд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмреЗрд╣рдж рдХрдард┐рди рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ "рдХреНрд░реЛрдорд┐рдпрдо рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ" рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рднреА рдЕрдЬреАрдм рдирд╣реАрдВ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рд╕реНрддрд░ рдХреА рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВред рдирд╣реАрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╣реИ, рдПрдХ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдФрд░ рдХрдИ рдФрд░ рдмрдбрд╝реЗ рдФрд░ рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рд╕рд╛рде "рдЦрдбрд╝реЗ рд░рд╣рдиреЗ" рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рд╛ред рдФрд░ рдореИрдВрдиреЗ рдЬреЛ рджреЗрдЦрд╛ рд╡рд╣ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрд░реЛрдорд┐рдпрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрд╣реБрдд рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рд░рдг рд╕рд░рд▓ рд╣реИ - рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ, рдФрд░ Microsoft рдЖрдИрдбреАрдИ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдЗрддрдиреА рдорд╛рддреНрд░рд╛ рдореЗрдВ" рдирд╣реАрдВ рдЦреАрдВрдЪрддреА рд╣реИред "рдЕрд╣рд╛!" рдХрдареЛрд░ рд▓рд┐рдирдХреНрд╕реЙрдпрдбреНрд╕ рдиреЗ рдХрд╣рд╛ ... "рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ !!!" рд▓реЗрдХрд┐рди рдХреНрд░реЛрдорд┐рдпрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рд▓рд┐рдирдХреНрд╕ рдореЗрдХрдлрд╛рдЗрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдареАрдХ рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ - рдорд╛рдирдХ GNU рдореЗрдХ "рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕" рдФрд░ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣ GYP (Generate Your Projects) рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдпрд╛ рддреЛ .vcxproj рдлрд╛рдЗрд▓реЗрдВ (MSBuild / Visual C ++) рдпрд╛ рдирд┐рдВрдЬрд╛ рд╕рд┐рд╕реНрдЯрдо рдлрд╛рдЗрд▓реЗрдВ (рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рддреЗрдЬ рдореЗрдХрдлрд╛рдЗрд▓ рд╣реИ) рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЗрд╕ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рдордиреЗ Google рдкрд░ PVS-Studio рдмреЗрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ред
рдХреНрд░реЛрдорд┐рдпрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рд╕реА / рд╕реА ++ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЖрдХрд╛рд░, рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, 500 рдПрдордмреА рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕реИрдХрдбрд╝реЛрдВ рдкрд░реАрдХреНрд╖рдг рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╣рдЬрд╛рд░реЛрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдЪреНрдЪ рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдХреЛ рдиреЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: 2012 рдореЗрдВ, рдХреНрд░реЛрдорд┐рдпрдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ 900 рд╕реЗ рдЕрдзрд┐рдХ рдЕрджреНрд╡рд┐рддреАрдп рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ 48 рд╣рдЬрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд╢реЛрдзрди рдХрд┐рдП рдЧрдП рдереЗ, рдЬреЛ рд╣рд░ 11 рдорд┐рдирдЯ рдореЗрдВ рдФрд╕рддрди рдПрдХ рд╕рдВрд╢реЛрдзрди рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рдХреНрд░рд┐рдп рднрд╛рдЧреАрджрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рд╕рдкреНрддрд╛рд╣ рдПрдХ рд╕рдВрд╢реЛрдзрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
рдЗрд╕ рдЖрдХрд╛рд░ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдХреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐ рдбрд┐рдЯреЗрдХреНрдЯрд░реЛрдВ рдХреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХрддрд╛, рд╕рдЯреАрдХрддрд╛ рдФрд░ рджрдХреНрд╖рддрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдВрдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдгрд╛рд▓реА рдкрд░ рднреА рдХрдареЛрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред рдХреНрд░реЛрдорд┐рдпрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдбрд┐рдЯреЗрдХреНрдЯрд░реЛрдВ рдХреА рдХрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рдЕрд╢реБрджреНрдзрд┐ рдФрд░ рдЕрдХреНрд╖рдорддрд╛рдПрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдареАрдХ-рдареАрдХ рдЦреЛрдЬреА рдЧрдИ рдереАрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдмрд┐рдирд╛ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдбрд┐рдЯреЗрдХреНрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛ - рд╡реЗ рдЕрдХреНрд╕рд░ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдореВрд▓ рдкреНрд░рд╛рдЗрдорд┐рдЯрд┐рд╡реНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЗрди рдХрдорд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЯреЗрдХреНрдЯрд░ рдХреЗ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреЗ рдЗрдВрддрдЬрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд▓рдЪреАрд▓реЗрдкрди рд╕реЗ рдЗрдирдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ рд╣рдо рдЗрд╕рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдЗрддрдиреЗ рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рдпрдорд┐рдд рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдХреНрд░реЛрдорд┐рдпрдо рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдХреИрд╕реЗ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдП?
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА
PVS-Studio рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдореЗрдВ 2 рдореБрдЦреНрдп рдШрдЯрдХ рд╣реИрдВ: PVS-Studio.exe рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдФрд░ IDE рдкреНрд▓рдЧ-рдЗрди рдЗрд╕ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд╕рдорд░реНрдерд┐рдд рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢реЛрдВ (Microsoft Visual Studio рдФрд░ Embarcroero RAD Studio) рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ, рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рдорд╛рди рд╣реИ - рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдореВрд▓ рд╕рдВрдХрд▓рди рдкреИрд░рд╛рдореАрдЯрд░ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдлрд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдмрд╛рд╣рд░реА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╣рддрд╛ рд╣реИ (рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕реНрдб рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ (i-file) рдХрд╛ рд╕реАрдзреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд▓реЗрдХрд┐рди PVS-Studio.exe рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдИрдбреАрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реАрдзреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЗрд╕рдХреА рдХреЙрд▓ рдХреЛ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╕реАрдзреЗ рд╕рдВрдХрд▓рдХ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЧреНрд░рд╣рдг рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд░рд╣рдг рдЖрдИрдбреАрдИ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдПрдлрдПрдлрд╝рд╛рдЗрд▓реНрд╕ рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реАрдмреАрдПрд╕ / C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕реАрдзреЗ рдХреЙрд▓ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ PVS-Studio.exe рдХреЙрд▓ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рд╡рд╣реА рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ (рд╕рд╛рде рд╣реА рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред )ред рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде, рд╕реНрдХреИрди рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдФрд░ рдпрд╣ рд╕рдмрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд┐рд░реНрдл рдЙрд╕ рдЬрдЧрд╣ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рднреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреНрд░реЙрд▓ рд╣реЛрддрд╛ рд╣реИред
PVS-Studio.exe рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде рдХреНрд░реЛрдорд┐рдпрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдХреНрд░реЛрдорд┐рдпрдо рдХреЛ GYP (рдЬрдирд░реЗрдЯ рдпреЛрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕) рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдлрд┐рд▓рд╣рд╛рд▓, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдУрдПрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд╣рдо рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реА ++ 10 рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдХрдВрдкрд╛рдЗрд▓рд░ (cl.exe) рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреАрдХреГрдд рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдореБрдлреНрдд рд╡рд┐рдВрдбреЛрдЬ рдкреИрдХреЗрдЬ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрд╕рдбреАрдХреЗред
MSBuild рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ GYP рд╕рд┐рд╕реНрдЯрдо рдЖрдкрдХреЛ Visual C ++ рдХрдВрдкрд╛рдЗрд▓рд░ (cl.exe) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░реЛрдорд┐рдпрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП MSBuild рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓ (vcxproj) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред MSBuild рдЕрд╕реЗрдВрдмрд▓реА рд╕рд┐рд╕реНрдЯрдо .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдирдХ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рдХреНрд░реЛрдорд┐рдпрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдореВрд▓ рдЖрдИрдбреАрдИ рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред MSBuild рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ Visual Studio рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдИрдбреАрдИ рдкреНрд▓рдЧ-рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ.exe рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Visual Studio Express Edition рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдореБрдХреНрдд рд╕рдВрд╕реНрдХрд░рдг IDE рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
MSBuild рдЕрд╕реЗрдВрдмрд▓реА рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ (рдпрд╛ рдмрд▓реНрдХрд┐, рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ MSBuild.exe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) vcxproj рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рд╕рддреНрдпрд╛рдкрди рд╕реАрдзреЗ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдореЛрдб рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ PVS-Studio.exe рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реАрдзреЗ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ (рдЖрдк рдПрдХ рд╕рдорд╛рди рдкреНрд░реЙрдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЙрд▓ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрджреНрдпрдкрд┐ MSBuild рдЖрдкрдХреЛ рдЕрдкрдиреА рдЕрд╕реЗрдВрдмрд▓реА рд▓рд┐рдкрд┐рдпреЛрдВ рд╕реЗ рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЬреЛ, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, vcxproj рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ), рдЕрд╕реЗрдВрдмрд▓реА рдЯреВрд▓реНрд╕ рдЬреИрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рд▓рд┐рдВрдХрд░ рдХреЛ рдкреНрд▓рдЧ-рдЗрди рд░реИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдирдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдВ (MSBuild рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рдмрд┐рд▓реНрдб рдЯрд╛рд╕реНрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред PVS-Studio рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдореЗрдВ MSBuild рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдЕрд╕реЗрдВрдмрд▓реА рдЯрд╛рд╕реНрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ Props (рдкреНрд░реЙрдкрд░реНрдЯреА рд╢реАрдЯ) рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ рд╕реАрдзреЗ рдорд╛рдирдХ vcxproj рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдореЗрдВ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдирд┐рдВрдЬрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
Cl.exe рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХреНрд░реЛрдорд┐рдпрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд┐рдВрдЬрд╛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕реЗ GYP рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬрдирд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ, рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд╕реАрдзреЗ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рдЬрдЧрд╣ рдкрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ.exe рдХреЙрд▓ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрд░реЛрдд рдлрд╛рдЗрд▓реЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреА рд╣реИрдВред
рдирд┐рдиреНрдЬрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХреАрдХрд░рдг рд╡рд┐рдзрд┐ рдХрдард┐рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдлрд╛рдЗрд▓реЗрдВ рдЖрдЯреЛ-рдЬрдирд░реЗрдЯреЗрдб * .ninja рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ obj рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд╛рд░реНрдб-рдХреЛрдбрд┐рдд рд╣реИрдВред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЗрд╕ рдЕрд╕реЗрдВрдмрд▓реА рдЪрд░рдг рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╕реНрдЯреЗрдк рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрд╕реЗрдВрдмрд▓реА рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ (рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рд▓реНрдб.рдирд┐рдВрдЬрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд): рдпреЗ ss рдФрд░ cxx рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдпреЗ рдирд┐рдпрдо рд╣реИрдВ рдЬреЛ рд╕рднреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЯреНрд░реЗрд╕ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдо рд╕реАрдзреЗ cc рдФрд░ cxx рдирд┐рдпрдореЛрдВ рдореЗрдВ PVS-Studio.exe рдХреЙрд▓ рдирд╣реАрдВ рдЬреЛрдбрд╝ рдкрд╛рдПред рдирд┐рдВрдЬрд╛ рдмрд┐рд▓реНрдб рдирд┐рдпрдо рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдХрдорд╛рдВрдб рд╡реЗрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдХрд┐рд╕ рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХрдорд╛рдВрдб рдЪрд░ рдореЗрдВ && рд╡рд░реНрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдХрдИ рдХрдорд╛рдВрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдореМрдЬреВрджрд╛ рдирд┐рдпрдо рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:
command = ninja -t msvc -e $arch -- $cc /nologo /showIncludes /FC
@$out.rsp /c $in /Fo$out /Fd$pdbname
PVS-Studio.exe:
PVS = "PVS-Studio.exe"
...
command = ninja -t msvc -e $arch -- $cc /nologo /showIncludes /FC
@$out.rsp /c $in /Fo$out /Fd$pdbname && $PVS тАУcfg "c:\test.cfg"
, ninja, , , тАУt msvs cl.exe ($cc). , $PVS , && PVS-Studio.exe.
, -, ninja, PVS-Studio.exe, command (cc cxx). , Chromium PVS-Studio .
Command-line PVS-Studio.exe .
, PVS-Studio.exe (.. IDE ) тАФ . PVS-Studio.exe cl-params, ┬л┬╗ . PVS-Studio.exe (, cl.exe), , ( /P cl.exe).
, - , C/C++ . , , include , , precompiled . (, pch ), ┬лcannot open include file┬╗.
IDE PVS-Studio precompiled , , include , pch ( ). PVS-Studio.exe , . , тАУI (/I) .
Chromium , .. , precompiled , Includes , h , . PVS-Studio (.. ) .
. , precompiled headers Chromium PVS-Studio .
?
┬л┬╗ (raw) . PVS-Studio Standalone (
). .
PVS-Studio Chromium
, PVS-Studio Chromium?
- precompiled headers.
- Ninja.
- Ninja PVS-Studio Wrapper ( PVS-Studio), PVS-Studio.
- тАУ тАУ PVS-Studio Standalone .
тАУ .
Chromium , . PVS-Studio . . , - , . , Chromium. , . Chromium .
. , . , Chromium , , , , PVS-Studio.
, , Chromium:
, . -, . -, Chromium. , , , . , ( ) , . , Chromium .
(, :)
static SECStatus
ssl3_SendEncryptedExtensions(sslSocket *ss)
{
static const unsigned char P256_SPKI_PREFIX[] = {
0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86,
0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a,
0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03,
0x42, 0x00, 0x04
};
....
if (.... ||
memcmp(spki->data, P256_SPKI_PREFIX,
sizeof(P256_SPKI_PREFIX) != 0))
{
PORT_SetError(SSL_ERROR_INVALID_CHANNEL_ID_KEY);
rv = SECFailure;
goto loser;
}
....
}
PVS-Studio ( Network Security Services): V526 The 'memcmp' function returns 0 if corresponding buffers are equal. Consider examining the condition for mistakes. ssl3con.c 10533
- memcmp() .
┬лsizeof(P256_SPKI_PREFIX) != 0┬╗ . - 1.
:
if (.... ||
memcmp(spki->data, P256_SPKI_PREFIX,
sizeof(P256_SPKI_PREFIX)) != 0)
'i' 1.
void SkCanvasStack::pushCanvas(....) {
....
for (int i = fList.count() - 1; i > 0; --i) {
SkIRect localBounds = canvasBounds;
localBounds.offset(origin - fCanvasData[i-1].origin);
fCanvasData[i-1].requiredClip.op(localBounds,
SkRegion::kDifference_Op);
fList[i-i]->clipRegion(fCanvasData[i-1].requiredClip);
}
....
}
? :) .
PVS-Studio ( Skia Graphics Engine): V501 There are identical sub-expressions to the left and to the right of the '-' operator: i тАФ i SkCanvasStack.cpp 38
[i тАФ 1]. , [i-i]. . , .
┬л┬╗
Code* Code::FindFirstCode() {
ASSERT(is_inline_cache_stub());
DisallowHeapAllocation no_allocation;
int mask = RelocInfo::ModeMask(RelocInfo::CODE_TARGET);
for (RelocIterator it(this, mask); !it.done(); it.next())
{
RelocInfo* info = it.rinfo();
return
Code::GetCodeFromTargetAddress(info->target_address());
}
return NULL;
}
PVS-Studio (Chromium): V612 An unconditional 'return' within a loop. objects.cc 10326
. , . , . .
:
int SymbolTable::Symbolize() {
....
if (socketpair(AF_UNIX, SOCK_STREAM,
0, child_fds[i]) == -1)
{
for (int j = 0; j < i; j++) {
close(child_fds[j][0]);
close(child_fds[j][1]);
PrintError("Cannot create a socket pair");
return 0;
}
}
....
}
PVS-Studio ( tcmalloc): V612 An unconditional 'return' within a loop. symbolize.cc 154
, , . , :
if (socketpair(AF_UNIX, SOCK_STREAM,
0, child_fds[i]) == -1)
{
for (int j = 0; j < i; j++) {
close(child_fds[j][0]);
close(child_fds[j][1]);
}
PrintError("Cannot create a socket pair");
return 0;
}
тАФ
class CONTENT_EXPORT EventPacket {
....
InputEvents::const_iterator begin() const
{ return events_.end(); }
InputEvents::const_iterator end() const
{ return events_.end(); }
....
protected:
InputEvents events_;
....
};
PVS-Studio (Chromium): V524 It is odd that the body of 'end' function is fully equivalent to the body of 'begin' function. event_packet.h 36
beign() end() . , begin() :
InputEvents::const_iterator begin() const
{ return events_.begin(); }
rdtsc()
__inline__ unsigned long long int rdtsc()
{
#ifdef __x86_64__
unsigned int a, d;
__asm__ volatile ("rdtsc" : "=a" (a), "=d" (d));
return (unsigned long)a | ((unsigned long)d << 32);
#elif defined(__i386__)
unsigned long long int x;
__asm__ volatile ("rdtsc" : "=A" (x));
return x;
#else
#define NO_CYCLE_COUNTER
return 0;
#endif
}
PVS-Studio ( SMHasher): V629 Consider inspecting the '(unsigned long) d << 32' expression. Bit shifting of the 32-bit value with a subsequent expansion to the 64-bit type. Platform.h 78
. , , long 32-. "(unsigned long)d << 32" . , :
return (unsigned long long)a |
((unsigned long long)d << 32);
break
'break' . . .
:
static v8::Handle<v8::Value>
toV8Object(....)
{
switch (extension->name()) {
....
case WebGLExtension::WebGLCompressedTextureATCName:
extensionObject = toV8(....);
referenceName = "webGLCompressedTextureATCName";
case WebGLExtension::WebGLCompressedTexturePVRTCName:
extensionObject = toV8(....);
referenceName = "webGLCompressedTexturePVRTCName";
break;
}
....
}
PVS-Studio ( WebKit):
- V519 The 'extensionObject' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 222, 225. V8WebGLRenderingContextCustom.cpp 225
- V519 The 'referenceName' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 223, 226. V8WebGLRenderingContextCustom.cpp 226
. 'break'. .
:
bool ScriptDebugServer::executeSkipPauseRequest(....)
{
const char* v8MethodName;
switch (request)
{
case ScriptDebugListener::NoSkip:
return false;
case ScriptDebugListener::Continue:
return true;
case ScriptDebugListener::StepInto:
v8MethodName = stepIntoV8MethodName;
case ScriptDebugListener::StepOut:
v8MethodName = stepOutV8MethodName;
}
....
}
PVS-Studio ( WebKit): V519 The 'v8MethodName' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 412, 414. ScriptDebugServer.cpp 414
. , .
:
int linux_get_device_address (....,
uint8_t *busnum, uint8_t *devaddr,
....)
{
....
*busnum = __read_sysfs_attr(ctx, sys_name, "busnum");
if (0 > *busnum)
return *busnum;
....
}
PVS-Studio ( LibUSB): V547 Expression '0 > * busnum' is always false. Unsigned type value is never < 0. linux_usbfs.c 620
'busnum' , uint8_t. , (0 > *busnum) .
. . .
, Chromium
, PVS-Studio Chromium. , PVS-Studio . , - . тАУ Chromium. PVS-Studio !
, . тАУ ,
.
P.S. NDA , .