рд╣рдо Google рдкрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдпрд╛ рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдВ рдирд┐рдпрдорд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдмреЗрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдирд┐рдВрдЬрд╛ рдХреЛ рдЪреЛрдорд┐рдпрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред


рдЬрдм рд╣рдо рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЕрдзрд┐рдХ рдЧреНрд░рд╛рд╣рдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЙрдЪрд┐рдд рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрддреНрд╕реБрдХрддрд╛ рд╕реЗ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдЯреВрд▓ рдХрд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдпрд╣ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдордиреЗ рдХреНрд░реЛрдорд┐рдпрдо рдХреЛрдб рдХреЛ рддреАрди рдмрд╛рд░ рдкрд╣рд▓реЗ рд╣реА рдЬрд╛рдВрдЪ рд▓рд┐рдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ рддреАрди рдмрд╛рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдкрд╛рдИрдВ, рдлрд┐рд░ рднреА рдореЗрд░реЗ рдореЗрд▓ рдореЗрдВ 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?
  1. precompiled headers.
  2. Ninja.
  3. Ninja PVS-Studio Wrapper ( PVS-Studio), PVS-Studio.
  4. тАУ тАУ 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):. '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 , .

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


All Articles