{"id":399365,"date":"2024-06-29T14:38:22","date_gmt":"2024-06-29T14:38:22","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=399365"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=399365","title":{"rendered":"<span>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Chromium \u0441\u043f\u0443\u0441\u0442\u044f \u0442\u0440\u0438 \u0433\u043e\u0434\u0430. \u041d\u0443 \u0438 \u043a\u0430\u043a \u043e\u043d\u043e?<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0421\u0442\u0440\u044f\u0445\u0438\u0432\u0430\u0435\u043c \u043f\u044b\u043b\u044c \u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u0435\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Chromium. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043e\u0431\u0441\u0442\u043e\u044f\u0442 \u0434\u0435\u043b\u0430 \u0441 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043a\u043e\u0434\u0430 \u0432 \u0441\u0432\u0435\u0436\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0432 \u0434\u0435\u043b\u0435 \u043d\u043e\u0432\u0435\u0439\u0448\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/d7b\/12d\/b5d\/d7b12db5d5e74aca43a9172228952cb1.png\" alt=\"chromium_N7_ru\/image2.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d7b\/12d\/b5d\/d7b12db5d5e74aca43a9172228952cb1.png\"\/><\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h2 id=\"vvedenie\">\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>Chromium \u2013 \u044d\u0442\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u0418\u043d\u043e\u0433\u0434\u0430 \u0435\u0433\u043e \u0435\u0449\u0451 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u043c \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u0412 \u043d\u0451\u043c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u0430\u043c\u044b\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0431-\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u0420\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Google \u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c Chromium. <a href=\"https:\/\/chromium.googlesource.com\/chromium\/src\">\u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439<\/a>.<\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u043c\u043d\u044f\u0442, \u043d\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u0436\u0435 \u0441\u0435\u0434\u044c\u043c\u043e\u0439 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 Chromium. \u0421 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u0438 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f? \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u2013 \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u0438 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u043e\u043c \u043a \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443 \u043a\u043e\u0434\u0430. \u041a\u0430\u043a \u0440\u0430\u0437 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043b\u0430 \u043f\u043b\u0430\u043d \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 Chromium\/Chrome. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/580762\/\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435, \u0434\u0443\u043c\u0430\u044e, \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043b\u0438\u0448\u043d\u0438\u043c \u0434\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u0435\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430:<\/p>\n<p>  <\/p>\n<ol>\n<li><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/cpp\/a0074\/\">PVS-Studio vs Chromium<\/a> (\u041c\u0430\u0439 2011)<\/li>\n<li><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/cpp\/0113\/\">PVS-Studio vs Chromium \u2013 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435<\/a> (\u041e\u043a\u0442\u044f\u0431\u0440\u044c 2011)<\/li>\n<li><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/cpp\/0205\/\">\u0422\u0440\u0435\u0442\u044c\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Chromium \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio<\/a> (\u0410\u0432\u0433\u0443\u0441\u0442 2013)<\/li>\n<li><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/cpp\/0225\/\">\u041a\u0430\u043a \u043c\u044b \u043f\u044b\u0442\u0430\u0435\u043c\u0441\u044f \u043f\u0440\u043e\u0434\u0430\u0442\u044c PVS-Studio \u0432 Google \u0438\u043b\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 Chromium<\/a> (\u0414\u0435\u043a\u0430\u0431\u0440\u044c 2013)<\/li>\n<li><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/cpp\/0442\/\">\u0418\u0434\u0451\u043c \u043d\u0430 \u0440\u0435\u043a\u043e\u0440\u0434: \u043f\u044f\u0442\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Chromium<\/a> (\u041e\u043a\u0442\u044f\u0431\u0440\u044c 2016)<\/li>\n<li><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/cpp\/0552\/\">Chromium: \u0448\u0435\u0441\u0442\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 250 \u0431\u0430\u0433\u043e\u0432<\/a> (\u042f\u043d\u0432\u0430\u0440\u044c 2018)<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u0447\u0442\u0438 \u0442\u0440\u0438 \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434. Chromium \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u043b\u0441\u044f, \u043d\u043e \u0438 PVS-Studio \u043d\u0435 \u0441\u0442\u043e\u044f\u043b \u043d\u0430 \u043c\u0435\u0441\u0442\u0435. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432 \u0434\u0435\u043b\u0435 \u043e\u0434\u043d\u043e \u0438\u0437 \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u2013 \u043c\u0435\u0436\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0439\u0434\u0451\u043c\u0441\u044f \u043f\u043e \u043e\u0448\u0438\u0431\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043c\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438.<\/p>\n<p>  <\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043e \u043c\u0435\u0436\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0435. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b, \u0442\u043e \u044d\u0442\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u0445 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u0443\u0437\u043d\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043d\u0430 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044d\u0442\u0430 &#171;\u043c\u0430\u0433\u0438\u044f&#187; \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u2013 &#171;<a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/572304\/\">\u041c\u0435\u0436\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 C++ \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 PVS-Studio<\/a>&#171;. \u041d\u0443 \u0430 \u044f \u043d\u0435 \u0432\u0438\u0436\u0443 \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u0435\u0440\u0435\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0447\u0443\u0436\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e, \u0432\u0435\u0434\u044c \u0438 \u0432 \u044d\u0442\u043e\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \ud83d\ude42<\/p>\n<p>  <\/p>\n<h2 id=\"kak-proveryali\">\u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438<\/h2>\n<p>  <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u043d\u0430 Windows \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 &#171;C and C++ Compiler Monitoring UI&#187;. \u041a\u0440\u0430\u0442\u043a\u043e \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043e\u043d \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0442\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0443\u0436\u0435 \u043f\u043e \u0435\u0451 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u0441\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b. \u0414\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Standalone, \u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/\">\u0432 \u043d\u0430\u0448\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u0434\u043e \u0441\u0430\u043c\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u2013 \u043e\u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0431\u043b\u0430\u0433\u043e <a href=\"https:\/\/chromium.googlesource.com\/chromium\/src\/+\/refs\/heads\/main\/docs\/windows_build_instructions.md\">\u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435<\/a> \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f.<\/p>\n<p>  <\/p>\n<p>\u041d\u0443 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u0434 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0432\u0441\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043e\u0442\u043d\u043e\u0441\u044f\u0442\u0441\u044f \u043a \u044d\u0442\u043e\u043c\u0443 <a href=\"https:\/\/source.chromium.org\/chromium\/chromium\/src\/+\/009194036844bd47216b62ce1344764ab8511796:\">\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e<\/a> \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f;<\/li>\n<li>\u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0431\u044b\u043b\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 \u043f\u0430\u043f\u043a\u0430\u0445 <em>src\/buildtools<\/em> \u0438 <em>src\/third_party<\/em>, \u0442. \u043a. \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u044b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430. \u041e\u0434\u0438\u043d \u0438\u0437 \u0442\u0430\u043a\u0438\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043b \u043c\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u2013 &#171;<a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/587486\/\">\u0411\u0440\u0443\u0442\u0430\u043b\u044c\u043d\u044b\u0439 Protocol Buffers \u043e\u0442 Google vs \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430<\/a>&#171;.<\/li>\n<li>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435, \u043c\u043e\u0433\u0443\u0442 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0435\u0445, \u0447\u0442\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438, \u0430 \u0433\u0434\u0435-\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0443 \u0430 \u0442\u0435\u043f\u0435\u0440\u044c, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u0441\u0432\u0435\u0436\u0435\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 Chromium.<\/p>\n<p>  <\/p>\n<h2 id=\"oshibki-v-rabote-s-ukazatelyami\">\u041e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438<\/h2>\n<p>  <\/p>\n<p>\u0418 \u043d\u0430\u0447\u043d\u0451\u043c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0440\u0430\u0437\u0443 \u0441 \u043e\u0448\u0438\u0431\u043e\u043a, \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0436\u043c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430. \u0418\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430\u0434 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432.<\/p>\n<p>  <\/p>\n<h3 id=\"sluchay-n1\">\u0421\u043b\u0443\u0447\u0430\u0439 N1<\/h3>\n<p>  <\/p>\n<p>V595 The &#8216;client_&#8217; pointer was utilized before it was verified against nullptr. Check lines: &#8216;password_manager_util.cc:119&#8217;, &#8216;password_manager.cc:1216&#8217;, &#8216;password_manager.cc:1218&#8217;. password_manager.cc 1216<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/ File: src\\components\\password_manager\\core\\browser\\password_manager_util.cc bool IsLoggingActive(const password_manager::PasswordManagerClient* client) {   const autofill::LogManager* log_manager = client->GetLogManager();   return log_manager &amp;&amp; log_manager->IsLoggingActive(); }  \/\/ File: src\\components\\password_manager\\core\\browser\\password_manager.cc void PasswordManager::RecordProvisionalSaveFailure(     PasswordManagerMetricsRecorder::ProvisionalSaveFailure failure,     const GURL&amp; form_origin)    {   std::unique_ptr&lt;BrowserSavePasswordProgressLogger> logger;   if (password_manager_util::IsLoggingActive(client_)) {            \/\/ &lt;=     logger = std::make_unique&lt;BrowserSavePasswordProgressLogger>(         client_->GetLogManager());   }   if (client_ &amp;&amp; client_->GetMetricsRecorder()) {                   \/\/ &lt;=     ....   } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>IsLoggingActive<\/em>, \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0442\u043e\u043c \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442. \u0410 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c \u044d\u0442\u043e\u0442 \u0432\u044b\u0437\u043e\u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u043e\u0434 \u0447\u0443\u0442\u044c \u043d\u0438\u0436\u0435, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \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 \u2013 \u0438 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f.<\/p>\n<p>  <\/p>\n<h3 id=\"sluchay-n2\">\u0421\u043b\u0443\u0447\u0430\u0439 N2<\/h3>\n<p>  <\/p>\n<p>V595 The &#8216;parent&#8217; pointer was utilized before it was verified against nullptr. Check lines: &#8216;visibility_controller.cc:95&#8217;, &#8216;native_web_contents_modal_dialog_manager_views.cc:72&#8217;, &#8216;native_web_contents_modal_dialog_manager_views.cc:75&#8217;. native_web_contents_modal_dialog_manager_views.cc 72<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/ File: src\\ui\\wm\\core\\visibility_controller.cc void SetChildWindowVisibilityChangesAnimated(aura::Window* window) {   window->SetProperty(kChildWindowVisibilityChangesAnimatedKey, true); }  \/\/ File: src\\components\\constrained_window \/\/       \\native_web_contents_modal_dialog_manager_views.cc void NativeWebContentsModalDialogManagerViews::ManageDialog() {   views::Widget* widget = GetWidget(dialog());   .... #if defined(USE_AURA)   ....   gfx::NativeView parent = widget->GetNativeView()->parent();   wm::SetChildWindowVisibilityChangesAnimated(parent);   ....   if (parent &amp;&amp; parent->parent())   {     parent->parent()->SetProperty(aura::client::kAnimationsDisabledKey, true);   }   .... #endif }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043e\u0434\u0438\u043d \u0432 \u043e\u0434\u0438\u043d, \u043a\u0430\u043a \u0438 \u0432\u044b\u0448\u0435: \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0438 \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0433\u0434\u0435 \u0432\u043d\u043e\u0432\u044c \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u0422\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0430 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c <em>parent<\/em> \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u044b\u043c, \u0442\u043e \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0438\u0436\u0435? \u041e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e, \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c.<\/p>\n<p>  <\/p>\n<h3 id=\"sluchay-n3\">\u0421\u043b\u0443\u0447\u0430\u0439 N3<\/h3>\n<p>  <\/p>\n<p>V522 Instantiation of WasmFullDecoder &lt; Decoder::kFullValidation, WasmGraphBuildingInterface >: Dereferencing of the null pointer &#8216;result&#8217; might take place. The null pointer is passed into &#8216;UnOp&#8217; function. Inspect the fourth argument. Check lines: &#8216;graph-builder-interface.cc:349&#8217;, &#8216;function-body-decoder-impl.h:5372&#8217;. graph-builder-interface.cc 349<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/ File: src\\v8\\src\\wasm\\graph-builder-interface.cc void UnOp(FullDecoder* decoder, WasmOpcode opcode,           const Value&amp; value, Value* result) {   result->node = builder_->Unop(opcode, value.node, decoder->position()); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f <em>result<\/em> \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>UnOp<\/em>. \u0421\u0430\u043c \u0432\u044b\u0437\u043e\u0432 <em>UnOp<\/em> \u0441 <em>nullptr<\/em> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u0434\u0435, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u043d\u0438\u0436\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/ File: src\\v8\\src\\wasm\\function-body-decoder-impl.h int BuildSimpleOperator(WasmOpcode opcode, ValueType return_type,                         ValueType arg_type) {   Value val = Peek(0, 0, arg_type);   if (return_type == kWasmVoid)   {     CALL_INTERFACE_IF_OK_AND_REACHABLE(UnOp, opcode, val, nullptr);  \/\/ &lt;=     Drop(val);   }   .... }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0434\u0443\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u043c\u0430\u043a\u0440\u043e\u0441 CALL_INTERFACE_IF_OK_AND_REACHABLE \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u043e\u0441\u043e\u0431\u0443\u044e \u043c\u0430\u0433\u0438\u044e \u0441 \u043d\u0430\u0448\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c, \u0442\u043e \u0431\u043e\u044e\u0441\u044c \u0432\u0430\u0441 \u043e\u0433\u043e\u0440\u0447\u0438\u0442\u044c. \u0415\u0433\u043e \u043c\u0430\u0433\u0438\u044f \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \ud83d\ude42 \u0415\u0441\u043b\u0438 \u043d\u0435 \u0432\u0435\u0440\u0438\u0442\u0435 \u043c\u043d\u0435, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u043f\u043e <a href=\"https:\/\/source.chromium.org\/chromium\/chromium\/src\/+\/main:v8\/src\/wasm\/function-body-decoder-impl.h;l=2206;drc=5539ecff898c79b0771340051d62bf81649e448d\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<p>  <\/p>\n<h3 id=\"sluchay-n4\">\u0421\u043b\u0443\u0447\u0430\u0439 N4<\/h3>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/763\/1a8\/7dc\/7631a87dcf704467f85743a2aa3e4cdc.png\" alt=\"chromium_N7_ru\/image3.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/763\/1a8\/7dc\/7631a87dcf704467f85743a2aa3e4cdc.png\"\/><\/p>\n<p>  <\/p>\n<p>V522 Dereferencing of the null pointer might take place. The null pointer is passed into &#8216;NaClTlsSetCurrentThread&#8217; function. Inspect the first argument. Check lines: &#8216;nacl_tls_64.c:285&#8217;, &#8216;nacl_app_thread.c:161&#8217;. nacl_tls_64.c 285<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">\/\/ File: src\\native_client\\src\\trusted\\service_runtime\\arch\\x86_64\\nacl_tls_64.c void NaClTlsSetCurrentThread(struct NaClAppThread *natp) {   nacl_current_thread = &amp;natp->user; }  \/\/ File: src\\native_client\\src\\trusted\\service_runtime\\nacl_app_thread.c void NaClAppThreadTeardown(struct NaClAppThread *natp) {   ....   \/*   * Unset the TLS variable so that if a crash occurs during thread   * teardown, the signal handler does not dereference a dangling   * NaClAppThread pointer.   *\/   NaClTlsSetCurrentThread(NULL);   .... }<\/code><\/pre>\n<p>  <\/p>\n<p>\u042f\u0432\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441 \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0421\u0443\u0434\u044f \u043f\u043e \u0440\u044f\u0434\u043e\u043c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044e, <em>NULL<\/em> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u0432\u043e\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0430\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>NaClTlsSetCurrentThread,<\/em> \u044f\u0432\u043d\u043e \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. \u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u043a \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u0430 \u043d\u0435 \u043f\u0430\u0434\u0435\u043d\u0438\u044e? \u042d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b \u043c\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/250701\/\">\u0420\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\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<\/a>&#171;. \u041d\u0435 \u0432\u0438\u0436\u0443 \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f, \u0442.\u043a. \u0441\u0442\u0430\u0442\u044c\u044f \u0442\u0430\u043c \u0432\u044b\u0448\u043b\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<h2 id=\"opechatki\">\u041e\u043f\u0435\u0447\u0430\u0442\u043a\u0438<\/h2>\n<p>  <\/p>\n<h3 id=\"sluchay-n5\">\u0421\u043b\u0443\u0447\u0430\u0439 N5<\/h3>\n<p>  <\/p>\n<p>V533 It is likely that a wrong variable is being incremented inside the &#8216;for&#8217; operator. Consider reviewing &#8216;it&#8217;. tree_synchronizer.cc 143<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">template &lt;typename Iterator> static void PushLayerPropertiesInternal(Iterator source_layers_begin,                                         Iterator source_layers_end,                                         LayerTreeHost* host_tree,                                         LayerTreeImpl* target_impl_tree)  {   for (Iterator it = source_layers_begin; it != source_layers_end; ++it)    {     auto* source_layer = *it;     ....     if (!target_layer) {       bool host_set_on_source =         source_layer->layer_tree_host() == host_tree;        bool source_found_by_iterator = false;       for (auto host_tree_it = host_tree->begin();            host_tree_it != host_tree->end(); ++it)    \/\/ &lt;=       {         if (*host_tree_it == source_layer)          {           source_found_by_iterator = true;           break;         }       }       ....     }     ....   } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0425\u043c\u2026 \u0412\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0442\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0446\u0438\u043a\u043b\u0430\u2026 \u0413\u0434\u0435-\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430&#8230;<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/430\/612\/3f5\/4306123f5c455cf924fcfc74c7365e15.png\" alt=\"chromium_N7_ru\/image4.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/430\/612\/3f5\/4306123f5c455cf924fcfc74c7365e15.png\"\/><\/p>\n<p>  <\/p>\n<h3 id=\"sluchay-n6\">\u0421\u043b\u0443\u0447\u0430\u0439 N6<\/h3>\n<p>  <\/p>\n<p>V501 There are identical sub-expressions &#8216;user_blocking_count_ == 0&#8217; to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. process_priority_aggregator.cc 98<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">bool ProcessPriorityAggregator::Data::IsEmpty() const { #if DCHECK_IS_ON()   if (lowest_count_)     return false; #endif   return user_blocking_count_ == 0 &amp;&amp; user_blocking_count_ == 0; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043d\u0443\u043b\u044e. \u0421\u0442\u0440\u0430\u043d\u043d\u043e, \u0434\u0430? \u0414\u0443\u043c\u0430\u044e, \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0441, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">class ProcessPriorityAggregator::Data  {   .... private:   .... #if DCHECK_IS_ON()   ....   uint32_t lowest_count_ = 0; #endif   uint32_t user_visible_count_ = 0;   uint32_t user_blocking_count_ = 0; };<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0443 \u0432\u043e\u0442, \u0432\u0441\u0451 \u0432\u0441\u0442\u0430\u043b\u043e \u043d\u0430 \u0441\u0432\u043e\u0438 \u043c\u0435\u0441\u0442\u0430. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>user_visible_count<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 <em>user_blocking_count<\/em>:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">return user_blocking_count_ == 0 &amp;&amp; user_visible_count_ == 0;<\/code><\/pre>\n<p>  <\/p>\n<h2 id=\"nepravilnaya-rabota-s-tipami\">\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0442\u0438\u043f\u0430\u043c\u0438<\/h2>\n<p>  <\/p>\n<h3 id=\"sluchay-n7\">\u0421\u043b\u0443\u0447\u0430\u0439 N7<\/h3>\n<p>  <\/p>\n<p>V554 Incorrect use of unique_ptr. The memory allocated with &#8216;new []&#8217; will be cleaned using &#8216;delete&#8217;. builtins-trace.cc 64<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">class MaybeUtf8 {   ....   private:      void AllocateSufficientSpace(int len)     {       if (len + 1 > MAX_STACK_LENGTH)       {         allocated_.reset(new uint8_t[len + 1]);  \/\/ &lt;=         buf_ = allocated_.get();       }     }      ....     std::unique_ptr&lt;uint8_t> allocated_;         \/\/ &lt;= }<\/code><\/pre>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/c03\/4ae\/f80\/c034aef80ea23aaba0e91683f0e31ccc.png\" alt=\"chromium_N7_ru\/image5.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c03\/4ae\/f80\/c034aef80ea23aaba0e91683f0e31ccc.png\"\/><\/p>\n<p>  <\/p>\n<p>\u0427\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442\u0435, \u0447\u0435\u043c \u043f\u0430\u0445\u043d\u0435\u0442? \u0414\u0430 \u044d\u0442\u043e \u0436\u0435 \u0443\u0442\u0435\u0447\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u043b\u0430\u043a\u043e\u043d\u0435. \u0413\u0434\u0435? \u0410 \u0432 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0438 <em>unique_ptr<\/em>! \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u0443\u043c\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 <em>uint8_t<\/em>, \u0430 \u0432\u044b\u0448\u0435 \u0432 \u043d\u0435\u0433\u043e \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043c\u0430\u043b\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0438\u0449\u0435\u043d\u0430 \u043f\u0430\u043c\u044f\u0442\u044c, \u0437\u0430\u043d\u044f\u0442\u0430\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u0442\u0430\u043a \u0435\u0449\u0451 \u0438 \u0432\u044b\u0437\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <em>delete<\/em> \u0432\u043c\u0435\u0441\u0442\u043e <em>delete[]<\/em> \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/terms\/0066\/\">\u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e<\/a>!<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430\u0434\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u043c\u043d\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0442\u0430\u043a\u0443\u044e:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">std::unique_ptr&lt;uint8_t[]> allocated_;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u0435\u0442\u0435\u0441\u044c \u0432 \u043c\u043e\u0438\u0445 \u0441\u043b\u043e\u0432\u0430\u0445, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, draft \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u0421++ 20 <a href=\"https:\/\/timsong-cpp.github.io\/cppwp\/n4868\/expr.delete\">\u043f\u0443\u043d\u043a\u0442 7.6.2.9.2<\/a> (<a href=\"http:\/\/open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2020\/n4868.pdf\">PDF<\/a>) \u0438\u043b\u0438 \u043c\u043e\u0439 \u043b\u044e\u0431\u0438\u043c\u044b\u0439 <a href=\"https:\/\/en.cppreference.com\/w\/\">cppreference.com<\/a> \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 &#171;<a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/delete\">delete expression<\/a>&#171;.<\/p>\n<p>  <\/p>\n<h2 id=\"lyubimye-sravneniya\">\u041b\u044e\u0431\u0438\u043c\u044b\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/h2>\n<p>  <\/p>\n<h3 id=\"sluchay-n8\">\u0421\u043b\u0443\u0447\u0430\u0439 N8<\/h3>\n<p>  <\/p>\n<p>V501 There are identical sub-expressions &#8216;file.MatchesExtension(L&#187;.xlsb&#187;)&#8217; to the left and to the right of the &#8216;||&#8217; operator. download_type_util.cc 60<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">ClientDownloadRequest::DownloadType GetDownloadType(const base::FilePath&amp; file) {   ....   if (file.MatchesExtension(FILE_PATH_LITERAL(\".apk\")))     return ClientDownloadRequest::ANDROID_APK;   ....   else if (file.MatchesExtension(FILE_PATH_LITERAL(\".pdf\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".doc\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".docx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".docm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".docb\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".dot\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".dotm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".dotx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xls\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlsb\")) ||    \/\/ &lt;=            file.MatchesExtension(FILE_PATH_LITERAL(\".xlt\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlsx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xldm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xltx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xltm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlsb\")) ||    \/\/ &lt;=            file.MatchesExtension(FILE_PATH_LITERAL(\".xla\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlam\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xll\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlw\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".ppt\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".pot\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".pps\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".pptx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".pptm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".potx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".potm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".ppam\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".ppsx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".ppsm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".sldx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xldm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".rtf\")))     return ClientDownloadRequest::DOCUMENT;   .... }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0435 \u0440\u0430\u0437 \u0441\u043b\u044b\u0448\u0430\u043b \u043c\u043d\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u043e\u0442 \u043e\u0448\u0438\u0431\u043e\u043a \u0441 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u0438 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438. \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u0437\u0430\u043f\u0438\u0441\u0438. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043a\u043e\u0434\u0435 \u043d\u0438\u0436\u0435 (\u0434\u0430, \u043e\u043d\u0430 \u0442\u0430\u043c \u043d\u0435 \u043e\u0434\u043d\u0430). \u042f \u0434\u0430\u0436\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0443\u0431\u0435\u0440\u0443 \u043c\u0430\u0440\u043a\u0435\u0440\u044b \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">ClientDownloadRequest::DownloadType GetDownloadType(const base::FilePath&amp; file) {   ....   if (file.MatchesExtension(FILE_PATH_LITERAL(\".apk\")))     return ClientDownloadRequest::ANDROID_APK;   ....   else if (file.MatchesExtension(FILE_PATH_LITERAL(\".doc\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".docb\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".docm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".docx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".dot\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".dotm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".dotx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".pdf\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".pot\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".potm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".potx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".ppam\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".pps\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".ppsm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".ppsx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".ppt\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".pptm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".pptx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".rtf\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".sldx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xla\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlam\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xldm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xldm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xll\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlm\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xls\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlsb\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlsb\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlsx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlt\"))  ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xltm\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xltx\")) ||            file.MatchesExtension(FILE_PATH_LITERAL(\".xlw\")))     return ClientDownloadRequest::DOCUMENT;   .... }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"sluchay-n9\">\u0421\u043b\u0443\u0447\u0430\u0439 N9<\/h3>\n<p>  <\/p>\n<p>V501 There are identical sub-expressions to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. password_form.cc 265<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">bool operator==(const PasswordForm&amp; lhs, const PasswordForm&amp; rhs) {   return lhs.scheme == rhs.scheme &amp;&amp; lhs.signon_realm == rhs.signon_realm &amp;&amp;          lhs.url == rhs.url &amp;&amp; lhs.action == rhs.action &amp;&amp;          lhs.submit_element == rhs.submit_element &amp;&amp;          lhs.username_element == rhs.username_element &amp;&amp;          lhs.username_element_renderer_id == rhs.username_element_renderer_id &amp;&amp;          lhs.username_value == rhs.username_value &amp;&amp;          lhs.all_possible_usernames == rhs.all_possible_usernames &amp;&amp;          lhs.all_possible_passwords == rhs.all_possible_passwords &amp;&amp;          lhs.form_has_autofilled_value == rhs.form_has_autofilled_value &amp;&amp;          lhs.password_element == rhs.password_element &amp;&amp;          lhs.password_element_renderer_id == rhs.password_element_renderer_id &amp;&amp;          lhs.password_value == rhs.password_value &amp;&amp;          lhs.new_password_element == rhs.new_password_element &amp;&amp;          lhs.confirmation_password_element_renderer_id ==                \/\/ &lt;=              rhs.confirmation_password_element_renderer_id &amp;&amp;            \/\/ &lt;=          lhs.confirmation_password_element ==              rhs.confirmation_password_element &amp;&amp;          lhs.confirmation_password_element_renderer_id ==                \/\/ &lt;=              rhs.confirmation_password_element_renderer_id &amp;&amp;            \/\/ &lt;=          lhs.new_password_value == rhs.new_password_value &amp;&amp;          lhs.date_created == rhs.date_created &amp;&amp;          lhs.date_last_used == rhs.date_last_used &amp;&amp;          lhs.date_password_modified == rhs.date_password_modified &amp;&amp;          lhs.blocked_by_user == rhs.blocked_by_user &amp;&amp; lhs.type == rhs.type &amp;&amp;          lhs.times_used == rhs.times_used &amp;&amp;          lhs.form_data.SameFormAs(rhs.form_data) &amp;&amp;          lhs.generation_upload_status == rhs.generation_upload_status &amp;&amp;          lhs.display_name == rhs.display_name &amp;&amp; lhs.icon_url == rhs.icon_url &amp;&amp;          \/\/ We compare the serialization of the origins here, as we want unique          \/\/ origins to compare as '=='.          lhs.federation_origin.Serialize() ==              rhs.federation_origin.Serialize() &amp;&amp;          lhs.skip_zero_click == rhs.skip_zero_click &amp;&amp;          lhs.was_parsed_using_autofill_predictions ==              rhs.was_parsed_using_autofill_predictions &amp;&amp;          lhs.is_public_suffix_match == rhs.is_public_suffix_match &amp;&amp;          lhs.is_affiliation_based_match == rhs.is_affiliation_based_match &amp;&amp;          lhs.affiliated_web_realm == rhs.affiliated_web_realm &amp;&amp;          lhs.app_display_name == rhs.app_display_name &amp;&amp;          lhs.app_icon_url == rhs.app_icon_url &amp;&amp;          lhs.submission_event == rhs.submission_event &amp;&amp;          lhs.only_for_fallback == rhs.only_for_fallback &amp;&amp;          lhs.is_new_password_reliable == rhs.is_new_password_reliable &amp;&amp;          lhs.in_store == rhs.in_store &amp;&amp;          lhs.moving_blocked_for_list == rhs.moving_blocked_for_list &amp;&amp;          lhs.password_issues == rhs.password_issues; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0441\u043e\u0432\u0435\u0442 \u043f\u0440\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u0443\u043c\u0435\u0441\u0442\u0435\u043d \ud83d\ude42 \u0417\u0434\u0435\u0441\u044c \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433. \u041a\u0441\u0442\u0430\u0442\u0438, \u043f\u0443\u0442\u0451\u043c \u043d\u0435\u0445\u0438\u0442\u0440\u044b\u0445 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u0438 Python \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u043e\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<p>  <\/p>\n<ul>\n<li>accepts_webauthn_credentials<\/li>\n<li>new_password_element_renderer_id<\/li>\n<li>server_side_classification_successful<\/li>\n<li>encrypted_password<\/li>\n<li>username_may_use_prefilled_placeholder<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0441\u0442\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043d\u0430 \u0441\u0443\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c. \u0410 \u044f \u0442\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0445\u043e\u0447\u0443 \u043f\u043e\u0441\u043e\u0432\u0435\u0442\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u043c\u043e\u0435\u0433\u043e \u043a\u043e\u043b\u043b\u0435\u0433\u0438 \u0441 \u0440\u0430\u0437\u0431\u043e\u0440\u043e\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u0445 \u0431\u043e\u0440\u044c\u0431\u044b \u0441 \u043d\u0438\u043c\u0438 \u2013 &#171;<a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/cpp\/0509\/\">\u0417\u043b\u043e \u0436\u0438\u0432\u0451\u0442 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/a>&#171;.<\/p>\n<p>  <\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0441\u043f\u0438\u0441\u043a\u043e\u043c, \u0442. \u043a. \u0438\u0445 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li>V501 There are identical sub-expressions &#8216;card.record_type() == CreditCard::VIRTUAL_CARD&#8217; to the left and to the right of the &#8216;||&#8217; operator. full_card_request.cc 107<\/li>\n<li>V501 There are identical sub-expressions &#8216;!event->target()&#8217; to the left and to the right of the &#8216;||&#8217; operator. accelerator_filter.cc 28<\/li>\n<li>V501 There are identical sub-expressions &#8216;generation_id->empty()&#8217; to the left and to the right of the &#8216;||&#8217; operator. record_handler_impl.cc 393<\/li>\n<li>V501 There are identical sub-expressions &#8216;JSStoreNamedNode::ObjectIndex() == 0&#8217; to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. js-native-context-specialization.cc 1102<\/li>\n<li>V501 There are identical sub-expressions &#8216;num_previous_succeeded_connections_ == 0&#8217; to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. websocket_throttler.cc 63<\/li>\n<\/ul>\n<p>  <\/p>\n<h2 id=\"always-truefalse\">Always true\/false<\/h2>\n<p>  <\/p>\n<h3 id=\"sluchay-n10\">\u0421\u043b\u0443\u0447\u0430\u0439 N10<\/h3>\n<p>  <\/p>\n<p>V616 The &#8216;extensions::Extension::NO_FLAGS&#8217; named constant with the value of 0 is used in the bitwise operation. extensions_internals_source.cc 98<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">base::Value CreationFlagsToList(int creation_flags) {   base::Value flags_value(base::Value::Type::LIST);   if (creation_flags &amp; extensions::Extension::NO_FLAGS)  \/\/ &lt;=     flags_value.Append(\"NO_FLAGS\");   if (creation_flags &amp; extensions::Extension::REQUIRE_KEY)     flags_value.Append(\"REQUIRE_KEY\");   if (creation_flags &amp; extensions::Extension::REQUIRE_MODERN_MANIFEST_VERSION)     flags_value.Append(\"REQUIRE_MODERN_MANIFEST_VERSION\");   if (creation_flags &amp; extensions::Extension::ALLOW_FILE_ACCESS)     flags_value.Append(\"ALLOW_FILE_ACCESS\");   ....   return flags_value; }  \/\/ File: src\\extensions\\common\\extension.h enum InitFromValueFlags {   NO_FLAGS = 0,   REQUIRE_KEY = 1 &lt;&lt; 0,   REQUIRE_MODERN_MANIFEST_VERSION = 1 &lt;&lt; 1,   ALLOW_FILE_ACCESS = 1 &lt;&lt; 2,   .... };<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0448\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u0412 \u043d\u0451\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 <em>extensions::Extension::NO_FLAGS<\/em>, \u043d\u043e \u043e\u043d\u043e \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u043e\u043b\u044c, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u043b\u043e\u0436\u044c, \u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f. <\/p>\n<p>  <\/p>\n<p>\u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \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 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">creation_flags == extensions::Extension::NO_FLAGS<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"sluchay-n11\">\u0421\u043b\u0443\u0447\u0430\u0439 N11<\/h3>\n<p>  <\/p>\n<p>V547 Expression &#8216;entry_size > 0&#8217; is always true. objects-printer.cc 1195<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void FeedbackVector::FeedbackVectorPrint(std::ostream&amp; os) {   ....   FeedbackMetadataIterator iter(metadata());   while (iter.HasNext()) {     ....     int entry_size = iter.entry_size();     if (entry_size > 0) os &lt;&lt; \" {\";         \/\/ &lt;=     for (int i = 0; i &lt; entry_size; i++)     {       ....     }     if (entry_size > 0) os &lt;&lt; \"\\n  }\";      \/\/ &lt;=   }   os &lt;&lt; \"\\n\"; }  int FeedbackMetadataIterator::entry_size() const {   return FeedbackMetadata::GetSlotSize(kind()); }  int FeedbackMetadata::GetSlotSize(FeedbackSlotKind kind) {   switch (kind) {     case FeedbackSlotKind::kForIn:     ....       return 1;      case FeedbackSlotKind::kCall:     ....       return 2;      case FeedbackSlotKind::kInvalid:     ....       UNREACHABLE();   }   return 1; }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0443 \u0438 \u043d\u0430 \u0437\u0430\u043a\u0443\u0441\u043a\u0443, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 DataFlow.<\/p>\n<p>  <\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043d\u0430\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>entry_size<\/em> \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u043e\u043b\u044f, \u0430 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043a\u043e\u0434, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430. \u041e\u0442\u043a\u0443\u0434\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0443\u0437\u043d\u0430\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439? \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u043b \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 <em>FeedbackMetadataIterator::entry_size<\/em> \u0438 <em>FeedbackMetadata::GetSlotSize<\/em>.<\/p>\n<p>  <\/p>\n<h2 id=\"vsyakoe-raznoe\">\u0412\u0441\u044f\u043a\u043e\u0435-\u0440\u0430\u0437\u043d\u043e\u0435<\/h2>\n<p>  <\/p>\n<h3 id=\"sluchay-n12\">\u0421\u043b\u0443\u0447\u0430\u0439 N12<\/h3>\n<p>  <\/p>\n<p>V501 There are identical sub-expressions &#8216;StandardFrameConstants::kCallerPCOffset&#8217; to the left and to the right of the &#8216;-&#8216; operator. linkage.h 90<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">static LinkageLocation ForCalleeFrameSlot(int32_t slot, MachineType type) {   \/\/ TODO(titzer): bailout instead of crashing here.   DCHECK(slot >= 0 &amp;&amp; slot &lt; LinkageLocation::MAX_STACK_SLOT);   return LinkageLocation(STACK_SLOT, slot, type); }  static LinkageLocation ForSavedCallerReturnAddress() {   return ForCalleeFrameSlot((StandardFrameConstants::kCallerPCOffset  \/\/ &lt;=                            - StandardFrameConstants::kCallerPCOffset) \/\/ &lt;=                            \/ kSystemPointerSize,                              MachineType::Pointer()); }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <em>ForSavedCallerReturnAddress<\/em> \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0431\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <em>ForCalleeFrameSlot<\/em> c \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u043d\u044b\u043c \u043d\u0443\u043b\u044e. \u0412\u0435\u0434\u044c \u043f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u044b\u0447\u0438\u0442\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>kCallerPCOffset<\/em> \u0438\u0437 \u0441\u0435\u0431\u044f \u0436\u0435. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u044d\u0442\u043e \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u044f\u0434\u043e\u043c \u0441 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043d\u043e \u0443\u0436\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">static LinkageLocation ForSavedCallerFramePtr()  {   return ForCalleeFrameSlot((StandardFrameConstants::kCallerPCOffset -                              StandardFrameConstants::kCallerFPOffset) \/                              kSystemPointerSize,                              MachineType::Pointer()); }  static LinkageLocation ForSavedCallerConstantPool()  {   DCHECK(V8_EMBEDDED_CONSTANT_POOL);   return ForCalleeFrameSlot((StandardFrameConstants::kCallerPCOffset -                              StandardFrameConstants::kConstantPoolOffset) \/                              kSystemPointerSize,                              MachineType::AnyTagged()); }  static LinkageLocation ForSavedCallerFunction()  {   return ForCalleeFrameSlot((StandardFrameConstants::kCallerPCOffset -                              StandardFrameConstants::kFunctionOffset) \/                              kSystemPointerSize,                              MachineType::AnyTagged()); }<\/code><\/pre>\n<p>  <\/p>\n<h3 id=\"sluchay-n13\">\u0421\u043b\u0443\u0447\u0430\u0439 N13<\/h3>\n<p>  <\/p>\n<p>V684 A value of the variable &#8216;flags&#8217; is not modified. Consider inspecting the expression. It is possible that &#8216;1&#8217; should be present instead of &#8216;0&#8217;. usb_device_handle_win.cc 58<\/p>\n<p>  <\/p>\n<p>V684 A value of the variable &#8216;flags&#8217; is not modified. Consider inspecting the expression. It is possible that &#8216;1&#8217; should be present instead of &#8216;0&#8217;. usb_device_handle_win.cc 67<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">uint8_t BuildRequestFlags(UsbTransferDirection direction,                           UsbControlTransferType request_type,                           UsbControlTransferRecipient recipient) {   uint8_t flags = 0;    switch (direction) {     case UsbTransferDirection::OUTBOUND:       flags |= BMREQUEST_HOST_TO_DEVICE &lt;&lt; 7;    \/\/ &lt;=       break;     case UsbTransferDirection::INBOUND:       flags |= BMREQUEST_DEVICE_TO_HOST &lt;&lt; 7;       break;   }    switch (request_type) {     case UsbControlTransferType::STANDARD:       flags |= BMREQUEST_STANDARD &lt;&lt; 5;          \/\/ &lt;=       break;     case UsbControlTransferType::CLASS:       flags |= BMREQUEST_CLASS &lt;&lt; 5;       break;     ....   }   ....   return flags; }<\/code><\/pre>\n<p>  <\/p>\n<p>BMREQUEST_HOST_TO_DEVICE \u0438 BMREQUEST_STANDARD \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043d\u043e\u043b\u044c, \u0447\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u043f\u0440\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0418\u041b\u0418.<\/p>\n<p>  <\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0430\u043a\u0440\u043e\u0441\u043e\u0432 \u043a\u0430\u043a-\u0442\u043e \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445, \u043d\u043e \u0431\u0435\u0433\u043b\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0432\u0441\u0435\u0439 \u043f\u0430\u043f\u043a\u0435 \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043b \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0438\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">#define BMREQUEST_HOST_TO_DEVICE 0 .... #define BMREQUEST_STANDARD 0<\/code><\/pre>\n<p>  <\/p>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043e\u0448\u0438\u0431\u043a\u0430, \u043d\u043e \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b.<\/p>\n<p>  <\/p>\n<h3 id=\"sluchay-n14\">\u0421\u043b\u0443\u0447\u0430\u0439 N14<\/h3>\n<p>  <\/p>\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: 1969, 1971. objects.cc 1969<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">void HeapObject::HeapObjectShortPrint(std::ostream&amp; os) {   ....   switch (map().instance_type()) {     ....     case FEEDBACK_CELL_TYPE: {       {         ReadOnlyRoots roots = GetReadOnlyRoots();         os &lt;&lt; \"&lt;FeedbackCell[\";         if (map() == roots.no_closures_cell_map()) {           \/\/ &lt;=           os &lt;&lt; \"no feedback\";         } else if (map() == roots.no_closures_cell_map()) {    \/\/ &lt;=           os &lt;&lt; \"no closures\";         } else if (map() == roots.one_closure_cell_map()) {           os &lt;&lt; \"one closure\";         } else if (map() == roots.many_closures_cell_map()) {           os &lt;&lt; \"many closures\";         } else {           os &lt;&lt; \"!!!INVALID MAP!!!\";         }         os &lt;&lt; \"]>\";       }       break;     }     ....   } }<\/code><\/pre>\n<p>  <\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <em>if,<\/em> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0434\u043b\u044f \u0434\u0432\u0443\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0442\u043e\u043a \u043a\u043e\u0434\u0430. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u0438 \u0435\u0433\u043e \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u0434 \u0438\u0437 \u0432\u044b\u0448\u0435\u043b\u0435\u0436\u0430\u0449\u0435\u0439 \u0432\u0435\u0442\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0443, \u043d\u043e \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044f \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043d\u0435 \u043c\u043e\u0433\u0443, \u0442. \u043a. \u0432\u0441\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0438\u043c\u0435\u044e\u0449\u0438\u0435 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 &#171;_cell_map&#187; (\u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438), \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0432 \u044d\u0442\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u0434 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c.<\/p>\n<p>  <\/p>\n<h3 id=\"sluchay-n15\">\u0421\u043b\u0443\u0447\u0430\u0439 N15<\/h3>\n<p>  <\/p>\n<p>V581 The conditional expressions of the &#8216;if&#8217; statements situated alongside each other are identical. Check lines: 144, 148. heap-controller.cc 148<\/p>\n<p>  <\/p>\n<pre><code class=\"cpp\">template &lt;typename Trait> size_t MemoryController&lt;Trait>::CalculateAllocationLimit(     Heap* heap, size_t current_size, size_t min_size, size_t max_size,     size_t new_space_capacity, double factor,     Heap::HeapGrowingMode growing_mode) {   ....   if (FLAG_heap_growing_percent > 0) {     factor = 1.0 + FLAG_heap_growing_percent \/ 100.0;   }    if (FLAG_heap_growing_percent > 0) {     factor = 1.0 + FLAG_heap_growing_percent \/ 100.0;   }    CHECK_LT(1.0, factor);   .... }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0443 \u0438 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u2013 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 copy-paste. \u041b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u0437\u0434\u0435\u0441\u044c \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e: \u0442\u043e \u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u043e\u0434, \u0442\u043e \u043b\u0438 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0443\u0436\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c. \u042f \u0434\u0443\u043c\u0430\u044e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043c\u0435\u043d\u044f \u0440\u0430\u0437\u0431\u0435\u0440\u0443\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u0435\u043d \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435.<\/p>\n<p>  <\/p>\n<h2 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<p>\u041d\u0443 \u0447\u0442\u043e \u0436, \u043c\u043e\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043e\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043b\u0438\u0441\u044c. \u0425\u043e\u0442\u0435\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u2013 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \ud83d\ude42 \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u044f \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u0438\u0432\u043b\u0451\u043d \u0442\u043e\u043c\u0443, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0435\u0433\u043e \u043f\u043e\u0438\u0441\u0442\u0438\u043d\u0435 \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440. \u041c\u043e\u0451 \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c.<\/p>\n<p>  <\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u0430\u043c\u0435\u0442\u0438\u043b, \u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0446\u0438\u043a\u043b\u0430 \u0431\u044b\u043b\u0438 \u043a\u0440\u0430\u0442\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043e\u0448\u0438\u0431\u043e\u043a. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0431\u044b\u043b\u043e 250, \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0436\u0430\u043b\u043a\u0438\u0435 15\u2026 \u041d\u0435\u0443\u0436\u0435\u043b\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 &#171;\u0441\u0434\u0443\u043b\u0441\u044f&#187;?<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0432\u0441\u0435 \u043d\u0435\u0442 ?. \u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u043c\u043d\u043e\u0433\u043e, \u0434\u0430 \u0438 \u0447\u0435\u0433\u043e \u0443\u0436 \u0433\u0440\u0435\u0445\u0430 \u0442\u0430\u0438\u0442\u044c, \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u0442\u043e\u0436\u0435 \u043d\u0430\u0431\u0440\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u0422\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0442\u2026 \u0411\u044b\u043b\u043e \u0431\u044b \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u0443 \u043e\u0433\u0440\u043e\u043c\u043d\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u044b\u043d\u044e \u0442\u0435\u043a\u0441\u0442\u0430? \u0414\u0443\u043c\u0430\u044e, \u0442\u0430\u043a\u043e\u0435 \u0432\u0440\u0435\u043c\u044f\u043f\u0440\u0435\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u043e \u0431\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Chromium, \u0438 \u0442\u043e \u043d\u0435 \u0444\u0430\u043a\u0442. \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0442\u0435\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u043c\u043d\u0435 \u0438 \u043c\u043e\u0438\u043c \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c. \u0422\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0432\u044b\u0431\u0440\u0430\u043b \u0434\u043b\u044f \u0432\u0430\u0441, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439, \u0441\u0430\u043c\u044b\u0439 \u0441\u043e\u043a.<\/p>\n<p>  <\/p>\n<p>\u041d\u0443 \u0430 \u0437\u0430\u0441\u0438\u043c \u043f\u0440\u043e\u0449\u0430\u044e\u0441\u044c \u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0432\u0430\u0441 \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u043f\u043e\u0434\u0438\u0441\u043a\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0442\u0435\u043c\u0443, \u043a\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0442\u0430\u0442\u0435\u0439-\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0430\u043c \u0431\u043e\u043b\u044c\u0448\u0435. \u0427\u0438\u0441\u0442\u043e\u0433\u043e \u0432\u0430\u043c \u043a\u043e\u0434\u0430!<\/p>\n<p>  <\/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: Mikhail Gelvih. <a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/592779\/\">Checking Chromium after three years. How&#8217;s it going?<\/a><\/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\/592783\/\"> https:\/\/habr.com\/ru\/articles\/592783\/<\/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-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0421\u0442\u0440\u044f\u0445\u0438\u0432\u0430\u0435\u043c \u043f\u044b\u043b\u044c \u0441 \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u0435\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Chromium. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043e\u0431\u0441\u0442\u043e\u044f\u0442 \u0434\u0435\u043b\u0430 \u0441 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043a\u043e\u0434\u0430 \u0432 \u0441\u0432\u0435\u0436\u0435\u043c \u0440\u0435\u043b\u0438\u0437\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0432 \u0434\u0435\u043b\u0435 \u043d\u043e\u0432\u0435\u0439\u0448\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/d7b\/12d\/b5d\/d7b12db5d5e74aca43a9172228952cb1.png\" alt=\"chromium_N7_ru\/image2.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d7b\/12d\/b5d\/d7b12db5d5e74aca43a9172228952cb1.png\"\/><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-399365","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/399365","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=399365"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/399365\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=399365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=399365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=399365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}