{"id":367022,"date":"2024-05-21T03:12:25","date_gmt":"2024-05-21T03:12:25","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=367022"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=367022","title":{"rendered":"<span>Qt Creator* \u0438\u0449\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 Qt Creator<\/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-\u0442\u043e \u0442\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0434 \u043a\u0430\u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d PVS-Studio \u0434\u043b\u044f Qt Creator. \u0418 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 IDE. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0438\u0435 \u043d\u0435\u0434\u043e\u0440\u0430\u0437\u0443\u043c\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0435\u043c \u0436\u0438\u0432\u0451\u0442 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u043e\u0434\u0438\u0432\u0448\u0430\u044f\u0441\u044f \u0441\u0440\u0435\u0434\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/e6d\/29a\/74e\/e6d29a74e9a941bc45e560570bff56c6.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e6d\/29a\/74e\/e6d29a74e9a941bc45e560570bff56c6.png\"\/><\/figure>\n<h3>\u041a\u0440\u0430\u0442\u043a\u043e \u043e Qt Creator \u0438 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432 \u0446\u0435\u043b\u043e\u043c<\/h3>\n<p>\u0425\u043e\u0442\u044c Qt Creator \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f IDE, \u043d\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043e \u043d\u0435\u0439. Qt Creator \u2014 \u044d\u0442\u043e \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C++ \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 Qt. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u0434\u0430, \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u0438 \u043f\u0440\u043e\u0447\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438. Qt Creator \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Windows, macOS \u0438 Linux. \u041e\u0441\u043e\u0431\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e Qt <a href=\"https:\/\/www.qt.io\/stock\/qt-acquires-axivion-gmbh-to-further-strengthen-its-marketleading-offering-in-quality-assurance-1660229100000-3140057\">\u043f\u0440\u0438\u043e\u0431\u0440\u0435\u043b\u0430<\/a> \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0438 \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u043b\u0430 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0432 \u0441\u0432\u043e\u044e IDE. \u0411\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430. \ud83d\ude42<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0443\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043d\u0435\u043a\u043e\u0435 &#171;\u043f\u0435\u0440\u0435\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435&#187; \u0432 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043a \u0441\u0442\u0430\u0442\u044c\u0435? \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u043d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 5, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0432\u043d\u043e \u0440\u0435\u0448\u0438\u043b\u0438 \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u043b\u043e\u043f\u0430\u0442\u0438\u0442\u044c IDE \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c. \u041c\u043d\u0435, \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443, \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0440\u0430\u0432\u044f\u0442\u0441\u044f: \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445 Qt Creator \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0431\u044f \u043d\u0435 \u0445\u0443\u0436\u0435, \u0430 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0434\u0430\u0436\u0435 \u043b\u0443\u0447\u0448\u0435 Visual Studio \u0438 VS Code (\u043f\u043e \u043c\u043e\u0438\u043c \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f\u043c. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438). \u0415\u0441\u0442\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438 \u0437\u0430 \u0447\u0442\u043e \u043f\u043e\u0440\u0443\u0433\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 (\u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 API \u0434\u043b\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432), \u043d\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u043d\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>\u0412 \u0446\u0435\u043b\u044f\u0445 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043a\u043e\u0434, \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0439\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435, \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u043d\u0451\u043d \u043d\u0430 &#8230;. (\u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u043e\u0447\u043a\u0438), \u0430 \u0441\u0430\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u044b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u043c \u0432\u0438\u0434\u0430 <em>\/\/ &lt;=<\/em>.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043a\u043e\u0434 \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0441\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0435-\u0433\u0434\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438 (\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0432\u0430\u0436\u043d\u043e).<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0441\u043d\u0430\u0431\u0436\u0451\u043d \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0430\u0441\u044c <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/commit\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\">\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f<\/a> \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0435\u043b\u0438\u0437\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f (12.0.0) \u0441 GitHub. \u0421\u0441\u044b\u043b\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0443\u0436\u0435 \u043d\u0435 \u0440\u0430\u0437 \u0431\u044b\u0432\u0430\u043b\u043e, \u0447\u0442\u043e \u0442\u0435\u0433\u0438 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u043b\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u0443 (\u0434\u0430, \u0432\u043a\u0443\u0441\u043e\u0432\u0449\u0438\u043d\u0430). \u041a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435, \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0410 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0438 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434 \u0437\u0430\u043e\u0434\u043d\u043e. ;-).<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h3>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h3>\n<p>\u042f \u0436\u0435 \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 PVS-Studio \u0434\u043b\u044f Qt Creator, \u0434\u0430? \u0418\u043c\u0435\u043d\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0435\u043c\u0443 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 Qt Creator \u0441\u043e \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u043e\u0439, \u0434\u0430. \u0418\u0442\u0430\u043a, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c Qt Creator \u0438\u0437 Qt Creator \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 PVS-Studio \u0434\u043b\u044f Qt Creator. \u0427\u0442\u043e \u0436\u0435 \u043d\u0430\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f? \u0420\u0435\u0446\u0435\u043f\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442:<\/p>\n<ol>\n<li>\n<p>\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0432\u0435\u0436\u0438\u0439 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/download\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1099\">\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432<\/a> PVS-Studio (7.28 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438);<\/p>\n<\/li>\n<li>\n<p>\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/manual\/6648\/\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e \u043f\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?promo=qtcreator&amp;utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1099\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a> \u0438 \u0432\u0432\u043e\u0434\u0438\u043c \u0435\u0451 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 Qt Creator \u0441 <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\">GitHub<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0433\u043e \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0430\u043d\u0430\u043b\u0438\u0437;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1042\/\">V1042<\/a>) \u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430 third-party \u043a\u043e\u0434\u0435;<\/p>\n<\/li>\n<li>\n<p>PROFIT! \u0418\u0434\u0451\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0446\u0435\u043f\u0442\u0443, \u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/394\/a26\/791\/394a2679132a2311b9a94c685c46dab8.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/394\/a26\/791\/394a2679132a2311b9a94c685c46dab8.png\"\/><\/figure>\n<h3>\u041f\u043e\u0448\u043b\u0438 \u043e\u0448\u0438\u0431\u043e\u0447\u043a\u0438<\/h3>\n<h4>\u0423\u0442\u0435\u0447\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438<\/h4>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043f\u0443\u043d\u043a\u0442\u0430, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0443\u0442\u0435\u0447\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0432 \u0442\u0435\u043c\u0435, \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u043e\u044f\u0441\u043d\u044e \u0441\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0412 Qt \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 <a href=\"https:\/\/doc.qt.io\/qt-6\/objecttrees.html\">\u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f<\/a> \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435 \u0443\u0442\u0435\u043a\u043b\u0430, \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0442\u0430\u043a \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f (\u043f\u0440\u0438\u0432\u0435\u0442, <em>setParent<\/em> \u0438 <em>layout<\/em>&#8216;\u044b). \u041d\u0435 \u0431\u0443\u0434\u0443 \u043b\u0443\u043a\u0430\u0432\u0438\u0442\u044c, \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u0432\u044b\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041d\u043e \u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043d\u0438\u0445, \u043f\u043e\u043a\u0430 \u043c\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439. \ud83d\ude42<\/p>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0443\u0442\u0435\u0447\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0443\u0442\u0438 \u0434\u043e \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u043e \u043f\u0430\u0434\u0435\u043d\u0438\u0438 IDE.<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/debugger\/debuggerplugin.cpp#L1813\">main.cpp:1813<\/a><\/p>\n<pre><code class=\"cpp\">QString crashReportsPath() {   std::unique_ptr&lt;Utils::QtcSettings> settings(createUserSettings());   QFileInfo(settings->fileName()).path() + \"\/crashpad_reports\";   if (Utils::HostOsInfo::isMacHost())     return QFileInfo(createUserSettings()->fileName()).path() +                      \"\/crashpad_reports\";   else     return QCoreApplication::applicationDirPath() + '\/' +            RELATIVE_LIBEXEC_PATH + \"crashpad_reports\"; } <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u0441 \u0442\u043e\u0436\u0435 \u0441\u043c\u0443\u0442\u0438\u043b\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>createUserSettings<\/em>, \u0442\u043e \u0443 \u0432\u0430\u0441 \u044f\u0432\u043d\u043e \u043d\u0430\u043c\u0451\u0442\u0430\u043d \u0433\u043b\u0430\u0437 \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043e\u0448\u0438\u0431\u043e\u043a. \u0412\u044b \u043d\u0430 \u0432\u0435\u0440\u043d\u043e\u043c \u043f\u0443\u0442\u0438. \u0412 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 <em>std::unique_ptr<\/em> \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0410 \u0432\u043e\u0442 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437 \u2014 \u0432 \u0432\u0435\u0442\u043a\u0435 \u0434\u043b\u044f macOS \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0443\u0442\u0438 \u0434\u043e \u0444\u0430\u0439\u043b\u0430, \u043e \u0447\u0451\u043c \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v773\/\">V773<\/a> [CWE-401, CERT-MEM31-C, CERT-MEM51-CPP] The return value of the &#8216;createUserSettings&#8217; function is not saved. A memory leak is possible. main.cpp 422<\/p>\n<p>&#171;\u0410 \u0442\u043e\u0447\u043d\u043e \u043b\u0438 \u0435\u0441\u0442\u044c \u0431\u0435\u0434\u0430?&#187; \u2014 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b. \u0422\u043e\u0447\u043d\u043e. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>createUserSettings<\/em> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/app\/main.cpp#L274\">main.cpp:274<\/a><\/p>\n<pre><code class=\"cpp\">static Utils::QtcSettings *createUserSettings() {     return new Utils::QtcSettings(         QSettings::IniFormat,         QSettings::UserScope,         QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR),         QLatin1String(Core::Constants::IDE_CASED_ID)); } <\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0434\u0432\u0430 \u0441\u043b\u0443\u0447\u0430\u044f, \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u043b\u0438 <em>parent<\/em>&#8216;\u043e\u0432 \u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u0437\u0430 \u0438\u0445 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u2014 \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u043e\u0431 \u0438\u0445 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438. \u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u0435\u043d \u2014\u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u0443\u0442\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0445\u043e\u0442\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0432\u0441\u0451 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e:<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/debugger\/debuggerplugin.cpp#L1813\">debuggerplugin.cpp:1813<\/a><\/p>\n<pre><code class=\"cpp\">void DebuggerPlugin::attachToProcess(....) {   ....   auto kitChooser = new KitChooser;   kitChooser->setShowIcons(true);   kitChooser->populate();   Kit *kit = kitChooser->currentKit();    dd->attachToRunningProcess(kit, processInfo, false); } <\/code><\/pre>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0434\u0430\u043b\u044f\u043b\u0430\u0441\u044c \u0432 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435, \u043d\u043e, \u0443\u0432\u044b, \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0443\u0441\u0442\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0434\u0435\u0441\u044c \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0443\u043c\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u043d\u043e \u0437\u0430\u0431\u044b\u043b\u0438&#8230;<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/qmldesigner\/components\/curveeditor\/curveeditorview.cpp#L24\">curveeditorview.cpp:43<\/a><\/p>\n<pre><code class=\"cpp\">CurveEditorView::CurveEditorView(   ExternalDependenciesInterface &amp;externalDepoendencies )   : AbstractView{externalDepoendencies}   , m_block(false)   , m_model(new CurveEditorModel())   , m_editor(new CurveEditor(m_model)) {   .... }  CurveEditorView::~CurveEditorView() {} <\/code><\/pre>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>V773 [CWE-401, CERT-MEM31-C, CERT-MEM51-CPP] Visibility scope of the &#8216;kitChooser&#8217; pointer was exited without releasing the memory. A memory leak is possible. debuggerplugin.cpp 1825<\/p>\n<\/li>\n<li>\n<p>V773 [CWE-401, CERT-MEM31-C, CERT-MEM51-CPP] The &#8216;m_model&#8217; pointer was not released in destructor. A memory leak is possible. curveeditorview.cpp 43<\/p>\n<\/li>\n<\/ul>\n<h4>\u041a\u043b\u0430\u0441\u0441\u0438\u043a\u0430 \u0436\u0430\u043d\u0440\u0430<\/h4>\n<p>&#171;\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0443 \u0436\u0430\u043d\u0440\u0430&#187;, \u2014 \u0441\u043a\u0430\u0437\u0430\u043b \u0431\u044b \u044f \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043e\u0434\u043d\u043e \u041d\u041e. \u041f\u0440\u043e\u0435\u043a\u0442 \u0443 \u043d\u0430\u0441 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0421++17 \u0438 <em>std::optional<\/em> \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u0445\u0432\u0430\u043b\u044c\u043d\u043e. \u0416\u0430\u043b\u043a\u043e \u0442\u043e\u043b\u044c\u043a\u043e, \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u0442\u043e \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438, \u0447\u0442\u043e \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0441\u0430\u043c\u0438? \ud83d\ude09<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/libs\/utils\/aspects.cpp#L2189\">aspects.cpp:2189<\/a><\/p>\n<pre><code class=\"cpp\">void IntegerAspect::addToLayout(Layouting::LayoutItem &amp;parent) {   QTC_CHECK(!d->m_spinBox);   d->m_spinBox = createSubWidget&lt;QSpinBox>();   d->m_spinBox->setDisplayIntegerBase(d->m_displayIntegerBase);   d->m_spinBox->setPrefix(d->m_prefix);   d->m_spinBox->setSuffix(d->m_suffix);   d->m_spinBox->setSingleStep(d->m_singleStep);   d->m_spinBox->setSpecialValueText(d->m_specialValueText);   if (d->m_maximumValue &amp;&amp; d->m_maximumValue)     d->m_spinBox->setRange(       int(d->m_minimumValue.value() \/ d->m_displayScaleFactor),       int(d->m_maximumValue.value() \/ d->m_displayScaleFactor)     );    \/\/ Must happen after setRange()   d->m_spinBox->setValue(int(value() \/ d->m_displayScaleFactor));    addLabeledItem(parent, d->m_spinBox);   connect(d->m_spinBox.data(), &amp;QSpinBox::valueChanged,           this, &amp;IntegerAspect::handleGuiChanged); } <\/code><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/db6\/dbf\/4b1\/db6dbf4b194968b665839c156fb53aed.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/db6\/dbf\/4b1\/db6dbf4b194968b665839c156fb53aed.png\"\/><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <em>m_maximumValue<\/em> \u0432\u043c\u0435\u0441\u0442\u043e <em>m_minimumValue<\/em>, \u0442\u043e \u043c\u043e\u0433\u0443 \u0432\u0430\u0441 \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u0438\u0442\u044c. \u041d\u0435 \u0442\u0430\u043a-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0434\u0430? \u0414\u0443\u043c\u0430\u044e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Qt Creator \u0442\u043e\u0436\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u044f\u0442\u0441\u044f, \u0432\u0435\u0434\u044c \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u0434 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d \u0447\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u0430\u0439\u043b\u0435:<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/libs\/utils\/aspects.cpp#L2291\">aspects.cpp:2291<\/a><\/p>\n<pre><code class=\"cpp\">void DoubleAspect::addToLayout(LayoutItem &amp;builder) {   QTC_CHECK(!d->m_spinBox);   d->m_spinBox = createSubWidget&lt;QDoubleSpinBox>();   d->m_spinBox->setPrefix(d->m_prefix);   d->m_spinBox->setSuffix(d->m_suffix);   d->m_spinBox->setSingleStep(d->m_singleStep);   d->m_spinBox->setSpecialValueText(d->m_specialValueText);   if (d->m_maximumValue &amp;&amp; d->m_maximumValue)     d->m_spinBox->setRange(d->m_minimumValue.value(),                            d->m_maximumValue.value());    bufferToGui(); \/\/ Must happen after setRange()!   addLabeledItem(builder, d->m_spinBox);   connect(d->m_spinBox.data(), &amp;QDoubleSpinBox::valueChanged,           this, &amp;DoubleAspect::handleGuiChanged); } <\/code><\/pre>\n<p><em>\u041a \u0441\u043b\u043e\u0432\u0443, \u0430 \u0447\u0430\u0441\u0442\u043e \u043b\u0438 \u0432\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c IntelliSense (\u0438\u043b\u0438 \u0435\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433)? \u0427\u0442\u043e-\u0442\u043e \u043c\u043d\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u043f\u043e\u0441\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438. \u0420\u0430\u043d\u044c\u0448\u0435 \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u043b\u043e\u0432\u0438\u043b \u0441\u0435\u0431\u044f \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043f\u043e \u0437\u0430\u043f\u0430\u0440\u043a\u0435 \u0442\u044b\u043a\u043d\u0443\u043b Enter \u0438 \u043f\u043e\u0448\u0451\u043b \u0434\u0430\u043b\u044c\u0448\u0435 \u2014 \u043c\u044b\u0441\u043b\u044c-\u0442\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c. \u041f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441. \ud83d\ude42<\/em><\/p>\n<p>\u0410\u0445 \u0434\u0430, \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>V501 [CWE-571] There are identical sub-expressions to the left and to the right of the &#8216;&amp;&amp;&#8217; operator: d->m_maximumValue &amp;&amp; d->m_maximumValue aspects.cpp 2198<\/p>\n<\/li>\n<li>\n<p>V501 [CWE-571] There are identical sub-expressions to the left and to the right of the &#8216;&amp;&amp;&#8217; operator: d->m_maximumValue &amp;&amp; d->m_maximumValue aspects.cpp 2299<\/p>\n<\/li>\n<\/ul>\n<h4>\u041a\u043e\u043d\u043a\u0443\u0440\u0441 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/h4>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0435\u0449\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u044f\u0442\u044c \u0433\u043b\u0430\u0437\u043a\u0438 \u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0444\u043b\u0430\u0433\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041d\u0443 \u0438 \u043a\u0443\u0434\u0430 \u0436\u0435 \u0431\u0435\u0437 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a: &#171;\u044f\u0438\u043d\u0435\u043d\u0432\u0430\u0440\u0441 \u0438\u0438\u0446\u043a\u043d\u0443\u0444 \u0432 \u044b\u0442\u0430\u043a\u0438\u043b\u0431\u0443\u0434 \u0438\u0440\u0442\u043e\u043c\u0421&#187;. \u0414\u0430, \u043d\u0435 \u0432\u0441\u0451 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/projectexplorer\/gcctoolchain.cpp#L474\">gcctoolchain.cpp:474<\/a><\/p>\n<pre><code class=\"cpp\">\/\/ For querying operations such as -dM static QStringList filteredFlags(const QStringList &amp;allFlags,                                  bool considerSysroot) {   QStringList filtered;   for (int i = 0; i &lt; allFlags.size(); ++i)   {     const QString &amp;a = allFlags.at(i);     if (a.startsWith(\"--gcc-toolchain=\"))     {       filtered &lt;&lt; a;     }     else if (a == \"-arch\")     {       if (++i &lt; allFlags.length() &amp;&amp; !filtered.contains(a))         filtered &lt;&lt; a &lt;&lt; allFlags.at(i);     }     else if (a == \"-Xclang\")     {       filtered &lt;&lt; a;     }     else if (   (considerSysroot &amp;&amp; (a == \"--sysroot\" || a == \"-isysroot\"))              || a == \"-D\" || a == \"-U\"              || a == \"-gcc-toolchain\"              || a == \"-target\"              || a == \"-mllvm\"              || a == \"-isystem\")     {       if (++i &lt; allFlags.length())         filtered &lt;&lt; a &lt;&lt; allFlags.at(i);     }     else if (  a.startsWith(\"-m\") || a.startsWith(\"-f\") || a.startsWith(\"-O\")              || a.startsWith(\"-std=\") || a.startsWith(\"-stdlib=\")              || a.startsWith(\"-specs=\") || a == \"-ansi\" || a == \"-undef\"              || a.startsWith(\"-D\") || a.startsWith(\"-U\")              || a.startsWith(\"-stdlib=\") || a.startsWith(\"-B\")              || a.startsWith(\"--target=\")              || (a.startsWith(\"-isystem\") &amp;&amp; a.length() > 8)              || a == \"-Wno-deprecated\"              || a == \"-nostdinc\" || a == \"-nostdinc++\")     {       filtered &lt;&lt; a;     }   }    return filtered; } <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441 \u043d\u0430\u0441\u043a\u043e\u043a\u0430 \u043d\u0430\u0439\u0442\u0438 \u043b\u0438\u0448\u043d\u044e\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 <em>&#171;-stdlib&#187;<\/em>, \u0442\u043e \u043d\u0435 \u043e\u0433\u043e\u0440\u0447\u0430\u0439\u0442\u0435\u0441\u044c \u2014 \u043a\u0430\u043a \u0440\u0430\u0437 \u0434\u043b\u044f \u043d\u0430\u0441 \u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0433\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u0438\u0442\u044c \u0441 \u043f\u0440\u043e\u043a\u0430\u0447\u0430\u043d\u043d\u043e\u0439 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>\u0423\u0432\u044b, \u043f\u043e\u0434\u0430\u0440\u043a\u0438 \u043b\u0435\u0436\u0430\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0430\u0442\u044c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0434\u0430\u043b\u044c \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0441\u044b\u0449\u0438\u043a\u0430-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/6bb\/ea3\/8d1\/6bbea38d15bea3f6ebb9bd7c13391a8b.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/6bb\/ea3\/8d1\/6bbea38d15bea3f6ebb9bd7c13391a8b.png\"\/><\/figure>\n<p>&#171;\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043a\u043e\u0441\u0442\u0438&#187; \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442, \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d, \u043d\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e. \u0410, \u0438 \u0447\u0443\u0442\u044c \u043d\u0435 \u0437\u0430\u0431\u044b\u043b \u043f\u0440\u043e \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:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v501\/\">V501<\/a> [CWE-570] There are identical sub-expressions &#8216;a.startsWith(&#171;-stdlib=&#187;)&#8217; to the left and to the right of the &#8216;||&#8217; operator. gcctoolchain.cpp 491.<\/p>\n<h4>\u041d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u0439 \u043a\u043e\u0434<\/h4>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e, \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u044e\u0434\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u043f\u043e\u0447\u0442\u0438 400 \u0441\u0442\u0440\u043e\u0447\u0435\u043a, \u2014 \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443. \u041d\u043e \u043f\u043e\u0431\u0435\u0440\u0435\u0433\u0443 \u0432\u0430\u0448\u0435 \u043a\u043e\u043b\u0451\u0441\u0438\u043a\u043e \u043c\u044b\u0448\u0438 \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c.<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/libs\/qtcreatorcdbext\/symbolgroupvalue.cpp#L1196\">symbolgroupvalue.cpp:1196<\/a><\/p>\n<pre><code class=\"cpp\">static KnownType knownClassTypeHelper(const std::string &amp;type,                                       std::string::size_type pos,                                       std::string::size_type endPos) {   ....   \/\/ Remaining non-template types   switch (endPos - qPos)   {     ....   case 30:     if (!type.compare(qPos, 30, \"QPatternist::SequenceType::Ptr\"))       return KT_QPatternist_SequenceType_Ptr;     if (!type.compare(qPos, 30, \"QXmlStreamNamespaceDeclaration\"))       return KT_QXmlStreamNamespaceDeclaration;     break;   case 32:     break;                                                                \/\/ &lt;=     if (!type.compare(qPos, 32, \"QPatternist::Item::Iterator::Ptr\"))       return KT_QPatternist_Item_Iterator_Ptr;   case 34:     break;                                                                \/\/ &lt;=     if (!type.compare(qPos, 34, \"QPatternist::ItemSequenceCacheCell\"))       return KT_QPatternist_ItemSequenceCacheCell;   case 37:     break;                                                                \/\/ &lt;=     if (!type.compare(qPos, 37, \"QNetworkHeadersPrivate::RawHeaderPair\"))       return KT_QNetworkHeadersPrivate_RawHeaderPair;     if (!type.compare(qPos, 37, \"QPatternist::AccelTree::BasicNodeData\"))       return KT_QPatternist_AccelTree_BasicNodeData;     break;   }    return KT_Unknown; } <\/code><\/pre>\n<p>\u041f\u0440\u043e\u0448\u0443 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0432\u0435\u0442\u043a\u0438 32, 34 \u0438 37 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 <em>switch<\/em>. \u0427\u0435\u0441\u0442\u043d\u043e, \u044f \u043d\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u043e\u0431\u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <em>break;<\/em> \u043f\u0440\u044f\u043c\u043e \u043f\u0435\u0440\u0435\u0434 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c \u043a\u043e\u0434\u043e\u043c.<\/p>\n<p>\u0411\u044b\u043b\u0438 \u043c\u044b\u0441\u043b\u0438 \u043d\u0430\u0441\u0447\u0451\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0438, \u043d\u043e \u043d\u0435\u0442, \u043e\u043d\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c, \u0434\u0430 \u0438 \u043f\u0440\u043e\u0436\u0438\u043b\u0438 \u0442\u0430\u043c, \u0441\u0443\u0434\u044f \u043f\u043e <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blame\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/libs\/qtcreatorcdbext\/symbolgroupvalue.cpp#L1572\">\u0438\u0441\u0442\u043e\u0440\u0438\u0438<\/a>, \u0443\u0436\u0435 \u043e\u043a\u043e\u043b\u043e 14 \u043b\u0435\u0442. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0437 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0442\u043e \u0434\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v779\/\">V779<\/a> [CWE-561, CERT-MSC12-C] Unreachable code detected. It is possible that an error is present. symbolgroupvalue.cpp 1565<\/p>\n<h4>\u0425\u043e\u0434\u0438\u043c \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 (aka \u043e\u0448\u0438\u0431\u043a\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0435\u0439)<\/h4>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0437\u0430\u043a\u043e\u0432\u044b\u0440\u0438\u0441\u0442\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u0434\u043b\u044f \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 Qt \u2014 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u0418 \u043d\u0435\u0441\u043f\u0440\u043e\u0441\u0442\u0430 \u2014 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u0430\u043b\u0430\u0436\u0430\u0442\u044c \u0442\u0443\u0442 \u0445\u043e\u0442\u044c \u043e\u0442\u0431\u0430\u0432\u043b\u044f\u0439. \u041d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Qt Creator \u0441\u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043f\u0430\u0441\u0442\u044c\u0441\u044f. \ud83d\ude42<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/cppeditor\/cppquickfixes.cpp#L4676\">cppquickfixes:4676<\/a><\/p>\n<pre><code class=\"cpp\">QVariant data(int column, int role) const override {   if (role == Qt::DisplayRole &amp;&amp; column == NameColumn)     return m_memberInfo->data.memberVariableName;   if (   role == Qt::CheckStateRole &amp;&amp; column > 0       &amp;&amp; column &lt;= static_cast&lt;int>(std::size(ColumnFlag)))   {     return m_memberInfo->requestedFlags &amp; ColumnFlag[column] ? Qt::Checked :                                                                Qt::Unchecked;   }    return {}; } <\/code><\/pre>\n<p>\u0421 \u0432\u0438\u0434\u0443 \u043a\u043e\u0434 \u0432\u043f\u043e\u043b\u043d\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439&#8230; \u041d\u043e \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f <em>ColumnFlag<\/em> (\u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u0430\u043c \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0430\u043c\u0438\u043c)?<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/cppeditor\/cppquickfixes.cpp#L4661\">cppquickfixes:4661<\/a><\/p>\n<pre><code class=\"cpp\">using Flag = GenerateGetterSetterOp::GenerateFlag;  constexpr static Flag ColumnFlag[] = {   Flag::Invalid,                    \/\/ 0   Flag::GenerateGetter,             \/\/ 1   Flag::GenerateSetter,             \/\/ 2   Flag::GenerateSignal,             \/\/ 3   Flag::GenerateReset,              \/\/ 4   Flag::GenerateProperty,           \/\/ 5   Flag::GenerateConstantProperty,   \/\/ 6 }; <\/code><\/pre>\n<p>\u0414\u0443\u043c\u0430\u044e, \u0441 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u043e\u0439 \u0443\u0436\u0435 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0432 \u0447\u0451\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0445\u043e\u0434 \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <em>ColumnFlag<\/em>, \u0435\u0441\u043b\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d <em>column<\/em> \u0440\u0430\u0432\u043d\u044b\u0439 7. \u0410 \u0432\u0441\u0451 \u0438\u0437-\u0437\u0430 \u043f\u0440\u0438\u0442\u0430\u0438\u0432\u0448\u0435\u0433\u043e\u0441\u044f <em>&lt;=<\/em> \u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">if (   role == Qt::CheckStateRole      &amp;&amp; column > 0     &amp;&amp; column &lt; static_cast&lt;int>(std::size(ColumnFlag))) {   .... } <\/code><\/pre>\n<p>\u042f \u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0447\u0442\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043d\u0430\u043b\u0430\u0436\u0430\u0442\u044c \u043d\u0435\u043c\u0430\u043b\u043e? \u0412 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0430\u043c\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0449\u0451 \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0438\u0434\u0430:<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/cppeditor\/cppquickfixes.cpp#L4693\">cppquickfixes:4693<\/a><\/p>\n<pre><code class=\"cpp\">bool setData(int column, const QVariant &amp;data, int role) override {   if (column &lt; 1 || column > static_cast&lt;int>(std::size(ColumnFlag)))     return false;   if (role != Qt::CheckStateRole)     return false;   if (!(m_memberInfo->possibleFlags &amp; ColumnFlag[column]))     return false;   .... } <\/code><\/pre>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u2014 \u0441 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c <em>><\/em>. \u0412\u0441\u0451 \u044d\u0442\u043e \u0434\u043e\u0431\u0440\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f\u043c:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v557\/\">V557<\/a> [CWE-125, CERT-ARR30-C] Array overrun is possible. The value of &#8216;column&#8217; index could reach 7. cppquickfixes.cpp 4682<\/p>\n<\/li>\n<li>\n<p>V557 [CWE-125, CERT-ARR30-C] Array overrun is possible. The value of &#8216;column&#8217; index could reach 7. cppquickfixes.cpp 4693<\/p>\n<\/li>\n<li>\n<p>V557 [CWE-125, CERT-ARR30-C] Array overrun is possible. The value of &#8216;column&#8217; index could reach 7. cppquickfixes.cpp 4697<\/p>\n<\/li>\n<li>\n<p>V557 [CWE-125, CERT-ARR30-C] Array overrun is possible. The value of &#8216;column&#8217; index could reach 7. cppquickfixes.cpp 4699<\/p>\n<\/li>\n<li>\n<p>V557 [CWE-125, CERT-ARR30-C] Array overrun is possible. The value of &#8216;column&#8217; index could reach 7. cppquickfixes.cpp 4735<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0441\u0451 \u0435\u0449\u0451 \u0434\u0443\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u044d\u0442\u043e\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u043d\u0438\u043f\u043f\u0435\u0442, \u0438 \u0431\u0443\u0434\u0435\u043c \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/qmldesigner\/components\/annotationeditor\/defaultannotations.cpp#L27\">defaultannotations.cpp:27<\/a><\/p>\n<pre><code class=\"cpp\">QVariant DefaultAnnotationsModel::data(const QModelIndex &amp;index, int role) const {   const auto row = static_cast&lt;size_t>(index.row());   if (!index.isValid() || m_defaults.size() &lt; row)     return {};    auto &amp;item = m_defaults[row];    switch (role)   {     ....   }    return {}; } <\/code><\/pre>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v557\/\">V557<\/a>. [CWE-119, CERT-ARR30-C] Array overrun is possible. The &#8216;row&#8217; index is pointing beyond array bound. defaultannotations.cpp 33<\/p>\n<h4>\u0412\u044b\u0431\u043e\u0440 \u0431\u0435\u0437 \u0432\u044b\u0431\u043e\u0440\u0430<\/h4>\n<p>\u041f\u043e\u0447\u0442\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043b\u044e\u0431\u0438\u043c\u044b\u0439 \u0432\u0438\u0434 \u043e\u0448\u0438\u0431\u043e\u043a. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0435 &#171;\u0432\u044b\u0431\u043e\u0440 \u0431\u0435\u0437 \u0432\u044b\u0431\u043e\u0440\u0430&#187; (\u044f \u0436\u0435 \u043d\u0435 \u043e\u0434\u0438\u043d \u0435\u0433\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u044e, \u0434\u0430?). \u0421\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c \u0443\u0433\u043e\u0434\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u043c\u0435\u0442\u044c \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437-\u0437\u0430 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0435\u0442\u043a\u0430\u0445. Qt Creator \u043f\u043e\u0440\u0430\u0434\u043e\u0432\u0430\u043b \u043f\u0430\u0440\u043e\u0447\u043a\u043e\u0439 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/post_images\/0cb\/6c2\/a7b\/0cb6c2a7bd4af51f2f76134c344cc2cc.png\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0cb\/6c2\/a7b\/0cb6c2a7bd4af51f2f76134c344cc2cc.png\"\/><\/figure>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/qmldesigner\/designercore\/metainfo\/nodemetainfo.cpp#L1834\">nodemetainfo.cpp:1834<\/a><\/p>\n<pre><code class=\"cpp\">QString NodeMetaInfo::componentFileName() const {   if constexpr (!useProjectStorage())   {     if (isValid())     {       return m_privateData->componentFileName();     }   }   else   {     if (isValid())     {       return m_privateData->componentFileName();     }   }    return {}; } <\/code><\/pre>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u043d\u0435 \u0437\u043d\u0430\u044e, \u0432 \u0447\u0451\u043c \u0431\u044b\u043b \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043c\u044b\u0441\u0435\u043b \u043a\u043e\u0434\u0430, \u043e\u0434\u043d\u0430\u043a\u043e \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0431\u0440\u043e\u0448\u0435\u043d\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0412\u043e\u0442 \u0442\u0430\u043a, \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u0440\u043e\u0434\u0435 \u0438 \u043d\u0435\u0442, \u043d\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0442\u043e\u0438\u0442:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v523\/\">V523<\/a> [CWE-691] The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. nodemetainfo.cpp 1840<\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0432 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u0435\u043d\u044f \u043d\u0430\u043f\u0440\u044f\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0442\u043e\u0447\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043e\u0448\u0438\u0431\u043a\u0430 \u044d\u0442\u043e \u0438\u043b\u0438 \u043d\u0435\u0442. \u0414\u0430\u0436\u0435 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442. \u041a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0434\u0435\u0441\u044c:<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/debugger\/debuggerkitaspect.cpp#L358\">debuggerkitaspect.cpp:358<\/a><\/p>\n<pre><code class=\"cpp\">\/\/ We have an executable path. FilePath fileName = FilePath::fromUserInput(binary); if (item.command() == fileName) {   \/\/ And it's is the path of this item.   level = std::min(item.matchTarget(tcAbi), DebuggerItem::MatchesSomewhat); } else {   \/\/ This item does not match by filename, and is an unlikely candidate.   \/\/ However, consider using it as fallback if the tool chain fits.   level = std::min(item.matchTarget(tcAbi), DebuggerItem::MatchesSomewhat); } <\/code><\/pre>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v523\/\">V523<\/a> [CWE-691] The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. debuggerkitaspect.cpp 362<\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u044b\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u043c\u043e\u0433\u0443\u0442 \u0436\u0438\u0442\u044c \u0432 \u043a\u043e\u0434\u0435 \u043e\u0447\u0435\u043d\u044c \u0438 \u043e\u0447\u0435\u043d\u044c \u0434\u043e\u043b\u0433\u043e. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0438\u0445 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043f\u0438-\u043f\u0430\u0441\u0442\u0430 \u0438\u043b\u0438 &#171;\u043c\u0435\u0441\u0442\u043d\u044b\u0439&#187; \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433.<\/p>\n<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0430\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0435\u043b\u0435\u0433\u043a\u043e. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u043e\u0441\u043a\u043e\u0447\u0438\u0442\u044c \u043d\u0430 \u043a\u043e\u0434-\u0440\u0435\u0432\u044c\u044e \u0434\u0430\u0436\u0435 \u0443 \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432. \u041d\u0435 \u0432\u0435\u0440\u0438\u0442\u0435? \u0410 \u0437\u0440\u044f. \u041c\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u043a\u0430\u043a \u0440\u0430\u0437 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0438\u0441\u0430\u043b \u0437\u0430\u043c\u0435\u0442\u043a\u0443 \u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/1068\/\">\u043c\u0435\u043b\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435<\/a>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432 \u0443\u043f\u043e\u0440 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b\u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432. \u041b\u0443\u0447\u0448\u0435 \u0443\u0436 \u0434\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u2014 \u0443 \u043d\u0435\u0433\u043e \u0445\u043e\u0442\u044c \u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0435 \u0437\u0430\u043c\u044b\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \ud83d\ude42<\/p>\n<p><em>\u041a\u0441\u0442\u0430\u0442\u0438, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u0430 \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u0432\u0430\u0441 \u043b\u044e\u0431\u0438\u043c\u044b\u0435 \u0438\u043b\u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043e\u0448\u0438\u0431\u043e\u043a? \u0421\u0443\u0449\u0438\u0439 \u043f\u0443\u0441\u0442\u044f\u043a \u0438\u043b\u0438 \u0431\u0430\u0433, \u043d\u0430 \u043e\u0442\u043b\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b\u0438 \u0446\u0435\u043b\u044b\u0435 \u0447\u0430\u0441\u044b? \u0414\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0438\u043c\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c. \ud83d\ude42<\/em><\/p>\n<h4>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432<\/h4>\n<p>\u041d\u0435 \u0441\u0443\u043f\u0435\u0440\u043a\u0440\u0443\u0442\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043d\u043e \u043c\u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430. \u0421\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0441\u0430\u043c\u0438: \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 (\u0447\u0435\u0433\u043e-\u0442\u043e) \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 (\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439). \u0414\u0430\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f. \u0412\u0441\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0437\u0430 \u043c\u0435\u043d\u044f \u0441\u0434\u0435\u043b\u0430\u043b\u0438. \ud83d\ude42<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/qmldesigner\/components\/connectioneditor\/connectionmodel.cpp#L2032\">connectionmodel.cpp:2032<\/a><\/p>\n<pre><code class=\"cpp\">if (int firstError = checkOrder() != -1) {   setInvalid(tr(\"Invalid order at %1\").arg(firstError), firstError);   return; } <\/code><\/pre>\n<p>\u041d\u0443 \u043b\u0430\u0434\u043d\u043e, \u043d\u0435 \u0432\u0441\u044e. \u041d\u0443\u0436\u043d\u043e \u0436\u0435 \u0435\u0449\u0451 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0442\u0430\u043a \u2014 \u0441 \u0432\u0438\u0434\u0443-\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043b\u043e\u0445\u043e\u0433\u043e.<\/p>\n<p>\u0411\u0435\u0434\u0430 \u043f\u043e\u0434\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430\u0441 \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438: \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <em>&#8216;A = B == C&#8217;<\/em> \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a <em>&#8216;A = (B == C)<\/em>&#8216;. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>checkOrder<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u0437\u0438\u0446\u0438\u044e, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u041e\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 -1, \u0438 \u0443\u0436\u0435 \u044d\u0442\u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (0 \u0438\u043b\u0438 1) \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e. \u041d\u0443\u0436\u043d\u043e \u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0438 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430? \u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v593\/\">V593<\/a> [CWE-783, CERT-EXP00-C] Consider reviewing the expression of the &#8216;A = B != C&#8217; kind. The expression is calculated as following: &#8216;A = (B != C)&#8217;. connectionmodel.cpp 2032<\/p>\n<p>\u0420\u0430\u0437 \u0443\u0436 \u0443 \u043d\u0430\u0441 \u0442\u0443\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u0421++17, \u0442\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f &#171;if statement with initializer&#187; \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"cpp\">if (int firstError = checkOrder(); firstError != -1) {   setInvalid(tr(\"Invalid order at %1\").arg(firstError), firstError);   return; } <\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0436 \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u0442\u044c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.<\/p>\n<h4>\u0411\u0435\u0441\u0445\u043e\u0437\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435<\/h4>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u043e\u0445\u043d\u0443\u0442\u044c \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443. \u0425\u043e\u0442\u044f \u043a\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u2014\u043e\u0448\u0438\u0431\u043a\u0430 \u0445\u043e\u0442\u044c \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u043d\u043e \u0436\u0438\u0432\u0451\u0442 \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043b\u0435\u0442. \u0421\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e <em>return<\/em> \u0438\u043b\u0438 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>boundingRect<\/em>.<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/tools\/qml2puppet\/qml2puppet\/instances\/quickitemnodeinstance.cpp#L576\">quickitemnodeinstance.cpp:576<\/a><\/p>\n<pre><code class=\"cpp\">QRectF QuickItemNodeInstance::boundingRectWithStepChilds(   QQuickItem *parentItem) const {   QRectF boundingRect = parentItem->boundingRect();    boundingRect = boundingRect.united(QRectF(QPointF(0, 0), size()));    for (QQuickItem *childItem : parentItem->childItems())   {     ....   }    if (boundingRect.isEmpty())     QRectF{0, 0, 640, 480};    \/\/ &lt;=    return boundingRect; } <\/code><\/pre>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v607\/\">V607<\/a> Ownerless expression &#8216;QRectF { 0, 0, 640, 480 }&#8217;. quickitemnodeinstance.cpp 592<\/p>\n<h4>\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432 pragma<\/h4>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441\u0440\u0430\u0437\u0443 \u0441 \u043a\u043e\u0434\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043d\u0430\u0447\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e \u0447\u0451\u043c \u0438\u0434\u0451\u0442 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440:<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/libs\/qtcreatorcdbext\/common.h#L15\">common.h:15<\/a><\/p>\n<pre><code class=\"cpp\">#ifdef __clang__ #  pragma clang diagnostic push #  pragma clang diagnostic ignored \"-Wc++11-narrowing\" #  include &lt;wdbgexts.h> #  pragma clang diagnostic pop #else #  pragma warning( disable : 4838  ) #  include &lt;wdbgexts.h> #  pragma warning( default : 4838  ) #endif \/\/ __clang__ <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u043e \u0441\u0443\u0436\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u0412 \u0446\u0435\u043b\u043e\u043c \u043d\u0438\u0447\u0435\u0433\u043e \u043f\u043b\u043e\u0445\u043e\u0433\u043e \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u0442, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0437\u0434\u0435\u0441\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <em>#pragma warning(default : X)<\/em> \u043d\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f, \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u043d\u0435\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <em>#pragma warning(disable: X)<\/em>. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u043e\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0435\u0440\u0435\u0433\u0430\u0435\u0442 \u043e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v665\/\">V665<\/a> [CERT-MSC00-C] Possibly, the usage of &#8216;#pragma warning(default: X)&#8217; is incorrect in this context. The &#8216;#pragma warning(push\/pop)&#8217; should be used instead. Check lines: 21, 23. common.h 23<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0435 <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v665\/\">V665<\/a> \u0435\u0441\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u0431\u043b\u0438. \u041f\u043e\u0437\u0432\u043e\u043b\u044e \u0441\u0435\u0431\u0435 \u043f\u0440\u043e\u0446\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e:<\/p>\n<blockquote>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u043a\u043b\u044e\u0447\u043e\u043c <em>\/Wall<\/em>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 C4061. \u0415\u0441\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c &#171;<em>#pragma warning(default : 4061)<\/em>&#171;<em>,<\/em> \u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u043c.<\/p>\n<\/blockquote>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c Clang \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043a\u0430\u043a \u0440\u0430\u0437 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0441\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u0432\u044f\u0437\u043a\u0443 <em>push<\/em>\/<em>pop<\/em>. \u0412\u043d\u0435\u0441\u0451\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435:<\/p>\n<pre><code class=\"cpp\">#ifdef __clang__ #  pragma clang diagnostic push #  pragma clang diagnostic ignored \"-Wc++11-narrowing\" #  include &lt;wdbgexts.h> #  pragma clang diagnostic pop #else #  pragma warning( push ) #  pragma warning( disable : 4838 ) #  include &lt;wdbgexts.h> #  pragma warning( pop ) #endif \/\/ __clang__ <\/code><\/pre>\n<h4>\u0418\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\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u043a\u043b\u0430\u0441\u0441\u0430<\/h4>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0447\u0430\u0441\u0442\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u044e\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043d\u0430 \u0421++. \u0414\u0430\u0436\u0435 \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u044b \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043f\u0443\u043d\u043a\u0442\u0430, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 <em>Editor<\/em> \u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u0447\u0442\u043e \u0436\u0435 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0442\u0430\u043a&#8230;<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/compilerexplorer\/compilerexplorereditor.cpp#L773\">compilerexplorereditor.cpp:773<\/a><\/p>\n<pre><code class=\"cpp\">Editor::Editor(TextEditorActionHandler &amp;actionHandler)   : m_document(new JsonSettingsDocument(&amp;m_undoStack)) {   setContext(Core::Context(Constants::CE_EDITOR_ID));   setWidget(new EditorWidget(m_document, &amp;m_undoStack, actionHandler));    connect(&amp;m_undoStack, &amp;QUndoStack::canUndoChanged, this,           [&amp;actionHandler] { actionHandler.updateActions(); });    connect(&amp;m_undoStack, &amp;QUndoStack::canRedoChanged, this,           [&amp;actionHandler] { actionHandler.updateActions(); }); } <\/code><\/pre>\n<p>\u041d\u0443 \u0438 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u0447\u0435\u0441\u0442\u043d\u043e, \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u044e \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/compilerexplorer\/compilerexplorereditor.h#L237\">compilerexplorereditor.h:237<\/a><\/p>\n<pre><code class=\"cpp\">class Editor : public Core::IEditor { public:   Editor(TextEditor::TextEditorActionHandler &amp;actionHandler);   ~Editor();    Core::IDocument *document() const override { return m_document.data(); }   QWidget *toolBar() override;    QSharedPointer&lt;JsonSettingsDocument> m_document;   QUndoStack m_undoStack;   std::unique_ptr&lt;QToolBar> m_toolBar; }; <\/code><\/pre>\n<p>\u0423\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438? \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0442\u043e\u0433\u0434\u0430 \u0438 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/quest\/kushnirenko_quiz\/\">\u043a\u0432\u0438\u0437<\/a> \u043e\u0442 \u0421\u0435\u0440\u0433\u0435\u0439 \u041a\u0443\u0448\u043d\u0438\u0440\u0435\u043d\u043a\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0439\u0442\u0438? \u0413\u043e\u0432\u043e\u0440\u044f\u0442, \u0442\u0430\u043c \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0437\u0430\u043a\u043e\u0432\u044b\u0440\u0438\u0441\u0442\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b&#8230; \u041d\u043e \u044d\u0442\u043e \u0447\u0438\u0441\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u043d\u0430\u043c\u0438. \ud83d\ude42<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043d\u0435 \u043f\u043e \u0437\u0443\u0431\u0430\u043c, \u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u043e\u0436\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u044e. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0443 \u044f\u0437\u044b\u043a\u0430 \u0421++, \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0447\u043b\u0435\u043d\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u0445 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u043b\u0430\u0441\u0441\u0435. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u043e\u043b\u0435 <em>m_undoStack<\/em> \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <em>m_document<\/em>, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/p>\n<p>\u0411\u0435\u0433\u043b\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043f\u043e \u043a\u043e\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u043b, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u043d\u043e\u0432\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 <em>m_undoStack<\/em>. \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 <em>JsonSettingsDocument<\/em>?<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/2047e64656f02b36e992af7aa15cae2a1f2c383d\/src\/plugins\/compilerexplorer\/compilerexplorereditor.cpp#L118\">compilerexplorereditor.cpp:118<\/a><\/p>\n<pre><code class=\"cpp\">JsonSettingsDocument::JsonSettingsDocument(QUndoStack *undoStack)     : m_undoStack(undoStack) {     m_undoStack->setUndoLimit(50); \/\/ Ops... Added for example     .... } <\/code><\/pre>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f. \u0416\u0430\u043b\u043a\u043e \u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \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. \u041d\u0435 \u0441\u043f\u0430\u0441\u0451\u0442 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043f\u0435\u0440\u0435\u0434 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u2014 \u043e\u043d \u0432\u043f\u043e\u043b\u043d\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439. \u041f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0435\u0449\u0451 \u043d\u0435 \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0434 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432, \u0438 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u2014 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u043f\u043e\u043b\u0435\u0439 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435.<\/p>\n<pre><code class=\"cpp\">class Editor : public Core::IEditor { public:   Editor(TextEditor::TextEditorActionHandler &amp;actionHandler);   ~Editor();    Core::IDocument *document() const override { return m_document.data(); }   QWidget *toolBar() override;    QUndoStack m_undoStack;                           \/\/ &lt;=   QSharedPointer&lt;JsonSettingsDocument> m_document;  \/\/ &lt;=   std::unique_ptr&lt;QToolBar> m_toolBar; }; <\/code><\/pre>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v670\/\">V670<\/a> [CWE-457, CERT-EXP53-CPP] The uninitialized class member &#8216;m_undoStack&#8217; is used to initialize the &#8216;m_document&#8217; member. Remember that members are initialized in the order of their declarations inside a class. compilerexplorereditor.cpp 774<\/p>\n<h4>\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0431\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0435 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e<\/h4>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0431\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0435 \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0431\u0440\u043e\u0441\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e, \u0430 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435. \u0411\u0440\u043e\u0441\u0430\u043d\u0438\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0439\u043c\u0430\u043d\u043e. \u0410 \u0435\u0449\u0451 \u044d\u0442\u043e \u0432\u044b\u043d\u0443\u0436\u0434\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0443\u044e \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <em>delete<\/em> \u0434\u043b\u044f \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430-\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/libs\/solutions\/terminal\/celliterator.cpp#L53\">celliterator.cpp:53<\/a><\/p>\n<pre><code class=\"cpp\">CellIterator &amp;CellIterator::operator-=(int n) {   ....   if (m_pos - n &lt; 0)     throw new std::runtime_error(\"-= n too big!\"); } <\/code><\/pre>\n<p>\u0411\u0435\u0433\u043b\u043e \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u043b\u0441\u044f \u043f\u043e \u043a\u043e\u0434\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u043c\u0435\u0441\u0442, \u0433\u0434\u0435 \u0431\u044b \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e. \u0421 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0434\u043e\u043b\u0435\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u043f\u0430\u0434\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0423\u0432\u044b.<\/p>\n<p>\u0421\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u0431\u0440\u043e\u0441\u0430\u043d\u0438\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e\u0433\u043e \u043b\u0443\u0447\u0448\u0435 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u043c \u043a\u043e\u0434\u0435 (\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0430\u043c\u0435\u043a\u0430\u0435\u0442). \u0410 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432 \u044d\u0442\u043e\u043c \u0435\u0449\u0451 \u0438 \u043f\u043e\u043c\u043e\u0436\u0435\u0442:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1022\/\">V1022<\/a> [CWE-755] An exception was thrown by pointer. Consider throwing it by value instead. celliterator.cpp 59<\/p>\n<h4>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 void<\/h4>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u2014 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430, \u043d\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043e\u043d\u0430 \u043d\u0435 &#171;\u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442&#187;. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043d\u0430 \u0440\u043e\u0432\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0437\u0430\u0432\u0435\u0437\u0442\u0438 \u0441\u0435\u0431\u0435 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f (UB).<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/libs\/qtcreatorcdbext\/containers.cpp#L18\">containers.cpp:18<\/a><\/p>\n<pre><code class=\"cpp\">static void *readPointerArray(ULONG64 address, unsigned count,                               const SymbolGroupValueContext &amp;ctx) {   const unsigned pointerSize = SymbolGroupValue::pointerSize();   const ULONG allocSize = pointerSize * count;   ULONG bytesRead = 0;   void *data = new unsigned char[allocSize];   const HRESULT hr = ctx.dataspaces->ReadVirtual(address, data, allocSize,                                                  &amp;bytesRead);   if (FAILED(hr) || bytesRead != allocSize)   {     delete [] data;                                                        \/\/ &lt;=     return 0;   }    return data; } <\/code><\/pre>\n<p>&#171;\u0422\u0430\u043a, \u043d\u0443 \u0438 \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u0430?&#187; \u2014 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b. \u0412\u044b\u0434\u0435\u043b\u0438\u043b\u0438 \u0436\u0435 \u0447\u0435\u0440\u0435\u0437 <em>new<\/em>, \u0443\u0434\u0430\u043b\u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 <em>delete[]<\/em>, \u0432\u0441\u0451 \u043a\u0430\u043a \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/0973\/\">\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 delete[]<\/a>&#171;. \u0427\u0442\u043e \u043e\u043f\u044f\u0442\u044c-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a?<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435 \u043d\u0430 <em>void<\/em> (\u043f\u043e\u0442\u0435\u0440\u0435 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0430). \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e, \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u0421++, \u0442\u0430\u043a\u043e\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c. \u0426\u0438\u0442\u0430\u0442\u0430 <a href=\"https:\/\/timsong-cpp.github.io\/cppwp\/n4861\/expr.delete#3\">$8.3.5\/3<\/a> \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 C++20:<\/p>\n<blockquote>\n<p>In the first alternative (delete object), if the static type of the object to be deleted is different from its dynamic type, the static type shall be a base class of the dynamic type of the object to be deleted and the static type shall have a virtual destructor or the behavior is undefined. In the second alternative (delete array) if the dynamic type of the object to be deleted differs from its static type, the behavior is undefined.<\/p>\n<\/blockquote>\n<p>\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0435\u0437\u0451\u0442, \u0447\u0442\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0438\u043f \u0438, \u043f\u043e\u0445\u043e\u0436\u0435, \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c. \u0412\u043e\u0442 \u0431\u044b\u043b \u0431\u044b \u044d\u0442\u043e \u043a\u043b\u0430\u0441\u0441, \u0434\u0430 \u0435\u0449\u0451 \u0438 \u0441 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u043e\u043c&#8230; \u0425\u043e\u0442\u044f \u043e \u0447\u0451\u043c \u044d\u0442\u043e \u044f, UB \u043d\u0430 \u0442\u043e \u0438 UB \u2014 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/1024\/\">\u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435<\/a>.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0431\u0435\u0440\u0435\u0433\u0430\u0435\u0442 \u0438 \u043e\u0442 \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v772\/\">V772<\/a> [CWE-758, CERT-MSC15-C] Calling a &#8216;delete&#8217; operator for a void pointer will cause undefined behavior. containers.cpp 26<\/p>\n<\/li>\n<li>\n<p>V772 [CWE-758, CERT-MSC15-C] Calling a &#8216;delete&#8217; operator for a void pointer will cause undefined behavior. containers.cpp 439<\/p>\n<\/li>\n<li>\n<p>V772 [CWE-758, CERT-MSC15-C] Calling a &#8216;delete&#8217; operator for a void pointer will cause undefined behavior. containers.cpp 767<\/p>\n<\/li>\n<li>\n<p>V772 [CWE-758, CERT-MSC15-C] Calling a &#8216;delete&#8217; operator for a void pointer will cause undefined behavior. containers.cpp 854<\/p>\n<\/li>\n<\/ul>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0427\u0442\u043e \u0436, \u043d\u0430 \u044d\u0442\u043e\u043c, \u0434\u0443\u043c\u0430\u044e, \u043c\u043e\u0436\u043d\u043e \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f. \u041c\u044b \u0443\u0432\u0438\u0434\u0435\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0448\u0438\u0431\u043e\u043a, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u044f \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d: \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0435 API (\u0445\u043e\u0442\u044c \u0438 \u043d\u0435 \u0431\u0435\u0437 \u0433\u0440\u0435\u0445\u043e\u0432). \u041f\u043e\u0445\u0432\u0430\u043b\u044c\u043d\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441 \u0442\u0430\u043a\u043e\u0439 \u0434\u043e\u043b\u0433\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u0437\u0430 \u0441\u043f\u0438\u043d\u043e\u0439.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u044f \u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u043f\u043e\u0434\u0430\u0440\u043e\u043a&#8230; \u0410 \u0432\u043e\u0442 \u0438 \u043e\u043d: \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438, \u043c\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u043f\u0440\u043e\u043c\u043e\u043a\u043e\u0434 QTCREATOR, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio c \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0434\u043b\u044f Qt Creator \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u043a\u043e\u0434\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/download\/?promo=qtcreator&amp;utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1099\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<p>UPD: \u041e\u0442\u043a\u0440\u044b\u043b\u0438 issue \u043d\u0430 \u0431\u0430\u0433-\u0442\u0440\u0435\u043a\u0435\u0440\u0435 Qt Creator: <a href=\"https:\/\/bugreports.qt.io\/browse\/QTCREATORBUG-30284\">QTCREATORBUG-30284<\/a>.<\/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 Gelvikh. <a href=\"https:\/\/pvs-studio.com\/en\/blog\/posts\/cpp\/1099\/\">Qt Creator* in search of Qt Creator bugs<\/a>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/companies\/pvs-studio\/articles\/790714\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u041a\u0430\u043a\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 Qt Creator \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">64.29% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0436\u0435\u0439<\/span><span class=\"tm-article-poll__answer-votes\">27<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 64.29%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">26.19% <\/span><span class=\"tm-article-poll__answer-label\">\u0422\u043e\u0439, \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 (\u043f\u0430\u043a\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0435)<\/span><span class=\"tm-article-poll__answer-votes\">11<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 26.19%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">9.52% <\/span><span class=\"tm-article-poll__answer-label\">4.x \u0438 \u043d\u0438\u0436\u0435<\/span><span class=\"tm-article-poll__answer-votes\">4<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 9.52%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 42 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.    \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 13 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/790714\/\"> https:\/\/habr.com\/ru\/articles\/790714\/<\/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-\u0442\u043e \u0442\u0430\u043a \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 \u0433\u043e\u0434 \u043a\u0430\u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0430\u0433\u0438\u043d PVS-Studio \u0434\u043b\u044f Qt Creator. \u0418 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0441\u0430\u043c\u043e\u0439 IDE. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0438\u0435 \u043d\u0435\u0434\u043e\u0440\u0430\u0437\u0443\u043c\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0447\u0435\u043c \u0436\u0438\u0432\u0451\u0442 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0440\u043e\u0434\u0438\u0432\u0448\u0430\u044f\u0441\u044f \u0441\u0440\u0435\u0434\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.<\/p>\n<figure class=\"\"><\/figure>\n<h3>\u041a\u0440\u0430\u0442\u043a\u043e \u043e Qt Creator \u0438 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432 \u0446\u0435\u043b\u043e\u043c<\/h3>\n<p>\u0425\u043e\u0442\u044c Qt Creator \u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f IDE, \u043d\u043e \u043d\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0443 \u0441\u043b\u043e\u0432 \u043e \u043d\u0435\u0439. Qt Creator \u2014 \u044d\u0442\u043e \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C++ \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 Qt. \u041e\u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f, \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0438 \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u0434\u0430, \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 \u0438 \u043f\u0440\u043e\u0447\u0438\u043c\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438. Qt Creator \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u044f Windows, macOS \u0438 Linux. \u041e\u0441\u043e\u0431\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e Qt <a href=\"https:\/\/www.qt.io\/stock\/qt-acquires-axivion-gmbh-to-further-strengthen-its-marketleading-offering-in-quality-assurance-1660229100000-3140057\">\u043f\u0440\u0438\u043e\u0431\u0440\u0435\u043b\u0430<\/a> \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044e-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0438 \u0443\u0436\u0435 \u0443\u0441\u043f\u0435\u043b\u0430 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0432 \u0441\u0432\u043e\u044e IDE. \u0411\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430. \ud83d\ude42<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u044f \u0443\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u043d\u0435\u043a\u043e\u0435 &#171;\u043f\u0435\u0440\u0435\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0435&#187; \u0432 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043a \u0441\u0442\u0430\u0442\u044c\u0435? \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u2014 \u043d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 5, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u044f\u0432\u043d\u043e \u0440\u0435\u0448\u0438\u043b\u0438 \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u043b\u043e\u043f\u0430\u0442\u0438\u0442\u044c IDE \u0434\u043b\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c. \u041c\u043d\u0435, \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443, \u044d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0440\u0430\u0432\u044f\u0442\u0441\u044f: \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445 Qt Creator \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0431\u044f \u043d\u0435 \u0445\u0443\u0436\u0435, \u0430 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0434\u0430\u0436\u0435 \u043b\u0443\u0447\u0448\u0435 Visual Studio \u0438 VS Code (\u043f\u043e \u043c\u043e\u0438\u043c \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043e\u0449\u0443\u0449\u0435\u043d\u0438\u044f\u043c. \u0416\u0435\u043b\u0430\u044e\u0449\u0438\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438). \u0415\u0441\u0442\u044c, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0438 \u0437\u0430 \u0447\u0442\u043e \u043f\u043e\u0440\u0443\u0433\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 (\u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 API \u0434\u043b\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432), \u043d\u043e, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u043d\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/summary>\n<div class=\"spoiler__content\">\n<ul>\n<li>\n<p>\u0412 \u0446\u0435\u043b\u044f\u0445 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043a\u043e\u0434, \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0439\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435, \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u043d\u0451\u043d \u043d\u0430 &#8230;. (\u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u043e\u0447\u043a\u0438), \u0430 \u0441\u0430\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u044b \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u043c \u0432\u0438\u0434\u0430 <em>\/\/ &lt;=<\/em>.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043a\u043e\u0434 \u043d\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u0441\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0435-\u0433\u0434\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043b\u043e\u0433\u0438\u043a\u0438 (\u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u0432\u0430\u0436\u043d\u043e).<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0436\u0435\u043b\u0430\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u0441\u043d\u0430\u0431\u0436\u0451\u043d \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0430\u0441\u044c <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/commit\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\">\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430\u044f<\/a> \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0440\u0435\u043b\u0438\u0437\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f (12.0.0) \u0441 GitHub. \u0421\u0441\u044b\u043b\u043a\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0443\u0436\u0435 \u043d\u0435 \u0440\u0430\u0437 \u0431\u044b\u0432\u0430\u043b\u043e, \u0447\u0442\u043e \u0442\u0435\u0433\u0438 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u043b\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u0443 (\u0434\u0430, \u0432\u043a\u0443\u0441\u043e\u0432\u0449\u0438\u043d\u0430). \u041a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043d\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435, \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0433\u0443\u0442 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0410 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0438 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434 \u0437\u0430\u043e\u0434\u043d\u043e. ;-).<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/details>\n<h3>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u0430\u043d\u0430\u043b\u0438\u0437\u0430<\/h3>\n<p>\u042f \u0436\u0435 \u0443\u0436\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 PVS-Studio \u0434\u043b\u044f Qt Creator, \u0434\u0430? \u0418\u043c\u0435\u043d\u043d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0435\u043c\u0443 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0435 Qt Creator \u0441\u043e \u0437\u0432\u0451\u0437\u0434\u043e\u0447\u043a\u043e\u0439, \u0434\u0430. \u0418\u0442\u0430\u043a, \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c Qt Creator \u0438\u0437 Qt Creator \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043b\u0430\u0433\u0438\u043d\u0430 PVS-Studio \u0434\u043b\u044f Qt Creator. \u0427\u0442\u043e \u0436\u0435 \u043d\u0430\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f? \u0420\u0435\u0446\u0435\u043f\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442:<\/p>\n<ol>\n<li>\n<p>\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0432\u0435\u0436\u0438\u0439 <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/download\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1099\">\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432<\/a> PVS-Studio (7.28 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438);<\/p>\n<\/li>\n<li>\n<p>\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043f\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/manual\/6648\/\">\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e \u043f\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?promo=qtcreator&amp;utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1099\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a> \u0438 \u0432\u0432\u043e\u0434\u0438\u043c \u0435\u0451 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 Qt Creator \u0441 <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\">GitHub<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0433\u043e \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0430\u043d\u0430\u043b\u0438\u0437;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v1042\/\">V1042<\/a>) \u0438 \u043e\u0442\u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043d\u0430 third-party \u043a\u043e\u0434\u0435;<\/p>\n<\/li>\n<li>\n<p>PROFIT! \u0418\u0434\u0451\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0446\u0435\u043f\u0442\u0443, \u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435 \u0443 \u0432\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"\"><\/figure>\n<h3>\u041f\u043e\u0448\u043b\u0438 \u043e\u0448\u0438\u0431\u043e\u0447\u043a\u0438<\/h3>\n<h4>\u0423\u0442\u0435\u0447\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438<\/h4>\n<p>\u041d\u0430\u0447\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043f\u0443\u043d\u043a\u0442\u0430, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0443\u0442\u0435\u0447\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0432 \u0442\u0435\u043c\u0435, \u043a\u0440\u0430\u0442\u043a\u043e \u043f\u043e\u044f\u0441\u043d\u044e \u0441\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0412 Qt \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 <a href=\"https:\/\/doc.qt.io\/qt-6\/objecttrees.html\">\u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f<\/a> \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438, \u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0430\u043c\u044f\u0442\u044c \u043d\u0435 \u0443\u0442\u0435\u043a\u043b\u0430, \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0442\u0430\u043a \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f (\u043f\u0440\u0438\u0432\u0435\u0442, <em>setParent<\/em> \u0438 <em>layout<\/em>&#8216;\u044b). \u041d\u0435 \u0431\u0443\u0434\u0443 \u043b\u0443\u043a\u0430\u0432\u0438\u0442\u044c, \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u0432\u044b\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e. \u041d\u043e \u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043d\u0438\u0445, \u043f\u043e\u043a\u0430 \u043c\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439. \ud83d\ude42<\/p>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0443\u0442\u0435\u0447\u043a\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0443\u0442\u0438 \u0434\u043e \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u043e \u043f\u0430\u0434\u0435\u043d\u0438\u0438 IDE.<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/debugger\/debuggerplugin.cpp#L1813\">main.cpp:1813<\/a><\/p>\n<pre><code class=\"cpp\">QString crashReportsPath() {   std::unique_ptr&lt;Utils::QtcSettings> settings(createUserSettings());   QFileInfo(settings->fileName()).path() + \"\/crashpad_reports\";   if (Utils::HostOsInfo::isMacHost())     return QFileInfo(createUserSettings()->fileName()).path() +                      \"\/crashpad_reports\";   else     return QCoreApplication::applicationDirPath() + '\/' +            RELATIVE_LIBEXEC_PATH + \"crashpad_reports\"; } <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u0441 \u0442\u043e\u0436\u0435 \u0441\u043c\u0443\u0442\u0438\u043b\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>createUserSettings<\/em>, \u0442\u043e \u0443 \u0432\u0430\u0441 \u044f\u0432\u043d\u043e \u043d\u0430\u043c\u0451\u0442\u0430\u043d \u0433\u043b\u0430\u0437 \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043e\u0448\u0438\u0431\u043e\u043a. \u0412\u044b \u043d\u0430 \u0432\u0435\u0440\u043d\u043e\u043c \u043f\u0443\u0442\u0438. \u0412 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u0432 <em>std::unique_ptr<\/em> \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438. \u0410 \u0432\u043e\u0442 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437 \u2014 \u0432 \u0432\u0435\u0442\u043a\u0435 \u0434\u043b\u044f macOS \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0443\u0442\u0438 \u0434\u043e \u0444\u0430\u0439\u043b\u0430, \u043e \u0447\u0451\u043c \u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v773\/\">V773<\/a> [CWE-401, CERT-MEM31-C, CERT-MEM51-CPP] The return value of the &#8216;createUserSettings&#8217; function is not saved. A memory leak is possible. main.cpp 422<\/p>\n<p>&#171;\u0410 \u0442\u043e\u0447\u043d\u043e \u043b\u0438 \u0435\u0441\u0442\u044c \u0431\u0435\u0434\u0430?&#187; \u2014 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u0435 \u0432\u044b. \u0422\u043e\u0447\u043d\u043e. \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>createUserSettings<\/em> \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/app\/main.cpp#L274\">main.cpp:274<\/a><\/p>\n<pre><code class=\"cpp\">static Utils::QtcSettings *createUserSettings() {     return new Utils::QtcSettings(         QSettings::IniFormat,         QSettings::UserScope,         QLatin1String(Core::Constants::IDE_SETTINGSVARIANT_STR),         QLatin1String(Core::Constants::IDE_CASED_ID)); } <\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0434\u0432\u0430 \u0441\u043b\u0443\u0447\u0430\u044f, \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c \u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u043b\u0438 <em>parent<\/em>&#8216;\u043e\u0432 \u2014 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0449\u0438\u0445 \u0437\u0430 \u0438\u0445 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u2014 \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u0431\u044b\u043b\u0438 \u043e\u0431 \u0438\u0445 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438. \u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u0435\u043d \u2014\u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u0443\u0442\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0445\u043e\u0442\u044f \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445 \u0432\u0441\u0451 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e:<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/debugger\/debuggerplugin.cpp#L1813\">debuggerplugin.cpp:1813<\/a><\/p>\n<pre><code class=\"cpp\">void DebuggerPlugin::attachToProcess(....) {   ....   auto kitChooser = new KitChooser;   kitChooser->setShowIcons(true);   kitChooser->populate();   Kit *kit = kitChooser->currentKit();    dd->attachToRunningProcess(kit, processInfo, false); } <\/code><\/pre>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0431\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0434\u0430\u043b\u044f\u043b\u0430\u0441\u044c \u0432 \u0434\u0435\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435, \u043d\u043e, \u0443\u0432\u044b, \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0443\u0441\u0442\u0430. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0437\u0434\u0435\u0441\u044c \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0443\u043c\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u043d\u043e \u0437\u0430\u0431\u044b\u043b\u0438&#8230;<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/qmldesigner\/components\/curveeditor\/curveeditorview.cpp#L24\">curveeditorview.cpp:43<\/a><\/p>\n<pre><code class=\"cpp\">CurveEditorView::CurveEditorView(   ExternalDependenciesInterface &amp;externalDepoendencies )   : AbstractView{externalDepoendencies}   , m_block(false)   , m_model(new CurveEditorModel())   , m_editor(new CurveEditor(m_model)) {   .... }  CurveEditorView::~CurveEditorView() {} <\/code><\/pre>\n<p>\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>V773 [CWE-401, CERT-MEM31-C, CERT-MEM51-CPP] Visibility scope of the &#8216;kitChooser&#8217; pointer was exited without releasing the memory. A memory leak is possible. debuggerplugin.cpp 1825<\/p>\n<\/li>\n<li>\n<p>V773 [CWE-401, CERT-MEM31-C, CERT-MEM51-CPP] The &#8216;m_model&#8217; pointer was not released in destructor. A memory leak is possible. curveeditorview.cpp 43<\/p>\n<\/li>\n<\/ul>\n<h4>\u041a\u043b\u0430\u0441\u0441\u0438\u043a\u0430 \u0436\u0430\u043d\u0440\u0430<\/h4>\n<p>&#171;\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0443 \u0436\u0430\u043d\u0440\u0430&#187;, \u2014 \u0441\u043a\u0430\u0437\u0430\u043b \u0431\u044b \u044f \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043e\u0434\u043d\u043e \u041d\u041e. \u041f\u0440\u043e\u0435\u043a\u0442 \u0443 \u043d\u0430\u0441 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0421++17 \u0438 <em>std::optional<\/em> \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u0445\u0432\u0430\u043b\u044c\u043d\u043e. \u0416\u0430\u043b\u043a\u043e \u0442\u043e\u043b\u044c\u043a\u043e, \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430 \u0442\u043e \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438, \u0447\u0442\u043e \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0441\u0430\u043c\u0438? \ud83d\ude09<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/libs\/utils\/aspects.cpp#L2189\">aspects.cpp:2189<\/a><\/p>\n<pre><code class=\"cpp\">void IntegerAspect::addToLayout(Layouting::LayoutItem &amp;parent) {   QTC_CHECK(!d->m_spinBox);   d->m_spinBox = createSubWidget&lt;QSpinBox>();   d->m_spinBox->setDisplayIntegerBase(d->m_displayIntegerBase);   d->m_spinBox->setPrefix(d->m_prefix);   d->m_spinBox->setSuffix(d->m_suffix);   d->m_spinBox->setSingleStep(d->m_singleStep);   d->m_spinBox->setSpecialValueText(d->m_specialValueText);   if (d->m_maximumValue &amp;&amp; d->m_maximumValue)     d->m_spinBox->setRange(       int(d->m_minimumValue.value() \/ d->m_displayScaleFactor),       int(d->m_maximumValue.value() \/ d->m_displayScaleFactor)     );    \/\/ Must happen after setRange()   d->m_spinBox->setValue(int(value() \/ d->m_displayScaleFactor));    addLabeledItem(parent, d->m_spinBox);   connect(d->m_spinBox.data(), &amp;QSpinBox::valueChanged,           this, &amp;IntegerAspect::handleGuiChanged); } <\/code><\/pre>\n<figure class=\"\"><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 <em>m_maximumValue<\/em> \u0432\u043c\u0435\u0441\u0442\u043e <em>m_minimumValue<\/em>, \u0442\u043e \u043c\u043e\u0433\u0443 \u0432\u0430\u0441 \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u0438\u0442\u044c. \u041d\u0435 \u0442\u0430\u043a-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0434\u0430? \u0414\u0443\u043c\u0430\u044e, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Qt Creator \u0442\u043e\u0436\u0435 \u0441\u043e\u0433\u043b\u0430\u0441\u044f\u0442\u0441\u044f, \u0432\u0435\u0434\u044c \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043a\u043e\u0434 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d \u0447\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u0442\u043e\u043c \u0436\u0435 \u0444\u0430\u0439\u043b\u0435:<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/libs\/utils\/aspects.cpp#L2291\">aspects.cpp:2291<\/a><\/p>\n<pre><code class=\"cpp\">void DoubleAspect::addToLayout(LayoutItem &amp;builder) {   QTC_CHECK(!d->m_spinBox);   d->m_spinBox = createSubWidget&lt;QDoubleSpinBox>();   d->m_spinBox->setPrefix(d->m_prefix);   d->m_spinBox->setSuffix(d->m_suffix);   d->m_spinBox->setSingleStep(d->m_singleStep);   d->m_spinBox->setSpecialValueText(d->m_specialValueText);   if (d->m_maximumValue &amp;&amp; d->m_maximumValue)     d->m_spinBox->setRange(d->m_minimumValue.value(),                            d->m_maximumValue.value());    bufferToGui(); \/\/ Must happen after setRange()!   addLabeledItem(builder, d->m_spinBox);   connect(d->m_spinBox.data(), &amp;QDoubleSpinBox::valueChanged,           this, &amp;DoubleAspect::handleGuiChanged); } <\/code><\/pre>\n<p><em>\u041a \u0441\u043b\u043e\u0432\u0443, \u0430 \u0447\u0430\u0441\u0442\u043e \u043b\u0438 \u0432\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0430\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c IntelliSense (\u0438\u043b\u0438 \u0435\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433)? \u0427\u0442\u043e-\u0442\u043e \u043c\u043d\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u043f\u043e\u0441\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438. \u0420\u0430\u043d\u044c\u0448\u0435 \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u043b\u043e\u0432\u0438\u043b \u0441\u0435\u0431\u044f \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0447\u0430\u0441\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043f\u043e \u0437\u0430\u043f\u0430\u0440\u043a\u0435 \u0442\u044b\u043a\u043d\u0443\u043b Enter \u0438 \u043f\u043e\u0448\u0451\u043b \u0434\u0430\u043b\u044c\u0448\u0435 \u2014 \u043c\u044b\u0441\u043b\u044c-\u0442\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c. \u041f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0441. \ud83d\ude42<\/em><\/p>\n<p>\u0410\u0445 \u0434\u0430, \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>V501 [CWE-571] There are identical sub-expressions to the left and to the right of the &#8216;&amp;&amp;&#8217; operator: d->m_maximumValue &amp;&amp; d->m_maximumValue aspects.cpp 2198<\/p>\n<\/li>\n<li>\n<p>V501 [CWE-571] There are identical sub-expressions to the left and to the right of the &#8216;&amp;&amp;&#8217; operator: d->m_maximumValue &amp;&amp; d->m_maximumValue aspects.cpp 2299<\/p>\n<\/li>\n<\/ul>\n<h4>\u041a\u043e\u043d\u043a\u0443\u0440\u0441 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/h4>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0435\u0449\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u044f\u0442\u044c \u0433\u043b\u0430\u0437\u043a\u0438 \u0438 \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0444\u043b\u0430\u0433\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u041d\u0443 \u0438 \u043a\u0443\u0434\u0430 \u0436\u0435 \u0431\u0435\u0437 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a: &#171;\u044f\u0438\u043d\u0435\u043d\u0432\u0430\u0440\u0441 \u0438\u0438\u0446\u043a\u043d\u0443\u0444 \u0432 \u044b\u0442\u0430\u043a\u0438\u043b\u0431\u0443\u0434 \u0438\u0440\u0442\u043e\u043c\u0421&#187;. \u0414\u0430, \u043d\u0435 \u0432\u0441\u0451 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e.<\/p>\n<p>\u0424\u0430\u0439\u043b <a href=\"https:\/\/github.com\/qt-creator\/qt-creator\/blob\/27055e4c3904b09385c96a2ac336aef87f3a4f8e\/src\/plugins\/projectexplorer\/gcctoolchain.cpp#L474\">gcctoolchain.cpp:474<\/a><\/p>\n<pre><code class=\"cpp\">\/\/ For querying operations such as -dM static QStringList<\/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-367022","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/367022","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=367022"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/367022\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=367022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=367022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=367022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}