{"id":353583,"date":"2024-05-20T22:30:55","date_gmt":"2024-05-20T22:30:55","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=353583"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=353583","title":{"rendered":"<span>PVS-Studio vs CodeLite: \u0431\u0438\u0442\u0432\u0430 \u0437\u0430 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041a\u0430\u043a \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b? \u041e\u0434\u0438\u043d \u0438\u0437 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c, \u043a\u0430\u043a \u044d\u0442\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 CodeLite.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/41f\/839\/90d\/41f83990d0113ffa10c1f47f20519714.png\" alt=\"1065_CodeLite_ru\/image1.png\" title=\"\" width=\"1600\" height=\"902\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/41f\/839\/90d\/41f83990d0113ffa10c1f47f20519714.png\"\/><\/figure>\n<h3>\u041e CodeLite<\/h3>\n<p>CodeLite \u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (IDE) \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a C, C++, PHP \u0438 JavaScript. \u041e\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 CodeLite:<\/p>\n<ul>\n<li>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430: CodeLite \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438 \u043c\u043e\u0449\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c, \u0431\u044b\u0441\u0442\u0440\u044b\u043c\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a: IDE \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u043a\u0438: CodeLite \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u0441\u0442\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Make, CMake \u0438 \u0434\u0440\u0443\u0433\u0438\u0435. \u042d\u0442\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0438 \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Git: IDE \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 Git, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c\u0438 Git \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439: CodeLite \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c IDE \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u044c: CodeLite \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c Windows, macOS \u0438 Linux, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445.<\/p>\n<\/li>\n<\/ul>\n<p>CodeLite \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0438 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0432\u043a\u043b\u0430\u0434 \u0432 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 IDE. \u041e\u043d \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0449\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c.<\/p>\n<p>\u041f\u0440\u043e\u0448\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440, \u043a\u0430\u043a \u0432 \u0431\u043b\u043e\u0433\u0435 PVS-Studio \u0431\u044b\u043b\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/0443\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u043f\u0440\u043e \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 CodeLite. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438.<\/p>\n<h3>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438<\/h3>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u043b \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 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 CodeLite \u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/github.com\/eranif\/codelite\/tree\/17.0.0\">17.0.0<\/a>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u043b\u0438 \u043c\u043e\u0451 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0415\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439, \u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0438\u043c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439. \u041c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439. \u0415\u0441\u043b\u0438 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0438 \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435, \u0442\u043e \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438.<\/p>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N1<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v554\/\">V554<\/a> Incorrect use of unique_ptr. The memory allocated with &#8216;new []&#8217; will be cleaned using &#8216;delete&#8217;. clSocketBase.cpp:282:1<\/p>\n<pre><code class=\"cpp\">int clSocketBase::ReadMessage(wxString&amp; message, int timeout) {   ....   size_t message_len(0);   ....   message_len = ::atoi(....);   ....   std::unique_ptr&lt;char> pBuff(new char[message_len]);   .... } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u043c\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e. \u0412 \u043a\u043e\u0434\u0435 \u0448\u0430\u0431\u043b\u043e\u043d \u043a\u043b\u0430\u0441\u0441\u0430 <em>std::unique_ptr<\/em> \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0438\u043f\u043e\u043c <em>char<\/em>. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0432 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u043b\u044f \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <em>delete<\/em>. \u041e\u0434\u043d\u0430\u043a\u043e \u0443\u043c\u043d\u043e\u043c\u0443 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 *new[]. *\u041f\u043e\u0447\u0435\u043c\u0443 \u0432 \u0421++ \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <em>delete[]<\/em> \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\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, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/0973\/\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/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 \u0438\u043d\u0441\u0442\u0430\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u043a\u043b\u0430\u0441\u0441\u0430 <em>std::unique_ptr<\/em> \u0442\u0438\u043f\u043e\u043c <em>char[]<\/em>:<\/p>\n<pre><code class=\"cpp\">std::unique_ptr&lt;char[]> pBuff { new char[message_len] }; <\/code><\/pre>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N2<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v762\/\">V762<\/a> It is possible a virtual function was overridden incorrectly. See third argument of function &#8216;Update&#8217; in derived class &#8216;clProgressDlg&#8217; and base class &#8216;wxGenericProgressDialog&#8217;. progress_dialog.h:47:1, progdlgg.h:44:1<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412\u043e\u0442 \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435:<\/p>\n<pre><code class=\"cpp\">class WXDLLIMPEXP_CORE wxGenericProgressDialog : public wxDialog { public: ....      virtual bool Update(int value,                         const wxString&amp; newmsg = wxEmptyString,                         bool *skip = NULL);  .... }; <\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u043a\u0430\u043a \u0432 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0435:<\/p>\n<pre><code class=\"cpp\">class clProgressDlg : public wxProgressDialog { public:     ....     bool Update(int value, const wxString&amp; msg);     .... }; <\/code><\/pre>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>clProgressDlg::Update<\/em> \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0430 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <em>wxGenericProgressDialog::Update<\/em>.<\/p>\n<p>\u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u043e\u0435:<\/p>\n<pre><code class=\"cpp\">class clProgressDlg : public wxProgressDialog { public:     ....     bool Update(int value, const wxString&amp; msg, bool *skip);     .... }; <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 C++11, \u043c\u043e\u0436\u043d\u043e \u0438 \u0434\u0430\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/override\"><em>override<\/em><\/a>:<\/p>\n<pre><code class=\"cpp\">class clProgressDlg : public wxProgressDialog { public:     ....     bool Update(int value, const wxString&amp; msg, bool *skip) override;     .... }; <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043f\u043e\u0439\u043b\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See second argument of function &#8216;Pulse&#8217; in derived class &#8216;clProgressDlg&#8217; and base class &#8216;wxGenericProgressDialog&#8217;. progress_dialog.h:48:1, progdlgg.h:45:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See qualifiers of function &#8216;WantsErrors&#8217; in derived class &#8216;DbgVarObjUpdate&#8217; and base class &#8216;DbgCmdHandler&#8217;. dbgcmd.h:504:1, dbgcmd.h:59:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See first argument of function &#8216;OnURL&#8217; in derived class &#8216;ChangeLogPage&#8217; and base class &#8216;ChangeLogPageBase&#8217;. changelogpage.h:51:1, subversion2_ui.h:351:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See qualifiers of function &#8216;GetStatusBar&#8217; in derived class &#8216;MainFrameBase&#8217; and base class &#8216;wxFrameBase&#8217;. gui.h:161:1, frame.h:119:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See qualifiers of function &#8216;GetMenuBar&#8217; in derived class &#8216;MainFrameBase&#8217; and base class &#8216;wxFrameBase&#8217;. gui.h:162:1, frame.h:85:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See sixth argument of function &#8216;InsertPage&#8217; in derived class &#8216;clGTKNotebook&#8217; and base class &#8216;wxNotebook&#8217;. GTKNotebook.hpp:69:1, notebook.h:87:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See fifth argument of function &#8216;CreateLinkTargets&#8217; in derived class &#8216;BuilderGnuMakeOneStep&#8217; and base class &#8216;BuilderGNUMakeClassic&#8217;. builder_gnumake_onestep.h:60:1, builder_gnumake.h:75:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See sixth argument of function &#8216;CreateLinkTargets&#8217; in derived class &#8216;BuilderGnuMakeOneStep&#8217; and base class &#8216;BuilderGNUMakeClassic&#8217;. builder_gnumake_onestep.h:60:1, builder_gnumake.h:75:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See first argument of function &#8216;DeleteAllItems&#8217; in derived class &#8216;clDataViewListCtrl&#8217; and base class &#8216;clTreeCtrl&#8217;. clDataViewListCtrl.h:147:1, clTreeCtrl.h:434:1<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N3<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v595\/\">V595<\/a> The &#8216;dbgr&#8217; pointer was utilized before it was verified against nullptr. Check lines: 349, 351. simpletable.cpp:349:1, simpletable.cpp:351:1<\/p>\n<pre><code class=\"cpp\">void WatchesTable::OnCreateVariableObject(....) {   ....   if (dbgr->GetDebuggerInformation().defaultHexDisplay == true)     dbgr->SetVariableObbjectDisplayFormat(DoGetGdbId(item),                                         DBG_DF_HEXADECIMAL);    if (dbgr)     DoRefreshItem(dbgr, item, true);   .... } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0432 \u043a\u043e\u0434\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u0443\u0436\u0435 \u0437\u0430\u0442\u0435\u043c \u044d\u0442\u043e\u0442 \u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>NULL<\/em>.<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043f\u043e\u0439\u043b\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>V595 The &#8216;win&#8217; pointer was utilized before it was verified against nullptr. Check lines: 1115, 1127. DiffSideBySidePanel.cpp:1115:1, DiffSideBySidePanel.cpp:1127:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;m_vsb&#8217; pointer was utilized before it was verified against nullptr. Check lines: 212, 224. clScrolledPanel.cpp:212:1, clScrolledPanel.cpp:224:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;ms_instance&#8217; pointer was utilized before it was verified against nullptr. Check lines: 24, 25. php_parser_thread.cpp:24:1, php_parser_thread.cpp:25:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;tok&#8217; pointer was utilized before it was verified against nullptr. Check lines: 2070, 2094. checkmemoryleak.cpp:2070:1, checkmemoryleak.cpp:2094:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;parent&#8217; pointer was utilized before it was verified against nullptr. Check lines: 1006, 1008. checkuninitvar.cpp:1006:1, checkuninitvar.cpp:1008:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;tok1&#8217; pointer was utilized before it was verified against nullptr. Check lines: 9368, 9369. tokenize.cpp:9368:1, tokenize.cpp:9369:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;pResult&#8217; pointer was utilized before it was verified against nullptr. Check lines: 522, 526. SqliteDatabaseLayer.cpp:522:1, SqliteDatabaseLayer.cpp:526:1<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N4<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v766\/\">V766<\/a> An item with the same key &#187;.&#187; has already been added. wxCodeCompletionBoxManager.cpp:19:1<\/p>\n<pre><code class=\"cpp\">std::unordered_set&lt;wxChar> delimiters =   { ':', '@', '.', '!', ' ', '\\t', '.', '\\\\',      '+', '*', '-', '&lt;', '>', '[', ']', '(',      ')', '{', '}',  '=', '%', '#', '^', '&amp;',      '\\'', '\"', '\/', '|',  ',', '~', ';', '`' }; <\/code><\/pre>\n<p>\u0412\u0438\u0434\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u043b\u0430\u0434\u043d\u043e\u0435? \u0418\u0437-\u0437\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0433\u043b\u0430\u0437 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b <em>&#8216;.&#8217;<\/em>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b. \u041b\u0438\u0431\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442, \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0440\u0430\u0442\u044c.<\/p>\n<p>\u0415\u0449\u0435 1 \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043c\u0435\u0441\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>V766 An item with the same key &#8216;&#187;MSYS2\/GCC&#187;&#8216; has already been added. compiler.cpp:621:1, compiler.cpp:620:1<\/p>\n<\/li>\n<\/ul>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N5<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v501\/\">V501<\/a> There are identical sub-expressions &#8216;result.second.empty()&#8217; to the left and to the right of the &#8216;||&#8217; operator. RemotyNewWorkspaceDlg.cpp:19:1<\/p>\n<pre><code class=\"cpp\">void RemotyNewWorkspaceDlg::OnBrowse(wxCommandEvent&amp; event) {   auto result = ::clRemoteFileSelector(_(\"Seelct a folder\"));   if (result.second.empty() || result.second.empty())   {     return;   }   .... } <\/code><\/pre>\n<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043e\u0447\u0435\u043f\u044f\u0442\u0430\u043b\u0441\u044f, \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u0441\u043b\u0435\u0432\u0430 \u0438 \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <em>||<\/em> \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u043e\u043b\u044f <em>second<\/em> \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0435 <em>first<\/em>. \u041f\u043e\u0440\u043e\u0439 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u043e\u0441\u0432\u0435\u043d\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 \u043a\u043e\u0434\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <em>::clRemoteFileSelector<\/em> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0439 \u043b\u0438\u0442\u0435\u0440\u0430\u043b \ud83d\ude42<\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"cpp\">auto result = ::clRemoteFileSelector(_(\"Select a folder\")); if (result.first.empty() || result.second.empty()) {   return; } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430\u0448\u0435\u043b \u0435\u0449\u0435 2 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>V501 There are identical sub-expressions &#8216;!sshSettings.IsRemoteUploadEnabled()&#8217; to the left and to the right of the &#8216;||&#8217; operator. PhpSFTPHandler.cpp:104:1<\/p>\n<\/li>\n<li>\n<p>V501 There are identical sub-expressions &#8216;output.Contains(&#171;username for&#187;)&#8217; to the left and to the right of the &#8216;||&#8217; operator. git.cpp:1715:1<\/p>\n<\/li>\n<\/ul>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N6<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1043\/\">V1043<\/a> A global object variable &#8216;GMON_FILENAME_OUT&#8217; is declared in the header. Multiple copies of it will be created in all translation units that include this header file. static.h:41:1<\/p>\n<pre><code class=\"cpp\">\/\/ static.h  #include &lt;wx\/string.h>  const wxString GMON_FILENAME_OUT = \"gmon.out\"; .... <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 <em>wxString<\/em> \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 C++, \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043a\u0430\u043a\u043e\u043c-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0438\u043c\u0451\u043d, \u0438\u043c\u0435\u044e\u0442 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/terms\/6506\/#ID0AB1BD61C2\">\u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u043d\u0438\u0435<\/a>. \u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0447\u0435\u0440\u0435\u0437 <em>#include<\/em> \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043f\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<p>\u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 C++, \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 C++17, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/inline\"><em>inline<\/em><\/a>. \u042d\u0442\u043e \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 header-only \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0414\u043e C++17 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c <em>extern<\/em>, \u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u043d\u0435\u0441\u0442\u0438 \u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"cpp\">\/\/ Since C++17  \/\/ static.h  #include &lt;wx\/string.h>  inline const wxString GMON_FILENAME_OUT = \"gmon.out\";  \/\/ -----------------------------------------------------  \/\/ Until \u0421++17  \/\/ static.h  #include &lt;wx\/string.h>  extern const wxString GMON_FILENAME_OUT;  \/\/ static.cpp  #include \"static.h\"  const wxString GMON_FILENAME_OUT = \"gmon.out\"; <\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043f\u043e\u0439\u043b\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>V1043 A global object variable &#8216;DOT_FILENAME_PNG&#8217; is declared in the header. Multiple copies of it will be created in all translation units that include this header file. static.h:42:1<\/p>\n<\/li>\n<li>\n<p>V1043 A global object variable &#8216;snippetSet&#8217; is declared in the header. Multiple copies of it will be created in all translation units that include this header file. swGlobals.h:41:1<\/p>\n<\/li>\n<li>\n<p>V1043 A global object variable &#8216;s_plugName&#8217; is declared in the header. Multiple copies of it will be created in all translation units that include this header file. scGlobals.h:37:1<\/p>\n<\/li>\n<li>\n<p>V1043 A global object variable &#8216;svnNO_FILES_TO_DISPLAY&#8217; is declared in the header. Multiple copies of it will be created in all translation units that include this header file. subversion_strings.h:29:1<\/p>\n<\/li>\n<li>\n<p>V1043 A global object variable &#8216;CPPCHECK_DEFAULT_COMMAND&#8217; is declared in the header. Multiple copies of it will be created in all translation units that include this header file. cppchecksettingsdlg.h:31:1<\/p>\n<\/li>\n<li>\n<p>V1043 A global object variable &#8216;CWE119&#8217; is declared in the header. Multiple copies of it will be created in all translation units that include this header file. checkbufferoverrun.h:48:1<\/p>\n<\/li>\n<li>\n<p>V1043 A global object variable &#8216;CWE398&#8217; is declared in the header. Multiple copies of it will be created in all translation units that include this header file. checkexceptionsafety.h:37:1<\/p>\n<\/li>\n<li>\n<p>V1043 A global object variable &#8217;emptyString&#8217; is declared in the header. Multiple copies of it will be created in all translation units that include this header file. config.h:23:1<\/p>\n<\/li>\n<li>\n<p>V1043 A global object variable &#8216;DEFAULT_AUI_DROPDOWN_FUNCTION&#8217; is declared in the header. Multiple copies of it will be created in all translation units that include this header file. wxc_widget.h:27:1<\/p>\n<\/li>\n<li>\n<p>&#8230;.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N7<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v773\/\">V773<\/a> Visibility scope of the &#8216;imageList&#8217; pointer was exited without releasing the memory. A memory leak is possible. acceltabledlg.cpp:61:1, acceltabledlg.cpp:47:1<\/p>\n<pre><code class=\"cpp\">AccelTableDlg::AccelTableDlg(wxWindow* parent)   : AccelTableBaseDlg(parent) {   wxImageList* imageList = new wxImageList(16, 16); \/\/ &lt;=   imageList->Add(PluginManager::Get()->                                 GetStdIcons()->                                 LoadBitmap(\"list-control\/16\/sort\"));   imageList->Add(PluginManager::Get()->                                 GetStdIcons()->                                 LoadBitmap(\"list-control\/16\/sort\"));    clKeyboardManager::Get()->GetAllAccelerators(m_accelMap);   PopulateTable(\"\");    CentreOnParent();    m_textCtrlFilter->SetFocus();    SetName(\"AccelTableDlg\");   WindowAttrManager::Load(this); } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u0443\u0442\u0435\u0447\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438. \u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <em>imageList<\/em> \u0437\u0430\u0431\u044b\u043b\u0438 \u043a\u0443\u0434\u0430-\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c.<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043c\u0435\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>V773 Visibility scope of the &#8216;pDump&#8217; pointer was exited without releasing the memory. A memory leak is possible. ErdCommitWizard.cpp:273:1, ErdCommitWizard.cpp:219:1<\/p>\n<\/li>\n<li>\n<p>V773 The function was exited without releasing the &#8216;argv&#8217; pointer. A memory leak is possible. unixprocess_impl.cpp:288:1, unixprocess_impl.cpp:286:1<\/p>\n<\/li>\n<li>\n<p>V773 The function was exited without releasing the &#8216;child&#8217; pointer. A memory leak is possible. compilersfoundmodel.cpp:135:1, compilersfoundmodel.cpp:127:1<\/p>\n<\/li>\n<li>\n<p>V773 The function was exited without releasing the &#8216;child&#8217; pointer. A memory leak is possible. xdebuglocalsviewmodel.cpp:135:1, xdebuglocalsviewmodel.cpp:127:1<\/p>\n<\/li>\n<\/ul>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N8<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v649\/\">V649<\/a> There are two &#8216;if&#8217; statements with identical conditional expressions. The first &#8216;if&#8217; statement contains function return. This means that the second &#8216;if&#8217; statement is senseless. Check lines: 372, 375. clTreeCtrlModel.cpp:375:1, clTreeCtrlModel.cpp:372:1<\/p>\n<pre><code class=\"cpp\">bool clTreeCtrlModel::GetRange(....) const {   items.clear();    if (from == nullptr || to == nullptr)   {     return false;   }    if (from == nullptr)   {     items.push_back(to);     return true;   }    if (to == nullptr)   {     items.push_back(from);     return true;   }   .... } <\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 <em>if<\/em>. \u041f\u043e\u0442\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u0442 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 <em>if<\/em> \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 <em>from != nullptr &amp;&amp; to != nullptr<\/em>. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043a \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435 \u0437\u0430\u0439\u0434\u0451\u0442 \u0432\u043d\u0443\u0442\u0440\u044c \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 <em>if<\/em>.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u043e\u0439:<\/p>\n<pre><code class=\"cpp\">if (from == nullptr &amp;&amp; to == nullptr) {   return false; } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430\u0448\u0451\u043b \u0435\u0449\u0451 1 \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043c\u0435\u0441\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>V649 There are two &#8216;if&#8217; statements with identical conditional expressions. The first &#8216;if&#8217; statement contains function return. This means that the second &#8216;if&#8217; statement is senseless. Check lines: 1998, 2000. ShapeCanvas.cpp:2000:1, ShapeCanvas.cpp:1998:1<\/p>\n<\/li>\n<\/ul>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N9<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v668\/\">V668<\/a> There is no sense in testing the &#8216;pDump&#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. ErdCommitWizard.cpp:220:1<\/p>\n<pre><code class=\"cpp\">void BackupPage::OnBtnBackupClick(wxCommandEvent&amp; event) {   ....   DumpClass* pDump = new DumpClass(....);   if (pDump) dumpResult = pDump->DumpData();   .... } <\/code><\/pre>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c <em>new<\/em>, \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0443\u043b\u0451\u043c. \u042d\u0442\u043e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f. \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0430\u043c\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 <em>std::bad_alloc<\/em>. \u0415\u0441\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d <em>std::abort<\/em>. \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f <em>pDump<\/em> \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u043c.<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043f\u043e\u0439\u043b\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>V668 There is no sense in testing the &#8216;pLabel&#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. ErdForeignKey.cpp:42:1<\/p>\n<\/li>\n<li>\n<p>V668 There is no sense in testing the &#8216;pBitmap&#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. ErdTable.cpp:244:1<\/p>\n<\/li>\n<li>\n<p>V668 There is no sense in testing the &#8216;m_pLabel&#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. ErdView.cpp:100:1<\/p>\n<\/li>\n<li>\n<p>V668 There is no sense in testing the &#8216;col&#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. TableSettings.cpp:96:1<\/p>\n<\/li>\n<li>\n<p>V668 There is no sense in testing the &#8216;pOutFile&#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. dumpclass.cpp:66:1<\/p>\n<\/li>\n<li>\n<p>V668 There is no sense in testing the &#8216;m_proc&#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. async_executable_cmd.cpp:182:1<\/p>\n<\/li>\n<li>\n<p>V668 There is no sense in testing the &#8216;m_pEngine&#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. spellcheck.cpp:144:1<\/p>\n<\/li>\n<li>\n<p>V668 There is no sense in testing the &#8216;pResultSet&#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. SqliteDatabaseLayer.cpp:199:1<\/p>\n<\/li>\n<li>\n<p>V668 There is no sense in testing the &#8216;buffer&#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. ShapeDataObject.cpp:65:1<\/p>\n<\/li>\n<li>\n<p>V668 There is no sense in testing the &#8216;node&#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. XmlSerializer.cpp:357:1<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N10<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v587\/\">V587<\/a> An odd sequence of assignments of this kind: A = B; B = A;. Check lines: 483, 484. SqlCommandPanel.cpp:484:1, SqlCommandPanel.cpp:483:1<\/p>\n<pre><code class=\"cpp\">wxArrayString SQLCommandPanel::ParseSql() const {   ....   int startPos = 0;   int stopPos = 0;   ....   startPos = stopPos;   stopPos = startPos;   ....   } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043d\u043e\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430\u043c\u0438, \u0430 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043f\u0440\u0438\u0440\u0430\u0432\u043d\u044f\u043b\u0438 \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e*.*<\/p>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N11<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v590\/\">V590<\/a> Consider inspecting the &#8216;where != std::string::npos &amp;&amp; where == 0&#8217; expression. The expression is excessive or contains a misprint. dbgcmd.cpp:60:1<\/p>\n<pre><code class=\"cpp\">void wxGDB_STRIP_QUOATES(wxString&amp; currentToken) {   size_t where = currentToken.find(wxT(\"\\\"\"));    if (where != std::string::npos &amp;&amp; where == 0) {      currentToken.erase(0, 1);   }   .... } <\/code><\/pre>\n<p>\u041a\u043e\u0434 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0434\u0432\u043e\u0439\u043d\u0443\u044e \u043a\u0430\u0432\u044b\u0447\u043a\u0443, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u044d\u0442\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443, <em>std::string::npos<\/em> \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u0435\u043d \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c\u043e\u043c\u0443 \u0442\u0438\u043f\u043e\u043c <em>size_t<\/em>. \u0422.\u0435. <em>std::string::npos<\/em> \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d 0.<\/p>\n<p>\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435:<\/p>\n<pre><code class=\"cpp\">if (!currentToken.empty() &amp;&amp; currentToken[0] == wxT('\"'))  {    currentToken.erase(0, 1); } <\/code><\/pre>\n<p>\u0415\u0449\u0451 1 \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043c\u0435\u0441\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>V590 Consider inspecting the &#8216;where != std::string::npos &amp;&amp; where == 0&#8217; expression. The expression is excessive or contains a misprint. dbgcmd.cpp:70:1<\/p>\n<\/li>\n<\/ul>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N12<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v523\/\">V523<\/a> The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. mainbook.cpp:450:1, mainbook.cpp:442:1<\/p>\n<pre><code class=\"cpp\">void MainBook::GetAllEditors(clEditor::Vec_t&amp; editors, size_t flags) {   ....   if (!(flags &amp; kGetAll_DetachedOnly))   {     if (!(flags &amp; kGetAll_RetainOrder))     {       \/\/ Most of the time we don't care about       \/\/ the order the tabs are stored in       for (size_t i = 0; i &lt; m_book->GetPageCount(); i++)       {         clEditor* editor = dynamic_cast&lt;clEditor*>(m_book->GetPage(i));         if (editor)         {           editors.push_back(editor);         }       }     }     else     {       for (size_t i = 0; i &lt; m_book->GetPageCount(); i++)       {         clEditor* editor = dynamic_cast&lt;clEditor*>(m_book->GetPage(i));         if (editor)         {           editors.push_back(editor);         }       }     }   }   .... } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u0430\u044f \u0438 \u043b\u043e\u0436\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <em>if<\/em> \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442. \u0412 \u043e\u0442\u0447\u0451\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u043b\u0438 \u0435\u0449\u0451 8 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043c\u0435\u0441\u0442:<\/p>\n<ul>\n<li>\n<p>V523 The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. art_metro.cpp:289:1, art_metro.cpp:287:1<\/p>\n<\/li>\n<li>\n<p>V523 The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. clStatusBar.cpp:151:1, clStatusBar.cpp:147:1<\/p>\n<\/li>\n<li>\n<p>V523 The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. php_workspace_view.cpp:1001:1, php_workspace_view.cpp:999:1<\/p>\n<\/li>\n<li>\n<p>V523 The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. art_metro.cpp:334:1, art_metro.cpp:332:1<\/p>\n<\/li>\n<li>\n<p>V523 The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. symboldatabase.cpp:1299:1, symboldatabase.cpp:1297:1<\/p>\n<\/li>\n<li>\n<p>V523 The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. tokenize.cpp:10387:1, tokenize.cpp:10381:1<\/p>\n<\/li>\n<li>\n<p>V523 The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. parser.hpp:155:1, parser.hpp:151:1<\/p>\n<\/li>\n<li>\n<p>V523 The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. sizer_flags_list_view.cpp:125:1, sizer_flags_list_view.cpp:122:1<\/p>\n<\/li>\n<\/ul>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N13<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v517\/\">V517<\/a> The use of &#8216;if (A) {&#8230;} else if (A) {&#8230;}&#8217; pattern was detected. There is a probability of logical error presence. Check lines: 203, 213. new_quick_watch_dlg.cpp:203:1, new_quick_watch_dlg.cpp:213:1<\/p>\n<pre><code class=\"cpp\">void DisplayVariableDlg::UpdateValue(....) {   ....   wxTreeItemId item = iter->second;    if (item.IsOk())   {     ....   }   else if (item.IsOk())   {     ....   }   .... } <\/code><\/pre>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432 <em>if<\/em> \u0438 \u0432 <em>else if<\/em> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <em>item.IsOk()<\/em>. \u041c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0435\u043b\u043e \u0441 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430\u0448\u0451\u043b \u0435\u0449\u0451 2 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>V517 The use of &#8216;if (A) {&#8230;} else if (A) {&#8230;}&#8217; pattern was detected. There is a probability of logical error presence. Check lines: 53, 55. symbol_tree.cpp:53:1, symbol_tree.cpp:55:1<\/p>\n<\/li>\n<li>\n<p>V517 The use of &#8216;if (A) {&#8230;} else if (A) {&#8230;}&#8217; pattern was detected. There is a probability of logical error presence. Check lines: 82, 84. symbol_tree.cpp:82:1, symbol_tree.cpp:84:1<\/p>\n<\/li>\n<\/ul>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N14<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v614\/\">V614<\/a> Uninitialized buffer &#8216;buf&#8217; used. Consider checking the first actual argument of the &#8216;Write&#8217; function. wxSerialize.cpp:1039:1<\/p>\n<pre><code class=\"cpp\">bool wxSerialize::WriteDouble(wxFloat64 value) {   if (CanStore())   {     SaveChar(wxSERIALIZE_HDR_DOUBLE);      wxInt8 buf[10];     m_odstr.Write(buf, 10);   }    return IsOk(); } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>buf<\/em>, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c.<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>V614 Potentially uninitialized pointer &#8216;m_item&#8217; used. wxc_aui_tool_stickiness.cpp:8:1<\/p>\n<\/li>\n<li>\n<p>V614 Potentially uninitialized variable &#8216;err&#8217; used. cppcheck.cpp:175:1<\/p>\n<\/li>\n<li>\n<p>V614 The &#8216;p&#8217; smart pointer is utilized immediately after being declared or reset. It is suspicious that no value was assigned to it. connection_impl.hpp:2200:1<\/p>\n<\/li>\n<\/ul>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N15<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v728\/\">V728<\/a> An excessive check can be simplified. The &#8216;||&#8217; operator is surrounded by opposite expressions &#8216;!false&#8217; and &#8216;false&#8217;.  clDebuggerBreakpoint.cpp:26:1<\/p>\n<pre><code class=\"cpp\">clDebuggerBreakpoint::clDebuggerBreakpoint(const clDebuggerBreakpoint&amp; BI) {   ....   if (!is_windows || (is_windows &amp;&amp; !file.Contains(\"\/\")))    {     ....   }   .... } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c. \u0421\u043b\u0435\u0432\u0430 \u0438 \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 &#8216;||&#8217; \u0441\u0442\u043e\u044f\u0442 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u043e \u0441\u043c\u044b\u0441\u043b\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0414\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u043c, \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c, \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a:<\/p>\n<pre><code class=\"cpp\">if (!is_windows || !file.Contains(\"\/\")) {   .... } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430\u0448\u0451\u043b \u0435\u0449\u0451 17 \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043c\u0435\u0441\u0442, \u0432\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445:<\/p>\n<ul>\n<li>\n<p>V728 An excessive check can be simplified. The &#8216;||&#8217; operator is surrounded by opposite expressions &#8216;!matcher&#8217; and &#8216;matcher&#8217;.  ssh_account_info.cpp:108:1<\/p>\n<\/li>\n<li>\n<p>V728 An excessive check can be simplified. The &#8216;(A &amp;&amp; !B) || (!A &amp;&amp; B)&#8217; expression is equivalent to the &#8216;bool(A) != bool(B)&#8217; expression. assignedfilesmodel.cpp:310:1<\/p>\n<\/li>\n<li>\n<p>V728 An excessive check can be simplified. The &#8216;||&#8217; operator is surrounded by opposite expressions &#8216;data->m_wxcWidget->IsSizer()&#8217; and &#8216;!data->m_wxcWidget->IsSizer()&#8217;.  wxguicraft_main_view.cpp:530:1<\/p>\n<\/li>\n<\/ul>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0445\u043e\u0447\u0443 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043e\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u043e\u043f\u044b\u0442\u043a\u043e\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c PVS-Studio, \u0438 \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0446\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u0434\u0430. \u041e\u0448\u0438\u0431\u043a\u0438, \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 CodeLite, \u043f\u043e\u0434\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438 \u043c\u0435\u043d\u044f \u043a \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043d\u0430 \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430. \u0410\u0432\u0442\u043e\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0435\u0449\u0435 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<p>\u0422\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1065\">\u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c<\/a> \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio. \u0414\u043b\u044f Open Source \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043c\u044b \u0442\u0430\u043a\u0436\u0435 <a href=\"https:\/\/pvs-studio.ru\/ru\/order\/open-source-license\/\">\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c<\/a> \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e.<\/p>\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: Evgenii Feklin. <a href=\"https:\/\/pvs-studio.com\/en\/blog\/posts\/cpp\/1065\/\">PVS-Studio vs CodeLite: a battle for the perfect code<\/a>.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/757900\/\"> https:\/\/habr.com\/ru\/articles\/757900\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041a\u0430\u043a \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b? \u041e\u0434\u0438\u043d \u0438\u0437 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c, \u043a\u0430\u043a \u044d\u0442\u0430 \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 CodeLite.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h3>\u041e CodeLite<\/h3>\n<p>CodeLite \u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (IDE) \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a C, C++, PHP \u0438 JavaScript. \u041e\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0441\u043f\u0435\u043a\u0442\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 CodeLite:<\/p>\n<ul>\n<li>\n<p>\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430: CodeLite \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438 \u043c\u043e\u0449\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430, \u0430\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c, \u0431\u044b\u0441\u0442\u0440\u044b\u043c\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043b\u0430\u0434\u0447\u0438\u043a: IDE \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u043e\u0442\u043b\u0430\u0434\u0447\u0438\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0430 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0431\u043e\u0440\u043a\u0438: CodeLite \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u0441\u0442\u0435\u043c \u0441\u0431\u043e\u0440\u043a\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Make, CMake \u0438 \u0434\u0440\u0443\u0433\u0438\u0435. \u042d\u0442\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0438 \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Git: IDE \u0438\u043c\u0435\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 Git, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c\u0438 Git \u043f\u0440\u044f\u043c\u043e \u0438\u0437 \u0441\u0440\u0435\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439: CodeLite \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c IDE \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044f\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u044c: CodeLite \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c Windows, macOS \u0438 Linux, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043d\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445.<\/p>\n<\/li>\n<\/ul>\n<p>CodeLite \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438 \u0438 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0432\u043a\u043b\u0430\u0434 \u0432 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 IDE. \u041e\u043d \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043c\u043e\u0449\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c.<\/p>\n<p>\u041f\u0440\u043e\u0448\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440, \u043a\u0430\u043a \u0432 \u0431\u043b\u043e\u0433\u0435 PVS-Studio \u0431\u044b\u043b\u0430 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/0443\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u043f\u0440\u043e \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 CodeLite. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438.<\/p>\n<h3>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438<\/h3>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u043b \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 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 CodeLite \u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/github.com\/eranif\/codelite\/tree\/17.0.0\">17.0.0<\/a>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u043b\u0438 \u043c\u043e\u0451 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u0447\u0430\u0441\u0442\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439. \u0415\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u0440\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0442\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439, \u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0438\u043c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439. \u041c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439. \u0415\u0441\u043b\u0438 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0438 \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435, \u0442\u043e \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438.<\/p>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N1<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v554\/\">V554<\/a> Incorrect use of unique_ptr. The memory allocated with &#8216;new []&#8217; will be cleaned using &#8216;delete&#8217;. clSocketBase.cpp:282:1<\/p>\n<pre><code class=\"cpp\">int clSocketBase::ReadMessage(wxString&amp; message, int timeout) {   ....   size_t message_len(0);   ....   message_len = ::atoi(....);   ....   std::unique_ptr&lt;char> pBuff(new char[message_len]);   .... } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u043c\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e. \u0412 \u043a\u043e\u0434\u0435 \u0448\u0430\u0431\u043b\u043e\u043d \u043a\u043b\u0430\u0441\u0441\u0430 <em>std::unique_ptr<\/em> \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0438\u043f\u043e\u043c <em>char<\/em>. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0432 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0434\u043b\u044f \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <em>delete<\/em>. \u041e\u0434\u043d\u0430\u043a\u043e \u0443\u043c\u043d\u043e\u043c\u0443 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u0430\u0441\u0441\u0438\u0432, \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 *new[]. *\u041f\u043e\u0447\u0435\u043c\u0443 \u0432 \u0421++ \u043c\u0430\u0441\u0441\u0438\u0432\u044b \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 <em>delete[]<\/em> \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\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, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/0973\/\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/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 \u0438\u043d\u0441\u0442\u0430\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u043a\u043b\u0430\u0441\u0441\u0430 <em>std::unique_ptr<\/em> \u0442\u0438\u043f\u043e\u043c <em>char[]<\/em>:<\/p>\n<pre><code class=\"cpp\">std::unique_ptr&lt;char[]> pBuff { new char[message_len] }; <\/code><\/pre>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N2<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v762\/\">V762<\/a> It is possible a virtual function was overridden incorrectly. See third argument of function &#8216;Update&#8217; in derived class &#8216;clProgressDlg&#8217; and base class &#8216;wxGenericProgressDialog&#8217;. progress_dialog.h:47:1, progdlgg.h:44:1<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0412\u043e\u0442 \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435:<\/p>\n<pre><code class=\"cpp\">class WXDLLIMPEXP_CORE wxGenericProgressDialog : public wxDialog { public: ....      virtual bool Update(int value,                         const wxString&amp; newmsg = wxEmptyString,                         bool *skip = NULL);  .... }; <\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u043a\u0430\u043a \u0432 \u043d\u0430\u0441\u043b\u0435\u0434\u043d\u0438\u043a\u0435:<\/p>\n<pre><code class=\"cpp\">class clProgressDlg : public wxProgressDialog { public:     ....     bool Update(int value, const wxString&amp; msg);     .... }; <\/code><\/pre>\n<p>\u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>clProgressDlg::Update<\/em> \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0430 \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e <em>wxGenericProgressDialog::Update<\/em>.<\/p>\n<p>\u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u043e\u0435:<\/p>\n<pre><code class=\"cpp\">class clProgressDlg : public wxProgressDialog { public:     ....     bool Update(int value, const wxString&amp; msg, bool *skip);     .... }; <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 C++11, \u043c\u043e\u0436\u043d\u043e \u0438 \u0434\u0430\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/override\"><em>override<\/em><\/a>:<\/p>\n<pre><code class=\"cpp\">class clProgressDlg : public wxProgressDialog { public:     ....     bool Update(int value, const wxString&amp; msg, bool *skip) override;     .... }; <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0441\u0442 \u043e\u0448\u0438\u0431\u043a\u0443, \u0435\u0441\u043b\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043f\u043e\u0439\u043b\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See second argument of function &#8216;Pulse&#8217; in derived class &#8216;clProgressDlg&#8217; and base class &#8216;wxGenericProgressDialog&#8217;. progress_dialog.h:48:1, progdlgg.h:45:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See qualifiers of function &#8216;WantsErrors&#8217; in derived class &#8216;DbgVarObjUpdate&#8217; and base class &#8216;DbgCmdHandler&#8217;. dbgcmd.h:504:1, dbgcmd.h:59:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See first argument of function &#8216;OnURL&#8217; in derived class &#8216;ChangeLogPage&#8217; and base class &#8216;ChangeLogPageBase&#8217;. changelogpage.h:51:1, subversion2_ui.h:351:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See qualifiers of function &#8216;GetStatusBar&#8217; in derived class &#8216;MainFrameBase&#8217; and base class &#8216;wxFrameBase&#8217;. gui.h:161:1, frame.h:119:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See qualifiers of function &#8216;GetMenuBar&#8217; in derived class &#8216;MainFrameBase&#8217; and base class &#8216;wxFrameBase&#8217;. gui.h:162:1, frame.h:85:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See sixth argument of function &#8216;InsertPage&#8217; in derived class &#8216;clGTKNotebook&#8217; and base class &#8216;wxNotebook&#8217;. GTKNotebook.hpp:69:1, notebook.h:87:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See fifth argument of function &#8216;CreateLinkTargets&#8217; in derived class &#8216;BuilderGnuMakeOneStep&#8217; and base class &#8216;BuilderGNUMakeClassic&#8217;. builder_gnumake_onestep.h:60:1, builder_gnumake.h:75:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See sixth argument of function &#8216;CreateLinkTargets&#8217; in derived class &#8216;BuilderGnuMakeOneStep&#8217; and base class &#8216;BuilderGNUMakeClassic&#8217;. builder_gnumake_onestep.h:60:1, builder_gnumake.h:75:1<\/p>\n<\/li>\n<li>\n<p>V762 It is possible a virtual function was overridden incorrectly. See first argument of function &#8216;DeleteAllItems&#8217; in derived class &#8216;clDataViewListCtrl&#8217; and base class &#8216;clTreeCtrl&#8217;. clDataViewListCtrl.h:147:1, clTreeCtrl.h:434:1<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N3<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v595\/\">V595<\/a> The &#8216;dbgr&#8217; pointer was utilized before it was verified against nullptr. Check lines: 349, 351. simpletable.cpp:349:1, simpletable.cpp:351:1<\/p>\n<pre><code class=\"cpp\">void WatchesTable::OnCreateVariableObject(....) {   ....   if (dbgr->GetDebuggerInformation().defaultHexDisplay == true)     dbgr->SetVariableObbjectDisplayFormat(DoGetGdbId(item),                                         DBG_DF_HEXADECIMAL);    if (dbgr)     DoRefreshItem(dbgr, item, true);   .... } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u0432 \u043a\u043e\u0434\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043a\u043e\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u0443\u0436\u0435 \u0437\u0430\u0442\u0435\u043c \u044d\u0442\u043e\u0442 \u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>NULL<\/em>.<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043c\u0435\u0441\u0442\u0430:<\/p>\n<details class=\"spoiler\">\n<summary>\u0421\u043f\u043e\u0439\u043b\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>V595 The &#8216;win&#8217; pointer was utilized before it was verified against nullptr. Check lines: 1115, 1127. DiffSideBySidePanel.cpp:1115:1, DiffSideBySidePanel.cpp:1127:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;m_vsb&#8217; pointer was utilized before it was verified against nullptr. Check lines: 212, 224. clScrolledPanel.cpp:212:1, clScrolledPanel.cpp:224:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;ms_instance&#8217; pointer was utilized before it was verified against nullptr. Check lines: 24, 25. php_parser_thread.cpp:24:1, php_parser_thread.cpp:25:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;tok&#8217; pointer was utilized before it was verified against nullptr. Check lines: 2070, 2094. checkmemoryleak.cpp:2070:1, checkmemoryleak.cpp:2094:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;parent&#8217; pointer was utilized before it was verified against nullptr. Check lines: 1006, 1008. checkuninitvar.cpp:1006:1, checkuninitvar.cpp:1008:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;tok1&#8217; pointer was utilized before it was verified against nullptr. Check lines: 9368, 9369. tokenize.cpp:9368:1, tokenize.cpp:9369:1<\/p>\n<\/li>\n<li>\n<p>V595 The &#8216;pResult&#8217; pointer was utilized before it was verified against nullptr. Check lines: 522, 526. SqliteDatabaseLayer.cpp:522:1, SqliteDatabaseLayer.cpp:526:1<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N4<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v766\/\">V766<\/a> An item with the same key &#187;.&#187; has already been added. wxCodeCompletionBoxManager.cpp:19:1<\/p>\n<pre><code class=\"cpp\">std::unordered_set&lt;wxChar> delimiters =   { ':', '@', '.', '!', ' ', '\\t', '.', '\\\\',      '+', '*', '-', '&lt;', '>', '[', ']', '(',      ')', '{', '}',  '=', '%', '#', '^', '&amp;',      '\\'', '\"', '\/', '|',  ',', '~', ';', '`' }; <\/code><\/pre>\n<p>\u0412\u0438\u0434\u0438\u0442\u0435 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u043b\u0430\u0434\u043d\u043e\u0435? \u0418\u0437-\u0437\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u043a\u0430\u0432\u044b\u0447\u0435\u043a \u0433\u043b\u0430\u0437 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b <em>&#8216;.&#8217;<\/em>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b. \u041b\u0438\u0431\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442, \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0440\u0430\u0442\u044c.<\/p>\n<p>\u0415\u0449\u0435 1 \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043c\u0435\u0441\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>V766 An item with the same key &#8216;&#187;MSYS2\/GCC&#187;&#8216; has already been added. compiler.cpp:621:1, compiler.cpp:620:1<\/p>\n<\/li>\n<\/ul>\n<h4>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 N5<\/h4>\n<p>\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: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v501\/\">V501<\/a> There are identical sub-expressions &#8216;result.second.empty()&#8217; to the left and to the right of the &#8216;||&#8217; operator. RemotyNewWorkspaceDlg.cpp:19:1<\/p>\n<pre><code class=\"cpp\">void RemotyNewWorkspaceDlg::OnBrowse(wxCommandEvent&amp; event) {   auto result = ::clRemoteFileSelector(_(\"Seelct a folder\"));   if (result.second.empty() ||<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-353583","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/353583","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=353583"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/353583\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=353583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=353583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=353583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}