{"id":219245,"date":"2014-04-14T11:02:02","date_gmt":"2014-04-14T07:02:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=219245"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=219245","title":{"rendered":"<span class=\"post_title\">\u0414\u043e\u043b\u0433\u043e\u0436\u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Unreal Engine 4<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/www.viva64.com\/media\/images\/content\/b\/0249_UnrealEngine4_ru\/image1.png\" alt=\"Unreal Engine 4 and PVS-Studio\"\/><\/p>\n<p>  19 \u043c\u0430\u0440\u0442\u0430 2014 \u0433\u043e\u0434\u0430 Unreal Engine 4 \u0441\u0442\u0430\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0445. \u0426\u0435\u043d\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u0432\u0441\u0435\u0433\u043e 19$ \u0432 \u043c\u0435\u0441\u044f\u0446. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u044b \u043d\u0430 github \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u0421 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u043c \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b\u0430 \u043c\u0430\u0441\u0441\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443, \u0432 \u0442\u0432\u0438\u0442\u0442\u0435\u0440 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0441 \u043f\u0440\u043e\u0441\u044c\u0431\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a. \u041c\u044b \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u043c \u043f\u0440\u043e\u0441\u044c\u0431\u0443 \u043d\u0430\u0448\u0438\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430 PVS-Studio.<\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<h2>Unreal Engine<\/h2>\n<p>  Unreal Engine \u2014 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Epic Games. \u041d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C++. \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u044b \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c: Microsoft Windows, Linux, Mac OS \u0438 Mac OS X, \u043a\u043e\u043d\u0441\u043e\u043b\u0435\u0439 Xbox, Xbox 360, PlayStation 2, PlayStation Portable, PlayStation 3, Wii, Dreamcast \u0438 Nintendo GameCube.<\/p>\n<p>  \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442: <a href=\"https:\/\/www.unrealengine.com\/\">https:\/\/www.unrealengine.com\/<\/a><\/p>\n<p>  \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 Wikipedia: <a href=\"http:\/\/www.viva64.com\/go.php?url=1372\">Unreal Engine<\/a>.<\/p>\n<h2>\u0421\u043f\u043e\u0441\u043e\u0431 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 nmake-based \u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/h2>\n<p>  \u0421 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Unreal Engine \u043d\u0435 \u0432\u0441\u0451 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0432\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0432 PVS-Studio Standalone. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044e \u0441\u0442\u0430\u0442\u044c\u0438. \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u043b\u0438\u0437\u0430 PVS-Studio, \u0433\u0434\u0435 \u0443\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u044d\u0442\u0430 \u043d\u043e\u0432\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u043d\u043e\u0433\u0438\u043c \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0435\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c. \u041e\u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0433\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0438\u043b\u0438 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0431\u043e\u0440\u043a\u0438.<\/p>\n<p>  \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b PVS-Studio \u0442\u0430\u043a\u043e\u0432:<\/p>\n<ul>\n<li>\u0412\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 Visual Studio.<\/li>\n<li>\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u0442\u0435 \u043a\u043d\u043e\u043f\u043a\u0443 \u00ab\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u00bb.<\/li>\n<li>\u041f\u043b\u0430\u0433\u0438\u043d, \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432 Visual Studio, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0432\u0441\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e: \u043a\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0433\u0434\u0435 \u043b\u0435\u0436\u0430\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/li>\n<li>\u041f\u043b\u0430\u0433\u0438\u043d \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/li>\n<\/ul>\n<p>\u041d\u044e\u0430\u043d\u0441 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Unreal Engine 4 \u2014 \u044d\u0442\u043e nmake-based \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 PVS-Studio \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<p>  \u041f\u043e\u044f\u0441\u043d\u044e. \u0415\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f \u0441\u0440\u0435\u0434\u044b Visual Studio. \u041d\u043e \u0441\u0431\u043e\u0440\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e nmake. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u043b\u0430\u0433\u0438\u043d \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0444\u0430\u0439\u043b\u044b \u0438 \u0441 \u043a\u0430\u043a\u0438\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0430\u043d\u0430\u043b\u0438\u0437 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d. \u0412\u0435\u0440\u043d\u0435\u0435, \u0430\u043d\u0430\u043b\u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d, \u043d\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0442\u0440\u0443\u0434\u043e\u0451\u043c\u043e\u043a (\u0441\u043c\u043e\u0442\u0440\u0438 \u0440\u0430\u0437\u0434\u0435\u043b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438: &quot;<a href=\"http:\/\/www.viva64.com\/ru\/d\/0007\/\">\u041f\u0440\u044f\u043c\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438<\/a>&quot;).<\/p>\n<p>  <b>\u0418 \u0437\u0434\u0435\u0441\u044c \u043d\u0430 \u0432\u044b\u0440\u0443\u0447\u043a\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 PVS-Studio Standalone!<\/b> \u041e\u043d \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432 \u0434\u0432\u0443\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u0445:<\/p>\n<ol>\n<li>\u0412\u044b \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0435 \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u0438 \u043e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442 \u0443\u0436\u0435 \u0438\u0445.<\/li>\n<li>\u041e\u043d \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0438 \u00ab\u043f\u043e\u0434\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u00bb \u0432\u0441\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.<\/li>\n<\/ol>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u043e\u0442 \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Unreal Engine:<\/p>\n<ol>\n<li>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 PVS-Studio Standalone.<\/li>\n<li>\u041d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 \u00abCompiler Monitoring\u00bb.<\/li>\n<li>\u041d\u0430\u0436\u0430\u043b\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u00abStart Monitoring\u00bb. \u0423\u0432\u0438\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f \u0440\u0435\u0436\u0438\u043c \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430.<\/li>\n<li>\u041e\u0442\u043a\u0440\u044b\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 Unreal Engine \u0432 Visual Studio. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043e\u043a\u043d\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430.<\/li>\n<li>\u041a\u043e\u0433\u0434\u0430 \u0441\u0431\u043e\u0440\u043a\u0430 \u0432 Visual Studio \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c, \u043c\u044b \u043d\u0430\u0436\u0430\u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0443 Stop Monitoring. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio. <\/li>\n<\/ol>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043e\u043a\u043d\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b PVS-Studio Standalone.<\/p>\n<p>  <b><i>Hint. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Visual Studio, \u0430 \u043d\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 PVS-Studio Standalone \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432 \u0444\u0430\u0439\u043b, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u0441\u0440\u0435\u0434\u044b Visual Studio (Menu-&gt;PVS-Studio-&gt;Open\/Save-&gt;Open Analysis Report).<\/i><\/b> <\/p>\n<p>  \u0412\u0441\u0451 \u044d\u0442\u043e \u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &quot;<a href=\"http:\/\/www.viva64.com\/ru\/b\/0243\/\">PVS-Studio \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043b\u044e\u0431\u0443\u044e \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430 Windows \u0438 \u043b\u044e\u0431\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440. \u041b\u0435\u0433\u043a\u043e \u0438 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438<\/a>\u00bb. <b>\u041f\u0440\u043e\u0448\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b \u0441 PVS-Studio Standalone!<\/b><\/p>\n<h2>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438<\/h2>\n<p>  \u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Unreal Engine \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043c\u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430. \u041e\u0431 \u044d\u0442\u043e\u043c \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u0442\u0430\u043a\u0438\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u0434\u0435, \u043a\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">\/\/ Suppress static code analysis warning about a \/\/ potential comparison of two constants CA_SUPPRESS(6326); .... \/\/ Suppress static code analysis warnings about a \/\/ potentially ill-defined loop. BlendCount &gt; 0 is valid. CA_SUPPRESS(6294) .... #if USING_CODE_ANALYSIS<\/code><\/pre>\n<p>  \u0421\u0443\u0434\u044f \u043f\u043e \u044d\u0442\u0438\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u043c \u043a\u043e\u0434\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 Visual Studio. \u041e\u0431 \u044d\u0442\u043e\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435 \u043a\u043e\u0434\u0430: <a href=\"http:\/\/www.viva64.com\/go.php?url=1373\">Visual Studio 2013 Static Code Analysis in depth: What? When and How?<\/a><\/p>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b, \u043d\u043e \u044f \u043f\u0440\u043e \u044d\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u044e.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043a\u043e\u0434 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432\u0435\u0441\u044c\u043c\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio, \u043c\u044b \u043d\u0430\u0448\u043b\u0438 \u043c\u0430\u043b\u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430. \u041e\u0434\u043d\u0430\u043a\u043e, \u043a\u0430\u043a \u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0432 \u043d\u0451\u043c \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438. \u0418 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u043d\u0430\u0439\u0442\u0438 PVS-Studio. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e.<\/p>\n<h3>\u041e\u043f\u0435\u0447\u0430\u0442\u043a\u0438<\/h3>\n<p>  <\/p>\n<pre><code class=\"cpp\">static bool PositionIsInside(....) {   return     Position.X &gt;= Control.Center.X - BoxSize.X * 0.5f &amp;&amp;     Position.X &lt;= Control.Center.X + BoxSize.X * 0.5f &amp;&amp;     Position.Y &gt;= Control.Center.Y - BoxSize.Y * 0.5f &amp;&amp;     Position.Y &gt;= Control.Center.Y - BoxSize.Y * 0.5f; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V501 There are identical sub-expressions &#8216;Position.Y &gt;= Control.Center.Y \u2014 BoxSize.Y * 0.5f&#8217; to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. svirtualjoystick.cpp 97<\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u00abPosition.Y\u00bb \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u00abControl.Center.Y \u2014 BoxSize.Y * 0.5f\u00bb. \u042d\u0442\u043e \u044f\u0432\u043d\u043e \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &#8216;-&#8216; \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &#8216;+&#8217;.<\/p>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u0441\u0445\u043e\u0436\u0430\u044f \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438:  <\/p>\n<pre><code class=\"cpp\">void FOculusRiftHMD::PreRenderView_RenderThread(   FSceneView&amp; View) {   ....   if (View.StereoPass == eSSP_LEFT_EYE ||       View.StereoPass == eSSP_LEFT_EYE)   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V501 There are identical sub-expressions &#8216;View.StereoPass == eSSP_LEFT_EYE&#8217; to the left and to the right of the &#8216;||&#8217; operator. oculusrifthmd.cpp 1453<\/p>\n<p>  \u0412\u0438\u0434\u0438\u043c\u043e, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 <a href=\"http:\/\/www.viva64.com\/go.php?url=1374\">Oculus Rift<\/a> \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043e\u0442\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430.<\/p>\n<p>  \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c.  <\/p>\n<pre><code class=\"cpp\">struct FMemoryAllocationStats_DEPRECATED {   ....   SIZE_T  NotUsed5;   SIZE_T  NotUsed6;   SIZE_T  NotUsed7;   SIZE_T  NotUsed8;   .... };  FMemoryAllocationStats_DEPRECATED() {   ....   NotUsed5 = 0;   NotUsed6 = 0;   NotUsed6 = 0;     NotUsed8 = 0;     .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V519 The &#8216;NotUsed6&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 86, 88. memorybase.h 88<\/p>\n<p>  \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0447\u043b\u0435\u043d\u044b \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u0418\u0437-\u0437\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438, \u0447\u043b\u0435\u043d &#8216;NotUsed6&#8217; \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430\u0436\u0434\u044b. \u0410 \u0447\u043b\u0435\u043d &#8216;NotUsed7&#8217; \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0441\u0443\u0444\u0444\u0438\u043a\u0441 _DEPRECATED() \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<p>  \u0415\u0449\u0451 \u043f\u0430\u0440\u0430 \u043c\u0435\u0441\u0442, \u0433\u0434\u0435 \u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0434\u0432\u0430\u0436\u0434\u044b \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:<\/p>\n<ul>\n<li>V519 The &#8216;HighlightText&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 204, 206. srichtextblock.cpp 206<\/li>\n<li>V519 The &#8216;TrackError.MaxErrorInScaleDueToScale&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 1715, 1716. animationutils.cpp 1716<\/li>\n<\/ul>\n<p>  <\/p>\n<h3>\u041d\u0443\u043b\u0435\u0432\u044b\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438<\/h3>\n<p>  \u041e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u0445 \u043e\u0448\u0438\u0431\u043e\u043a. \u042d\u0442\u043e \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0422\u0430\u043a\u0438\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0441\u043b\u043e\u0436\u043d\u043e \u0438 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0412\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Unreal Engine:  <\/p>\n<pre><code class=\"cpp\">bool UEngine::CommitMapChange( FWorldContext &amp;Context ) {   ....   LevelStreamingObject = Context.World()-&gt;StreamingLevels[j];   if (LevelStreamingObject != NULL)   {     ....   }   else   {     check(LevelStreamingObject);     UE_LOG(LogStreaming, Log,            TEXT(&quot;Unable to handle streaming object %s&quot;),            *LevelStreamingObject-&gt;GetName());   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V522 Dereferencing of the null pointer &#8216;LevelStreamingObject&#8217; might take place. unrealengine.cpp 10768<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u0442\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0438\u043c\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442, \u0433\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c. \u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0437-\u0437\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e merge. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043f\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044e \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u0434 \u043d\u0435 \u0434\u043e\u0434\u0435\u043b\u0430\u043d:  <\/p>\n<pre><code class=\"cpp\">void FStreamingPause::Init() {   ....   if( GStreamingPauseBackground == NULL &amp;&amp; GUseStreamingPause )   {     \/\/ @todo UE4 merge andrew     \/\/ GStreamingPauseBackground = new FFrontBufferTexture(....);     GStreamingPauseBackground-&gt;InitRHI();   } }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V522 Dereferencing of the null pointer &#8216;GStreamingPauseBackground&#8217; might take place. streamingpauserendering.cpp 197<\/p>\n<h3>\u0415\u0449\u0451 \u043e \u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u0445<\/h3>\n<p>  \u041f\u043e\u0447\u0442\u0438 \u0432 \u043b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e \u043c\u0430\u0441\u0441\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0441 \u043a\u043e\u0434\u043e\u043c V595 (<a href=\"http:\/\/www.viva64.com\/ru\/examples\/V595\/\">\u043f\u0440\u0438\u043c\u0435\u0440\u044b<\/a>). \u042d\u0442\u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438:<\/p>\n<p>  <b>\u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u041d\u0438\u0436\u0435 \u044d\u0442\u043e\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u043d\u0443\u043b\u044e. \u042d\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u041d\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, \u0438 \u0435\u0433\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c!<\/b><\/p>\n<p>  \u0414\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 V595 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043b\u044f\u043f\u044b:  <\/p>\n<pre><code class=\"cpp\">\/**  * Global engine pointer.  * Can be 0 so don't use without checking.  *\/ ENGINE_API UEngine* GEngine = NULL;  bool UEngine::LoadMap( FWorldContext&amp; WorldContext,   FURL URL, class UPendingNetGame* Pending, FString&amp; Error ) {   ....   if (GEngine-&gt;GameViewport != NULL)   {     ClearDebugDisplayProperties();   }    if( GEngine )   {     GEngine-&gt;WorldDestroyed( WorldContext.World() );   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V595 The &#8216;GEngine&#8217; pointer was utilized before it was verified against nullptr. Check lines: 9714, 9719. unrealengine.cpp 9714<\/p>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439. \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f GEngine \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0432\u043d\u0430 \u043d\u0443\u043b\u044e. \u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0435\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0435\u0451 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c.<\/p>\n<p>  \u0412 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 LoadMap() \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430:  <\/p>\n<pre><code class=\"cpp\">if( GEngine )<\/code><\/pre>\n<p>  \u0422\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0442 \u043d\u0435\u0437\u0430\u0434\u0430\u0447\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u043f\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c:  <\/p>\n<pre><code class=\"cpp\">if (GEngine-&gt;GameViewport != NULL)<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 V595 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e (82 \u0448\u0442\u0443\u043a\u0438). \u0414\u0443\u043c\u0430\u044e, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043b\u043e\u0436\u043d\u044b\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u0443\u0434\u0443 \u0437\u0430\u0445\u043b\u0430\u043c\u043b\u044f\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0438\u0445 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c: <a href=\"http:\/\/www.viva64.com\/external-pictures\/txt\/ue-v595.txt\">ue-v595.txt<\/a>.<\/p>\n<h3>\u041b\u0438\u0448\u043d\u0435\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439<\/h3>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443. \u041e\u043d\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u0430\u044f.  <\/p>\n<pre><code class=\"cpp\">void FStreamableManager::AsyncLoadCallback(....) {   ....   FStreamable* Existing = StreamableItems.FindRef(TargetName);   ....   if (!Existing)   {     \/\/ hmm, maybe it was redirected by a consolidate     TargetName = ResolveRedirects(TargetName);     FStreamable* Existing = StreamableItems.FindRef(TargetName);   }   if (Existing &amp;&amp; Existing-&gt;bAsyncLoadRequestOutstanding)   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V561 It&#8217;s probably better to assign value to &#8216;Existing&#8217; variable than to declare it anew. Previous declaration: streamablemanager.cpp, line 325. streamablemanager.cpp 332<\/p>\n<p>  \u041a\u0430\u043a \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">\/\/ hmm, maybe it was redirected by a consolidate TargetName = ResolveRedirects(TargetName); Existing = StreamableItems.FindRef(TargetName);<\/code><\/pre>\n<p>  <\/p>\n<h3>\u041e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439<\/h3>\n<p>  <\/p>\n<pre><code class=\"cpp\">bool FRecastQueryFilter::IsEqual(   const INavigationQueryFilterInterface* Other) const {   \/\/ @NOTE: not type safe, should be changed when   \/\/ another filter type is introduced   return FMemory::Memcmp(this, Other, sizeof(this)) == 0; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V579 The Memcmp function receives the pointer and its size as arguments. It is possibly a mistake. Inspect the third argument. pimplrecastnavmesh.cpp 172<\/p>\n<p>  \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Memcmp() \u043e\u043f\u0430\u0441\u043d\u043e. \u041d\u043e, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0432\u0441\u0451 \u0435\u0449\u0451 \u0445\u0443\u0436\u0435, \u0447\u0435\u043c \u0434\u0443\u043c\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<p>  \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 sizeof(this) \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f. \u0422\u043e \u0435\u0441\u0442\u044c \u0432 32-\u0431\u0438\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0438\u0442 \u043f\u0435\u0440\u0432\u044b\u0435 4 \u0431\u0430\u0439\u0442\u0430. \u0412 64-\u0431\u0438\u0442\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f 8 \u0431\u0430\u0439\u0442.<\/p>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\">return FMemory::Memcmp(this, Other, sizeof(*this)) == 0;<\/code><\/pre>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u0437\u043b\u043e\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 Memcmp() \u043d\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430:  <\/p>\n<pre><code class=\"cpp\">D3D11_STATE_CACHE_INLINE void GetBlendState(   ID3D11BlendState** BlendState, float BlendFactor[4],   uint32* SampleMask) {   ....   FMemory::Memcmp(BlendFactor, CurrentBlendFactor,                   sizeof(CurrentBlendFactor));   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V530 The return value of function &#8216;Memcmp&#8217; is required to be utilized. d3d11statecacheprivate.h 547<\/p>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0443\u0434\u0438\u0432\u0438\u043b\u0441\u044f, \u0443\u0432\u0438\u0434\u0435\u0432, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 Memcmp() \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430. \u041a\u0430\u043a \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u0437\u0434\u0435\u0441\u044c \u0445\u043e\u0442\u0435\u043b\u0438 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0430 \u043d\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435. \u0422\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e Memcpy():  <\/p>\n<pre><code class=\"cpp\">FMemory::Memcpy(BlendFactor, CurrentBlendFactor,                 sizeof(CurrentBlendFactor));<\/code><\/pre>\n<p>  <\/p>\n<h3>\u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u0441\u0435\u0431\u0435<\/h3>\n<p>  <\/p>\n<pre><code class=\"cpp\">enum ECubeFace; ECubeFace CubeFace;  friend FArchive&amp; operator&lt;&lt;(   FArchive&amp; Ar,FResolveParams&amp; ResolveParams) {   ....   if(Ar.IsLoading())   {     ResolveParams.CubeFace = (ECubeFace)ResolveParams.CubeFace;   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V570 The &#8216;ResolveParams.CubeFace&#8217; variable is assigned to itself. rhi.h 1279<\/p>\n<p>  \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f &#8216;ResolveParams.CubeFace&#8217; \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f ECubeFace. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u044f\u0432\u043d\u043e\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043a \u0442\u0438\u043f\u0443 ECubeFace. \u0422\u043e \u0435\u0441\u0442\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u0441\u0435\u0431\u0435. \u0421 \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a.<\/p>\n<h3>\u0421\u0430\u043c\u0430\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u0430\u044f \u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a<\/h3>\n<p>  <img decoding=\"async\" src=\"http:\/\/www.viva64.com\/media\/images\/content\/b\/0249_UnrealEngine4_ru\/image2.png\" alt=\"Like\"\/><\/p>\n<p>  \u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e, \u043c\u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0442 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430:  <\/p>\n<pre><code class=\"cpp\">bool VertInfluencedByActiveBone(   FParticleEmitterInstance* Owner,   USkeletalMeshComponent* InSkelMeshComponent,   int32 InVertexIndex,   int32* OutBoneIndex = NULL);  void UParticleModuleLocationSkelVertSurface::Spawn(....) {   ....   int32 BoneIndex1, BoneIndex2, BoneIndex3;   BoneIndex1 = BoneIndex2 = BoneIndex3 = INDEX_NONE;    if(!VertInfluencedByActiveBone(         Owner, SourceComponent, VertIndex[0], &amp;BoneIndex1) &amp;&amp;      !VertInfluencedByActiveBone(         Owner, SourceComponent, VertIndex[1], &amp;BoneIndex2) &amp;&amp;       !VertInfluencedByActiveBone(         Owner, SourceComponent, VertIndex[2]) &amp;BoneIndex3)   {   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V564 The &#8216;&amp;&#8217; operator is applied to bool type value. You&#8217;ve probably forgotten to include parentheses or intended to use the &#8216;&amp;&amp;&#8217; operator. particlemodules_location.cpp 2120<\/p>\n<p>  \u0417\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u042f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0432\u044b \u0431\u0435\u0433\u043b\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u043a\u043e\u0434 \u0438 \u043d\u0435 \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0432 \u043d\u0451\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e. \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0442\u043e\u0436\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0438 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043b\u043e\u0436\u043d\u044b\u043c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435\u043c. \u0410 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c, \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.<\/p>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 VertInfluencedByActiveBone() \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c.<\/p>\n<p>  \u0412 \u043a\u043e\u0434\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f VertInfluencedByActiveBone() \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f 3 \u0440\u0430\u0437\u0430. \u0414\u0432\u0430 \u0440\u0430\u0437\u0430 \u0435\u0439 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f 4 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0441\u0435\u0433\u043e 3. \u0412 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<p>  \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0432\u0435\u0437\u0435\u043d\u0438\u044e, \u043a\u043e\u0434 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0438 \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u0430. \u0412\u043e\u0442 \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f:<\/p>\n<ol>\n<li>\u0412\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441 3 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438: \u00abVertInfluencedByActiveBone(Owner, SourceComponent, VertIndex[2])\u00bb;<\/li>\n<li>\u041a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &#8216;!&#8217;;<\/li>\n<li>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f &quot;!VertInfluencedByActiveBone(&#8230;)&quot; \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f bool;<\/li>\n<li>\u041a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &#8216;&amp;&#8217; (bitwise AND);<\/li>\n<li>\u0412\u0441\u0451 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u043b\u0435\u0432\u0430 \u043e\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 &#8216;&amp;&#8217; \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 bool. \u0421\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 &#8216;&amp;&#8217; \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f BoneIndex3.<\/li>\n<\/ol>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0437\u0430\u043f\u043e\u0434\u043e\u0437\u0440\u0438\u043b \u043d\u0435\u043b\u0430\u0434\u043d\u043e\u0435, \u043a\u043e\u0433\u0434\u0430 \u0443\u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 &#8216;&amp;&#8217; \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0438\u043f &#8216;bool&#8217;. \u041e\u0431 \u044d\u0442\u043e\u043c \u043e\u043d \u0441\u043e\u043e\u0431\u0449\u0438\u043b. \u0418 \u043d\u0435 \u0437\u0440\u044f.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043f\u044f\u0442\u0443\u044e \u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0443\u044e\u0441\u044f \u0441\u043a\u043e\u0431\u043a\u0443 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043c\u0435\u0441\u0442\u0435:  <\/p>\n<pre><code class=\"cpp\">if(!VertInfluencedByActiveBone(       Owner, SourceComponent, VertIndex[0], &amp;BoneIndex1) &amp;&amp;    !VertInfluencedByActiveBone(       Owner, SourceComponent, VertIndex[1], &amp;BoneIndex2) &amp;&amp;     !VertInfluencedByActiveBone(       Owner, SourceComponent, VertIndex[2], &amp;BoneIndex3))<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0417\u0430\u0431\u044b\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 break<\/h3>\n<p>  <\/p>\n<pre><code class=\"cpp\">static void VerifyUniformLayout(....) {   ....   switch(Member.GetBaseType())   {     case UBMT_STRUCT:  BaseTypeName = TEXT(&quot;struct&quot;);      case UBMT_BOOL:    BaseTypeName = TEXT(&quot;bool&quot;); break;     case UBMT_INT32:   BaseTypeName = TEXT(&quot;int&quot;); break;     case UBMT_UINT32:  BaseTypeName = TEXT(&quot;uint&quot;); break;     case UBMT_FLOAT32: BaseTypeName = TEXT(&quot;float&quot;); break;     default:                  UE_LOG(LogShaders, Fatal,         TEXT(&quot;Unrecognized uniform ......&quot;));   };   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V519 The &#8216;BaseTypeName&#8217; variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 862, 863. openglshaders.cpp 863<\/p>\n<p>  \u0412 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u0437\u0430\u0431\u044b\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u00abbreak;\u00bb. \u0414\u0443\u043c\u0430\u044e, \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043b\u0438\u0448\u043d\u0438.<\/p>\n<h3>\u041c\u0438\u043a\u0440\u043e\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438<\/h3>\n<p>  \u0412 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435 PVS-Studio \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u043a\u043e\u0434\u0435. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u0438\u043d\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0432\u0435\u0441\u044c\u043c\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f:  <\/p>\n<pre><code class=\"cpp\">FVariant&amp; operator=( const TArray&lt;uint8&gt; InArray ) {   Type = EVariantTypes::ByteArray;   Value = InArray;   return *this; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V801 Decreased performance. It is better to redefine the first function argument as a reference. Consider replacing &#8216;const\u2026 InArray&#8217; with &#8216;const\u2026 &amp;InArray&#8217;. variant.h 198<\/p>\n<p>  \u041d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0434\u0435\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e. \u041c\u0430\u0441\u0441\u0438\u0432 &#8216;InArray&#8217; \u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443.<\/p>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0451\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043c\u0438\u043a\u0440\u043e\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438. \u0414\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043e\u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b, \u043d\u043e \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0438\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u043c: <a href=\"http:\/\/www.viva64.com\/external-pictures\/txt\/ue-v801-V803.txt\">ue-v801-V803.txt<\/a>.<\/p>\n<h3>\u041f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430<\/h3>\n<p>  <\/p>\n<pre><code class=\"cpp\">uint32 GetAllocatedSize() const {   return UniformVectorExpressions.GetAllocatedSize()     + UniformScalarExpressions.GetAllocatedSize()     + Uniform2DTextureExpressions.GetAllocatedSize()     + UniformCubeTextureExpressions.GetAllocatedSize()     + ParameterCollections.GetAllocatedSize()     + UniformBufferStruct         ?         (sizeof(FUniformBufferStruct) +          UniformBufferStruct-&gt;GetMembers().GetAllocatedSize())         :         0; }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V502 Perhaps the &#8216;?:&#8217; operator works in a different way than it was expected. The &#8216;?:&#8217; operator has a lower priority than the &#8216;+&#8217; operator. materialshared.h 224<\/p>\n<p>  \u041a\u043e\u0434 \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0439. \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u044f\u0441\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0435 \u0442\u0430\u043a, \u044f \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440:  <\/p>\n<pre><code class=\"cpp\">return A() + B() + C() + uniform ? UniformSize() : 0;<\/code><\/pre>\n<p>  \u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 &#8216;uniform&#8217;, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0442\u044c &#8216;UniformSize()&#8217; \u0438\u043b\u0438 0. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f &#8216;+&#8217; \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 &#8216;?:&#8217;.<\/p>\n<p>  \u0412\u043e\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f:  <\/p>\n<pre><code class=\"cpp\">return (A() + B() + C() + uniform) ? UniformSize() : 0;<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0443\u044e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u043c\u044b \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u0438 \u0432 \u043a\u043e\u0434\u0435 Unreal Engine. \u041c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442.<\/p>\n<h3>\u041f\u0443\u0442\u0430\u043d\u0438\u0446\u0430 \u0441 enum<\/h3>\n<p>  \u042f \u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430. \u041f\u043e\u0442\u043e\u043c \u044f \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u043e\u043b \u043b\u0435\u043d\u044c. \u041f\u0440\u043e\u0448\u0443 \u043f\u043e\u0442\u0435\u0440\u043f\u0435\u0442\u044c \u0438 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439.  <\/p>\n<pre><code class=\"cpp\">namespace EOnlineSharingReadCategory {   enum Type   {     None          = 0x00,     Posts         = 0x01,     Friends       = 0x02,     Mailbox       = 0x04,     OnlineStatus  = 0x08,     ProfileInfo   = 0x10,       LocationInfo  = 0x20,     Default       = ProfileInfo|LocationInfo,   }; }  namespace EOnlineSharingPublishingCategory {   enum Type {     None          = 0x00,     Posts         = 0x01,     Friends       = 0x02,     AccountAdmin  = 0x04,     Events        = 0x08,     Default       = None,   };    inline const TCHAR* ToString     (EOnlineSharingReadCategory::Type CategoryType)   {     switch (CategoryType)     {     case None:     {       return TEXT(&quot;Category undefined&quot;);     }     case Posts:     {       return TEXT(&quot;Posts&quot;);     }     case Friends:     {       return TEXT(&quot;Friends&quot;);     }     case AccountAdmin:     {       return TEXT(&quot;Account Admin&quot;);     }     ....   } }<\/code><\/pre>\n<p>  \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0451\u0442 \u0437\u0434\u0435\u0441\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 <a href=\"http:\/\/www.viva64.com\/ru\/d\/0147\/\">V556<\/a>. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 &#8216;switch()&#8217; \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0438\u043f\u0430 EOnlineSharingReadCategory::Type. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445 &#8216;case&#8217; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0442\u0438\u043f\u0430 EOnlineSharingPublishingCategory::Type.<\/p>\n<h3>\u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430<\/h3>\n<p>  <\/p>\n<pre><code class=\"cpp\">const TCHAR* UStructProperty::ImportText_Internal(....) const {   ....   if (*Buffer == TCHAR('\\&quot;'))   {     while (*Buffer &amp;&amp; *Buffer != TCHAR('\\&quot;') &amp;&amp;            *Buffer != TCHAR('\\n') &amp;&amp; *Buffer != TCHAR('\\r'))     {       Buffer++;     }      if (*Buffer != TCHAR('\\&quot;'))   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V637 Two opposite conditions were encountered. The second condition is always false. Check lines: 310, 312. propertystruct.cpp 310<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0438\u043c:<\/p>\n<ul>\n<li>\u0415\u0441\u043b\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0434\u0432\u043e\u0439\u043d\u0443\u044e \u043a\u0430\u0432\u044b\u0447\u043a\u0443, \u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0446\u0438\u043a\u043b.<\/li>\n<li>\u0412 \u0446\u0438\u043a\u043b\u0435 \u043f\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0434\u0432\u043e\u0439\u043d\u0443\u044e \u043a\u0430\u0432\u044b\u0447\u043a\u0443.<\/li>\n<\/ul>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u0434\u0432\u043e\u0439\u043d\u043e\u0439 \u043a\u0430\u0432\u044b\u0447\u043a\u0438, \u043c\u044b \u043d\u0435 \u0441\u0434\u0432\u0438\u0433\u0430\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0430. \u0426\u0438\u043a\u043b \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u041f\u043e\u044f\u0441\u043d\u044e \u044d\u0442\u043e \u043d\u0430 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435:  <\/p>\n<pre><code class=\"cpp\">if (*p == '\\&quot;') {   while (*p &amp;&amp; *p != '\\&quot;')       p++; }<\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443, \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:  <\/p>\n<pre><code class=\"cpp\">if (*p == '\\&quot;') {   p++;   while (*p &amp;&amp; *p != '\\&quot;')       p++; }<\/code><\/pre>\n<p>  <\/p>\n<h3>\u041f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0434\u0432\u0438\u0433<\/h3>\n<p>  <\/p>\n<pre><code class=\"cpp\">class FMallocBinned : public FMalloc {   ....   \/* Used to mask off the bits that have been used to      lookup the indirect table *\/   uint64 PoolMask;   ....   FMallocBinned(uint32 InPageSize, uint64 AddressLimit)   {     ....     PoolMask = ( ( 1 &lt;&lt; ( HashKeyShift - PoolBitShift ) ) - 1 );     ....   } }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V629 Consider inspecting the &#8216;1 &lt;&lt; (HashKeyShift \u2014 PoolBitShift)&#8217; expression. Bit shifting of the 32-bit value with a subsequent expansion to the 64-bit type. mallocbinned.h 800<\/p>\n<p>  \u0415\u0441\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442, \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0443\u0436\u043d\u043e \u043b\u0438 \u0441\u0434\u0432\u0438\u0433\u0430\u0442\u044c 1 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u043d\u0430 31 \u0440\u0430\u0437\u0440\u044f\u0434. \u0422\u0430\u043a \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 64-\u0431\u0438\u0442\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e PoolMask, \u0432\u0438\u0434\u0438\u043c\u043e \u0442\u0430\u043a\u0430\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0435\u0441\u0442\u044c.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u044f \u0443\u0433\u0430\u0434\u0430\u043b, \u0442\u043e \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  \u0427\u0438\u0441\u043b\u043e 1 \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f int. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0441\u0434\u0432\u0438\u043d\u0443\u0442\u044c 1, \u0441\u043a\u0430\u0436\u0435\u043c \u043d\u0430 35 \u0440\u0430\u0437\u0440\u044f\u0434\u043e\u0432, \u043d\u0435\u043b\u044c\u0437\u044f. \u0424\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0435\u0442 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 (<a href=\"http:\/\/www.viva64.com\/ru\/b\/0142\/\">\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438<\/a>). \u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code class=\"cpp\">PoolMask = ( ( 1ull &lt;&lt; ( HashKeyShift - PoolBitShift ) ) - 1 );<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0423\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438<\/h3>\n<p>  <\/p>\n<pre><code class=\"cpp\">void FOculusRiftHMD::Startup() {   ....   pSensorFusion = new SensorFusion();   if (!pSensorFusion)   {     UE_LOG(LogHMD, Warning,       TEXT(&quot;Error creating Oculus sensor fusion.&quot;));     return;   }   .... }  <\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V668 There is no sense in testing the &#8216;pSensorFusion&#8217; pointer against null, as the memory was allocated using the &#8216;new&#8217; operator. The exception will be generated in the case of memory allocation error. oculusrifthmd.cpp 1594<\/p>\n<p>  \u0423\u0436\u0435 \u0434\u0430\u0432\u043d\u043e, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438, \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 &#8216;new&#8217; \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u00abif (!pSensorFusion)\u00bb \u043d\u0435 \u043d\u0443\u0436\u043d\u0430.<\/p>\n<p>  \u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u044f, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0441\u0442. \u041d\u0430 \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435, \u0432 Unreal Engine \u0442\u0430\u043a\u0438\u0445 \u043c\u0435\u0441\u0442 \u043c\u0430\u043b\u043e. \u0421\u043f\u0438\u0441\u043e\u043a: <a href=\"http:\/\/www.viva64.com\/external-pictures\/txt\/ue-V668.txt\">ue-V668.txt<\/a>.<\/p>\n<h3>Copy-Paste<\/h3>\n<p>  \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0438\u0437-\u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 Copy-Paste. \u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435:  <\/p>\n<pre><code class=\"cpp\">FString FPaths::CreateTempFilename(....) {   ....     const int32 PathLen = FCString::Strlen( Path );   if( PathLen &gt; 0 &amp;&amp; Path[ PathLen - 1 ] != TEXT('\/') )   {     UniqueFilename =       FString::Printf( TEXT(&quot;%s\/%s%s%s&quot;), Path, Prefix,                        *FGuid::NewGuid().ToString(), Extension );   }   else   {     UniqueFilename =       FString::Printf( TEXT(&quot;%s\/%s%s%s&quot;), Path, Prefix,                        *FGuid::NewGuid().ToString(), Extension );   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V523 The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. paths.cpp 703<\/p>\n<p>  \u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u0442\u0430\u043a\u043e\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430:  <\/p>\n<pre><code class=\"cpp\">template&lt; typename DefinitionType &gt;             FORCENOINLINE void Set(....) {   ....   if ( DefinitionPtr == NULL )   {     WidgetStyleValues.Add( PropertyName,       MakeShareable( new DefinitionType( InStyleDefintion ) ) );   }   else   {     WidgetStyleValues.Add( PropertyName,       MakeShareable( new DefinitionType( InStyleDefintion ) ) );   } }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V523 The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. slatestyle.h 289<\/p>\n<h3>\u0420\u0430\u0437\u043d\u043e\u0435<\/h3>\n<p>  \u041e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0437\u043d\u0430\u044f \u043c\u0435\u043b\u043e\u0447\u044c. \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0435\u0451 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.  <\/p>\n<pre><code class=\"cpp\">void FNativeClassHeaderGenerator::ExportProperties(....) {   ....   int32 NumByteProperties = 0;   ....   if (bIsByteProperty)   {     NumByteProperties;   }   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V607 Ownerless expression &#8216;NumByteProperties&#8217;. codegenerator.cpp 633  <\/p>\n<pre><code class=\"cpp\">static void GetModuleVersion( .... ) {   ....   char* VersionInfo = new char[InfoSize];   ....   delete VersionInfo;   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V611 The memory was allocated using &#8216;new T[]&#8217; operator but was released using the &#8216;delete&#8217; operator. Consider inspecting this code. It&#8217;s probably better to use &#8216;delete [] VersionInfo;&#8217;. windowsplatformexceptionhandling.cpp 107  <\/p>\n<pre><code class=\"cpp\">const FSlateBrush* FSlateGameResources::GetBrush(   const FName PropertyName, ....) {   ....   ensureMsgf(BrushAsset, TEXT(&quot;Could not find resource '%s'&quot;),              PropertyName);   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: V510 The &#8216;EnsureNotFalseFormatted&#8217; function is not expected to receive class-type variable as sixth actual argument. slategameresources.cpp 49<\/p>\n<h2>\u0412\u044b\u0432\u043e\u0434\u044b<\/h2>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0432 Visual Studio, \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u043d\u043e \u043d\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0420\u0430\u0437\u0443\u043c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043d\u0430\u0448 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c PVS-Studio \u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0438\u0437 VS2013, \u0442\u043e PVS-Studio \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0432 6 \u0440\u0430\u0437 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0448\u0438\u0431\u043e\u043a. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u0442\u044c \u0433\u043e\u043b\u043e\u0441\u043b\u043e\u0432\u043d\u044b\u043c:<\/p>\n<ol>\n<li><a href=\"http:\/\/www.viva64.com\/ru\/b\/0241\/\">\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u043a\u043e\u0434\u0430: CppCat, Cppcheck, PVS-Studio, Visual Studio<\/a>;<\/li>\n<li><a href=\"http:\/\/www.viva64.com\/ru\/a\/0086\/\">\u041c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/a>.<\/li>\n<\/ol>\n<p>\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0432\u0441\u0435\u0445 \u0446\u0435\u043d\u0438\u0442\u0435\u043b\u0435\u0439 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430.<\/p>\n<p>  P.S. \u0425\u043e\u0447\u0443 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 (\u043a\u0440\u043e\u043c\u0435 \u043c\u0438\u043a\u0440\u043e\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439), \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 <a href=\"http:\/\/www.cppcat.com\">CppCat<\/a>. \u0426\u0435\u043d\u0430 \u0433\u043e\u0434\u043e\u0432\u043e\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 CppCat \u0440\u0430\u0432\u043d\u0430 $250. \u041f\u0440\u043e\u0434\u043b\u0435\u043d\u0438\u0435 $200. \u041d\u043e CppCat \u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0451\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u043d\u044b\u0439. \u0412 \u043d\u0451\u043c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u0447\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 Unreal Engine. \u041d\u043e \u0434\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 CppCat \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<h2>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c<\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Andrey Karpov. <a href=\"http:\/\/www.viva64.com\/en\/b\/0249\/\">A Long-Awaited Check of Unreal Engine 4<\/a>.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0438 \u0435\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441?<\/b><\/p>\n<div class=\"spoiler_text\">\u0427\u0430\u0441\u0442\u043e \u043a \u043d\u0430\u0448\u0438\u043c \u0441\u0442\u0430\u0442\u044c\u044f\u043c \u0437\u0430\u0434\u0430\u044e\u0442 \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u041e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u043d\u0438\u0445 \u043c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0437\u0434\u0435\u0441\u044c: <a href=\"http:\/\/www.viva64.com\/ru\/a\/0085\/\">\u041e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e PVS-Studio \u0438 CppCat, \u0432\u0435\u0440\u0441\u0438\u044f 2014<\/a>. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c.  <\/div>\n<\/div>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/company\/pvs-studio\/blog\/219245\/\"> http:\/\/habrahabr.ru\/company\/pvs-studio\/blog\/219245\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<img decoding=\"async\" src=\"http:\/\/www.viva64.com\/media\/images\/content\/b\/0249_UnrealEngine4_ru\/image1.png\" alt=\"Unreal Engine 4 and PVS-Studio\"\/><\/p>\n<p>  19 \u043c\u0430\u0440\u0442\u0430 2014 \u0433\u043e\u0434\u0430 Unreal Engine 4 \u0441\u0442\u0430\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0445. \u0426\u0435\u043d\u0430 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438 \u0432\u0441\u0435\u0433\u043e 19$ \u0432 \u043c\u0435\u0441\u044f\u0446. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u044b \u043d\u0430 github \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u0421 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u0430\u043c \u043f\u043e\u0441\u0442\u0443\u043f\u0438\u043b\u0430 \u043c\u0430\u0441\u0441\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443, \u0432 \u0442\u0432\u0438\u0442\u0442\u0435\u0440 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0441 \u043f\u0440\u043e\u0441\u044c\u0431\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a. \u041c\u044b \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u043c \u043f\u0440\u043e\u0441\u044c\u0431\u0443 \u043d\u0430\u0448\u0438\u0445 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u043e\u0434\u0430 PVS-Studio.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-219245","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/219245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=219245"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/219245\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=219245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=219245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=219245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}