рдпрд╣ рдЖрд▓реЗрдЦ Windows рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ PVS-Studio рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ: рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдЬрд╣рд╛рдБ рдФрд░ рдХреИрд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдПред
рд╣рдорд╛рд░реЗ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕рд╛ рдЧреЗрдорд┐рдВрдЧ рдЙрджреНрдпреЛрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдп рд╣реИрдВред рдПрдПрдП-рдЧреЗрдореНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ -
рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ , рдЧреЗрдорд┐рдВрдЧ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рд╢реАрд░реНрд╖ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдПрдВ -
рдЖрдЧреЗ рдмрдврд╝реЗрдВ , рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЧреЗрдо рдЗрдВрдЬрди рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди (рдпреВрдИ) рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдХреАрдбрд╝реЗ рдвреВрдВрдвреЗрдВ -
рдХрд╛рдлреА рдЖрд╕рд╛рди ред рдЦреЗрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рд╛рде, рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдмрд╕реЗ рдЬрд▓реНрджреА рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рд╣реИ - рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЖрдк UE- рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯреЗрдЯрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ UE рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХреЗрдВред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрд╕рдореЗрдВ рдмрдЧ рдвреВрдВрдврдХрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдХреЛрдб рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдкрд░ рдЦрд░реНрдЪ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдпреВрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рдореМрдЬреВрджрд╛
рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ рдФрд░ рдЗрд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреА рдкреВрд░реНрддрд┐ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХреА рд╕рд╛рдордЧреНрд░реА рдЙрдзрд╛рд░ рд▓реЗрддреА рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди
PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЗрд╕рдХреА
рд╕реНрдерд╛рдкрдирд╛ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реИред UE рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ PVS-Studio: "C рдФрд░ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ" рдФрд░ "Microsoft Visual Studio (рд╡рд┐рдЬреБрдЕрд▓ C ++ / C #) рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдХреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред" рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдИрдбреАрдИ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рджрд░реНрдЬ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ (рд╡реАрдПрд╕) рдЖрдИрдбреАрдИ рдЦреЛрд▓рдХрд░ рдФрд░-рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ | рдСрдкреНрд╢рдВрд╕ тАЩрдкрдВрдЬреАрдХрд░рдг рдореЗрдВ рд▓рд╛рдЗрд╕реЗрдВрд╕ рджрд░реНрдЬ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реАрдПрд╕ 2019 рдореЗрдВ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдиреВ рдХреЛ 'рдПрдХреНрд╕рдЯреЗрдВрд╢рди' рдореЗрдиреВ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╡рд┐рдВрдбреЛ рдХрд╛ рдорд╛рд░реНрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: 'рдПрдХреНрд╕рдЯреЗрдВрд╢рди' | 'рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ | рд╡рд┐рдХрд▓реНрдк ... рдкрдВрдЬреАрдХрд░рдг'ред рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╣рдорд╛рд░реА
рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
UE рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо UnrealBuildTool (UBT) рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкрд┐рдХ рдЧреЗрдореНрд╕ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдПрдХ рдорд╛рдирдХ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ VS (MSBuild) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрди рд╕реА + / рд╕реА # рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ, рд╡реАрдПрд╕ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛: "рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ -> рдЪреЗрдХ -> рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛"ред рдЗрд╕ рд╕реАрдорд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдкрд╛рдп рд╣реИрдВред
рд╕рдВрдХрд▓рди рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛
UE рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рдФрд░ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо C рдФрд░ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ (рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрдиред Exe рдирд╛рдо) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЗрд╕рдХреЗ рдХрд╛рдо рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдХрд▓рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд▓рдХреНрд╖реНрдп рд╕рдВрдХрд▓рдХ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, cl.exe) рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ рдФрд░ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ C рдФрд░ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрдиреВ "рдЯреВрд▓реНрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ "рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ (C рдФрд░ C ++) ..." рд╡рд┐рдХрд▓реНрдк рдЪреБрдиреЗрдВред "рдореЙрдиреАрдЯрд░рд┐рдВрдЧ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ" рджрдмрд╛рдПрдБ рдФрд░ рдЖрдк рдиреАрдЪреЗ рдмрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рд╡рд┐рдВрдбреЛ рджреЗрдЦреЗрдВрдЧреЗ рдЖрдкрдХреЛ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЙрд▓ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИ:

рдЕрдЧрд▓рд╛, рдЕрдкрдирд╛ UE рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ "рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдмрдВрдж рдХрд░реЗрдВ" рджрдмрд╛рдПрдВред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рдВрдХрд▓рд┐рдд рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рд╣реЛрдЧрд╛ред рдкрд╛рдИ рдЧрдИ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо C рдФрд░ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдХреЗ рд╡рд┐рдВрдбреЛ "рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЖрдЙрдЯрдкреБрдЯ" рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЙрд▓рд┐рдВрдЧ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдФрд░ рдмрд╛рдж рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг CLMonitor.exe рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЙрд╕реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЬрд╣рд╛рдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред CLMonitorред ред рд╕рд░реНрд╡рд░ рдореЛрдб рдореЗрдВ CLMonitor.exe рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
CLMonitor.exe monitor
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЕрдкрдирд╛ UE рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХрдорд╛рдВрдб рдХреЛ рдХрд░реЗрдВ:
CLMonitor.exe analyze -l "c:\ptest.plog"
"рд╡рд┐рд╢реНрд▓реЗрд╖рдг" рдХрдорд╛рдВрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдореЛрдб рдореЗрдВ CLMonitor.exe рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд░рдирд┐рдВрдЧ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, CLMonitor.exe рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред "- l" рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдорд╛рд░реНрдЧ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗред
Key -StaticAnalyzer = PVSStudio рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛
рдпреВрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпреВрдмреАрдЯреА рдирд┐рд░реНрдорд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕реАрдзрд╛ рдПрдХреАрдХрд░рдг рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реАрдПрд╕ рдореЗрдВ рдЕрдкрдиреЗ рдпреВрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдВ рдФрд░ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЧреБрдг" рд╕реВрдЪреА рдореЗрдВ "рдПрдирдПрдордХреЗ" рдЪреБрдиреЗрдВред рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ -StaticAnalyzer = PVSStudio рдЬреЛрдбрд╝реЗрдВ "рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдмрдирд╛рдПрдБ"ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, "рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рд▓рд╛рдЗрди" рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
C:\Program Files\Epic Games\UE_4.22\Engine\Build\BatchFiles\Build.bat" MyProject Win64 DebugGame -Project="$(SolutionDir)$(ProjectName).uproject" -WaitMutex -FromMsBuild -StaticAnalyzer=PVSStudio
рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдирд┐рд░реНрдорд┐рдд рдирд╣реАрдВред рдкрд░рд┐рджреГрд╢реНрдп рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреЛрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рднреА рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд┐рдЫрд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рд╕реЗ рдХреЗрд╡рд▓ рдЙрди рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╢рд╛рдорд┐рд▓ .h рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдирд╛ рдЕрдЧрд▓реЗ рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдкреВрд░реНрдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рд╣реА рдЭрдВрдбрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ "рд╕рднреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ"ред рдЕрдм рдЬрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛ред
рдкреИрдХреЗрдЬ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛
рдЖрдЗрдП рдЕрдм рдкреАрд╡реАрдмреА-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдПрдХ рдФрд░ рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдпреВрдмреАрдЯреА рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реИред рдЗрд╕реЗ рдХрд░рддреЗ рд╕рдордп, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдб / рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рд╣реА рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдирд┐рд░реНрдорд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рджреЛрдиреЛрдВ рдорд┐рд▓рддреА рд╣реИред рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдлрд╝реАрд▓реНрдб рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ Build.bat рдХреЗ рд▓рд┐рдП рдкрде рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде UBT рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдмрд┐рд▓реНрдб.bat рдмрд┐рд▓реНрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред
рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдирд╛ рд╣реИ рддрд╛рдХрд┐ рд╡рд╣ рдкрд╣рд▓реЗ UBT рдХреЛ рдорд╛рдирдХ рдмрд┐рд▓реНрдб рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛ рд╕рдХреЗ рдФрд░ рдлрд┐рд░, рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрдорд╛рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣реА UBT рдЪрд▓рд╛рдПрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдзреНрд╡рдЬ -StaticAnalyzer = PVSStudio рдХреЗ рд╕рд╛рдеред рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдмреИрдЪ рдлрд╝рд╛рдЗрд▓ Build.bat рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CopyAndAnalyze.bat рдирд╛рдо рд╕реЗ рдЗрд╕рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреЙрдкрдб рдХрдорд╛рдВрдб рдХреЗ рдареАрдХ рдмрд╛рдж, рдирд┐рдореНрди рдирд┐рд░реНрджреЗрд╢ рдбрд╛рд▓реЗрдВ:
SET "UBT_ERR_LEVEL=!ERRORLEVEL!" SET "NEED_TO_PERFORM_ANALYSIS" IF "!UBT_ERR_LEVEL!"=="0" ( SET "NEED_TO_PERFORM_ANALYSIS=TRUE" ) IF "!UBT_ERR_LEVEL!"=="2" ( SET "NEED_TO_PERFORM_ANALYSIS=TRUE" ) IF DEFINED NEED_TO_PERFORM_ANALYSIS ( pushd "%~dp0\..\..\Source" ECHO Running static analysis ..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe %* -StaticAnalyzer=PVSStudio -DEPLOY popd SET "UBT_ERR_LEVEL=!ERRORLEVEL!" )
рдпрджрд┐ рдзреНрд╡рдЬ -StaticAnalyzer = PVSStudio рдкрд╣рд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 'рдЧреБрдг | рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЧреБрдг: NMake' рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рд╕рдВрдХрд▓рд┐рдд рдХреЗрд╡рд▓ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдкреВрд░реА рдЬрд╛рдБрдЪ рдХреЗ рд╕рд╛рде рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, .h рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдЧрд▓реЗ рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реБрдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреВрд░реНрдг рдмрд┐рд▓реНрдб рдореЗрдВ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдмрд┐рд▓реНрдб рдмрдирд╛рдПрдБ, рдХреИрд╢ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдПрдБ ActionHistory.bin, рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдб рдЪрд▓рд╛рдПрдБ -StaticAnalyzer = PVSStudio, рдХреИрд╢ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред ActionHistory.bin рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕рд╛рде рд╣реА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪрд▓рд╛рдиреЗ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рдкрд░рд┐рджреГрд╢реНрдп рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЖрдк рдореВрд▓ Build.blog рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рд╕рдВрд╕реНрдХрд░рдг 4.21 рдФрд░ рдмрд╛рдж рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВред рд╕реЗрдЯрд▓реЛрдХрд▓ рдПрдиреЗрдмреЗрд▓рдлреЗрдб рдПрдХреНрд╕рдкреЗрдВрд╢рди рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ:
SET PROJECT_NAME=%1% SET PLATFORM=%2% SET UPROJECT_FILE=%~5 SET ACTIONHISTORY_FOLDER= %UPROJECT_FILE%\..\Intermediate\Build\%PLATFORM%\%PROJECT_NAME% SET ACTION_HISTORY=ActionHistory.bin SET ACTION_HISTORY_BAC=%ACTION_HISTORY%.bac SET ACTIONHISTORY_PATH="%ACTIONHISTORY_FOLDER%\%ACTION_HISTORY%" SET ACTIONHISTORY_BAC_PATH= "%ACTIONHISTORY_FOLDER%\%ACTION_HISTORY_BAC%"
рдкреЙрдкрдб рдЕрдиреБрджреЗрд╢ рдХреЗ рдмрд╛рдж, рдпреЗ рдХрдорд╛рдВрдб рдбрд╛рд▓реЗрдВ:
SET "UBT_ERR_LEVEL=!ERRORLEVEL!" SET "NEED_TO_PERFORM_ANALYSIS=" IF "!UBT_ERR_LEVEL!"=="0" ( SET "NEED_TO_PERFORM_ANALYSIS=TRUE" ) IF "!UBT_ERR_LEVEL!"=="2" ( SET "NEED_TO_PERFORM_ANALYSIS=TRUE" ) IF DEFINED NEED_TO_PERFORM_ANALYSIS ( pushd "%~dp0\..\..\Source" ECHO Running static analysis IF EXIST %ACTIONHISTORY_PATH% ( ECHO Copying %ACTION_HISTORY% to %ACTION_HISTORY_BAC% COPY %ACTIONHISTORY_PATH% %ACTIONHISTORY_BAC_PATH% ECHO Removing %ACTION_HISTORY%: %ACTIONHISTORY_PATH% DEL %ACTIONHISTORY_PATH% ) ..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe %* -StaticAnalyzer=PVSStudio -DEPLOY popd SET "UBT_ERR_LEVEL=!ERRORLEVEL!" IF EXIST %ACTIONHISTORY_BAC_PATH% ( ECHO Recovering %ACTION_HISTORY% COPY %ACTIONHISTORY_BAC_PATH% %ACTIONHISTORY_PATH% ECHO Removing %ACTION_HISTORY_BAC%: %ACTIONHISTORY_BAC_PATH% DEL %ACTIONHISTORY_BAC_PATH% ) )
рдиреЛрдЯ рдХрд░реЗрдВ, рдХрд┐ PROJECT_NAME, PLATFORM рдФрд░ UPROJECT_FILE, рдЬреЛ рдХреИрд╢ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдХреЗ рд╕рд╣реА рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, Build.bat рдХреА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рддрд░реНрдХреЛрдВ рд╕реЗ рдЙрдирдХреЗ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрди рддрд░реНрдХреЛрдВ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдХреНрд░рдо рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рддреАрди рдЪрд░ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпреВрдмреАрдЯреА рд╕рдВрд╢реЛрдзрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗрд╡рд▓ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдкрд┐рдЫрд▓реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рд╕реЗ рдмрджрд▓ рджрд┐рдП рдЧрдП рд╣реИрдВред рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЛрдб рдореЗрдВ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЛрдб рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж рдкреГрд╖реНрдарднреВрдорд┐ рдореЛрдб рдореЗрдВ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рд╕рдВрд╢реЛрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╣рдорд╛рд░реЗ
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЛрдб рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпреВрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЛрдб рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдПрдХ рдорд╛рдирдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг (рд╢рд╛рдорд┐рд▓ .h рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЦрд╛рддреЗ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдХрд░) рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдмрд┐рд▓реНрдб UBT рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдВрдкрд╛рджрди рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, github.com рдкрд░ UE рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдкрд░ рдкрд╣реБрдВрдЪреЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреА рдорд╢реАрди рдкрд░ рдХреНрд▓реЛрди рдХрд░реЗрдВред рдХреНрд▓реЛрди рдХрд┐рдП рдЧрдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ "рдЧреЗрдЯ рдЕрдк рдПрдВрдб рд░рдирд┐рдВрдЧ", рдЙрдкрдзрд╛рд░рд╛ "рд╡рд┐рдВрдбреЛрдЬ" рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдпреВрдИ рднрдВрдбрд╛рд░ рдХреЗ рд╕рд╛рдордиреЗ рдкреГрд╖реНрда рдкрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЕрдкрдирд╛ рднрдВрдбрд╛рд░ рд╕реЗрдЯ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпреВрдмреАрдЯреА рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд▓реЛрди рдХрд┐рдП рдЧрдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВ: \ UnrealEngine \ Engine \ Source \ Programs \ UnrealBuildToolред рд╕рдорд╛рдзрд╛рди UnrealBuildTool.sln рдЦреЛрд▓реЗрдВ рдФрд░ рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ PVSToolChain.cs рдЦреЛрдЬреЗрдВред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдХреЛрдб рдХреА рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдХрдХреНрд╖рд╛ PVSApplicationSettings рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
рдХреЛрдб рдХреА рдпрд╣ рд▓рд╛рдЗрди рдЗрдВрдХреНрд░реАрдореЗрдВрдЯрд▓ рдСрдирд▓рд┐рд╕рд┐рд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рдбрд┐рд╕реЗрд░реНрдмрд▓рд╛рдЗрдЬ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддреА рд╣реИред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реАрдПрд╕ рдореБрдЦреНрдп рдореЗрдиреВ рдореЗрдВ "рдПрдХреНрд╕рдЯреЗрдВрд╢рди" рдЦреЛрд▓реЗрдВ, рд╕рдмрдореЗрдиреВ "рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ", "рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рдж рдмрд┐рд▓реНрдб (рдХреЗрд╡рд▓ рд╕рдВрд╢реЛрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЗрдВ)", "рд╕рдХреНрд╖рдо"ред рдЕрдм рдЪрд░ BaseFileName рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдареАрдХ рдмрд╛рдж рдХреЛрдб рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
рдЗрд╕рдХреЗ рдмрд╛рдж рдиреАрдЪреЗ рдХреЗ рдЪрд░ рдШреЛрд╖рдгрд╛рдУрдВ OutputFileLocation рдФрд░ OutputFileItem рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
UE рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ .cpp рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ .obj рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗрд╡рд▓ рдЙрди рд╕реНрд░реЛрдд .cpp рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг / рд╕рдВрд╢реЛрдзрди рдХреА рддрд╛рд░реАрдЦ рдмрд╛рдж рдореЗрдВ .pvlog рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧред Pvslog рдлрд╝рд╛рдЗрд▓ рддреИрдпрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рднреА .pvlog рдлрд╝рд╛рдЗрд▓реЗрдВ рдПрдХ рдЕрдВрддрд┐рдо .pvslog рдореЗрдВ рд╡рд┐рд▓рдп рд╣реЛ рдЬрд╛рдПрдВрдЧреА)ред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдмрджрд▓рд╛рд╡ рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ UBT рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдФрд░ рдореВрд▓ UBT рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдирд╡рдирд┐рд░реНрдорд┐рдд рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред
рдЕрдм рдпрд╣ рд╕рдм рддреИрдпрд╛рд░ рд╣реИ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдпреВрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рд░рд┐рдкреЛрд░реНрдЯ рд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рд┐рдд рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрдВрдЧреЗред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ UBT рдХрд╛ рдРрд╕рд╛ рд╕рдВрд╢реЛрдзрди рдХреЗрд╡рд▓ рддрднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдиреЗ Build.bat рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реЛ рдХрд┐ рдЙрд╕рдиреЗ рдХреИрд╢ рдлрд╝рд╛рдЗрд▓ ActionHistory.bin рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реЛ (рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЛрдб рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ "рдирд┐рд╖реНрдХреНрд░рд┐рдп" рдореЛрдб рдореЗрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд "рдмрд┐рд▓реНрдб (рд╕рдВрд╢реЛрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдХреЗрд╡рд▓) рдХреЗ рдмрд╛рдж рд╡рд┐рд╢реНрд▓реЗрд╖рдг" рд╡рд┐рдХрд▓реНрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рдореБрдЭреЗ рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ: рдпрджрд┐ рдЖрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдХрдорд╛рдВрдб рдореЗрдВ рдмрд┐рд▓реНрдб рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ -StaticAnalyzer = PVSStudio рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рддреЛ 'рдЧреБрдг | рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЧреБрдг | NMake' рдХреЛ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рд╣рдЯрд╛ рджреЗрдирд╛ рд╣реЛрдЧрд╛ред
рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдФрд░ рдЙрд╕рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЦреЛрд▓рдирд╛
UE рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, VSS-Studio рд╡рд┐рдВрдбреЛ рдореЗрдВ VS рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рдЬрд╛рдПрдЧреАред рдпрд╣ рдХреЗрд╡рд▓ рдирд┐рдореНрди рдкрде рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ: \ YouProject \ Saved \ PVS-Studio \ред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ VS рдореЗрдВ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: 'PVS-Studio | Open / Save | Open Analysis Report' рдФрд░ 'Unparsed output' рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЖрдк рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо C рдФрд░ C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд░рд┐рдкреЛрд░реНрдЯ рднреА рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ: 'рдлрд╝рд╛рдЗрд▓ | рдУрдкрди рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд▓реЙрдЧ' рдФрд░ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ 'рдЕрдирдкрд╛рд░реНрд╕реНрдб рдЖрдЙрдЯрдкреБрдЯ' рднреА рдЪреБрдиреЗрдВред
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд░рд┐рдкреЛрд░реНрдЯ рд▓реЙрдЧ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬреЛ рдХрд┐ рд╡реА.рдПрд╕. рдореЗрдВ рдЗрд╕рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЛрдбрд┐рдВрдЧ рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╡реАрдПрд╕ рдореЗрдВ рдЕрдкрдиреЗ рдЖрдк рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: 'рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ | рд╡рд┐рдХрд▓реНрдк | рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ | рд╕рд╣реЗрдЬреЗрдВ / рд▓реЛрдб (рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд░рд┐рдкреЛрд░реНрдЯ) | рдСрдЯреЛрд▓рдбреИрдирд▓ рд╡рд░реНрд▓реАрдирд▓реАрдирд▓реЙрдЧ' ред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рд╛рде рд╣реА рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рд╕реАрдзреЗ UE рдЗрдВрдЬрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдорд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд PVS-Studio рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╕рдорд░реНрдерди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдкрд╛рдардХреЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ ред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ UE рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде PVS-Studio рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ рдпрд╛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдИ рд╕рд╡рд╛рд▓ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЖрдкрдХреЗ рд╕рд╛рде рдЪреИрдЯ рдХрд░рдХреЗ рдЦреБрд╢реА рд╣реЛрдЧреАред рд╣рдорд╛рд░реЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗрдВ, рдореБрдЭреЗ UE рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ рдкрд░ рдореЗрд▓ рдорд┐рд▓реЗрдВрдЧреЗред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд┐рдВрдХ
- рдПрдВрдбреНрд░реА рдХрд╛рд░рдкреЛрд╡ред рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди 4 рдХрд╛ рдПрдХ рд▓рдВрдмрд╛-рдЪреМрдбрд╝рд╛ рдЪреЗрдХ ред (резрек рдЕрдкреНрд░реИрд▓ реирежрезрек)
- рдкреЙрд▓ рдИрд░реЗрдореАрд╡, рд╕рд┐рдпрд╛рд╡рд╛рддреЛрд╕реНрд▓рд╛рд╡ рд░реЗрдЬрд╝рдорд┐рд╕рд▓реЛрд╡ред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреАрдо рдиреЗ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдпрд╛ ред (реиреж рдЬреВрди реирежрезрел)
- рдПрдВрдбреНрд░реА рдХрд╛рд░рдкреЛрд╡ред рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг ред (27 рдЬреВрди, 2017)