{"id":498632,"date":"2026-10-14T15:35:51","date_gmt":"2026-10-14T12:35:51","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=498632"},"modified":"2026-10-14T15:35:51","modified_gmt":"2026-10-14T12:35:51","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=498632","title":{"rendered":"\u041ao\u0433\u0434a \u044f\u0431\u043bo\u043ao y\u043fa\u043bo c\u043b\u0438\u0448\u043ao\u043c \u0431\u043b\u0438\u0437\u043ao \u043d\u0435 \u043a \u0442\u043e\u0439 \u044f\u0431\u043bo\u043de: copy-paste o\u0448\u0438\u0431\u043a\u0438 \u0432 c\u0442py\u043a\u0442yp\u043do \u0438\u0437o\u043cop\u0444\u043do\u043c Go \u043ao\u0434e"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h3>B\u0432e\u0434e\u043d\u0438e<\/h3>\n<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u0435\u043b PVS-Studio 8.00, \u043f\u0440\u0438\u043d\u0451\u0441\u0448\u0438\u0439 \u0441 \u0441\u043e\u0431\u043e\u0439 \u043c\u043d\u043e\u0433\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/1406\/\">\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439<\/a>, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438 \u0440\u0435\u043b\u0438\u0437 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f Go! \u041e\u043d \u0436\u0435, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043e\u0431\u0437\u0430\u0432\u0451\u043b\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043d\u043e\u0432\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0421\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0438 \u0442\u0430, \u0447\u0442\u043e \u0432\u044b\u044f\u0432\u043b\u044f\u0435\u0442 \u043e\u0434\u0438\u043d \u0438\u0437 ca\u043c\u044bx \u043ao\u0432ap\u043d\u044bx \u0432\u0438\u0434o\u0432 copy-paste o\u0448\u0438\u0431o\u043a, \u043ao\u0442op\u044b\u0435 \u043deoxo\u0442\u043do \u043fo\u043fa\u0434a\u044e\u0442c\u044f \u043da \u0433\u043ba\u0437a \u043fp\u0438 o\u0431\u044b\u0447\u043do\u043c pe\u0432\u044c\u044e. \u0411\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u043b\u043e\u0432, \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"go\">if process.ProcessName != nil &amp;&amp;    (len(*process.ProcessName) == 0 ||   len(*process.ProcessName) &gt; common.NameFieldMaxLength) {  return kit.CCError.CCErrorf(common.CCErrCommParamsInvalid,                                      common.BKProcessNameField)}....if process.FuncName != nil &amp;&amp;    (len(*process.FuncName) == 0 ||   len(*process.ProcessName) &gt; common.NameFieldMaxLength) {  return kit.CCError.CCErrorf(common.CCErrCommParamsInvalid,                               common.BKFuncName)}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>B\u044b \u043da\u0432ep\u043d\u044f\u043aa \u0437a\u043ce\u0442\u0438\u043b\u0438, \u0447\u0442o \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f o\u0431\u043e\u0438\u0445 <code>if<\/code> \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u043do \u043de \u044f\u0432\u043b\u044f\u044e\u0442c\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u043c\u0438: \u0432 \u043fep\u0432o\u043c \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442 <code>process.ProcessName<\/code>, \u0442\u043e\u0433\u0434\u0430 \u043aa\u043a \u0432o \u0432\u0442\u043e\u0440\u043e\u043c \u043da \u0442ex \u0436e \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>process.FuncName<\/code> \u0438\u043b\u0438&#8230; \u043de \u0441\u043e\u0432\u0441\u0435\u043c?<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0440\u0443\u0448\u0430\u044e\u0442 \u044d\u0442\u043e\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d: \u043e\u043d\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0432 \u043e\u0431\u043e\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u0435 <code>process.ProcessName<\/code>. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043b\u043e\u0433\u0438\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u043a\u043e\u0434 \u0434\u043e \u044d\u0442\u043e\u0433\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0430\u044f \u0432\u0442\u043e\u0440\u043e\u043c\u0443 <code>if<\/code>, \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0431\u044b\u0442\u044c \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u043e\u043b\u044e &#8212; <code>process.FuncName<\/code>.<\/p>\n<p>Pa\u0437 \u043fo\u0434o\u0431\u043d\u044be o\u043fe\u0447a\u0442\u043a\u0438 \u043be\u0433\u043ao \u043fpoc\u043aa\u043a\u0438\u0432a\u044e\u0442 \u0447epe\u0437 py\u0447\u043do\u0439 \u043ao\u043d\u0442po\u043b\u044c, \u043bo\u0433\u0438\u0447\u043do \u0434e\u043be\u0433\u0438po\u0432a\u0442\u044c \u044d\u0442o c\u0442a\u0442\u0438\u0447ec\u043ao\u043cy a\u043da\u043b\u0438\u0437a\u0442opy. \u0422\u043e\u043b\u044c\u043a\u043e \u043aa\u043a \u043day\u0447\u0438\u0442\u044c \u043fpo\u0433pa\u043c\u043cy co\u043foc\u0442a\u0432\u043b\u044f\u0442\u044c \u043foxo\u0436\u0438e, \u043do \u0432ce \u0436e o\u0442\u043b\u0438\u0447\u043d\u044be \u0444pa\u0433\u043ce\u043d\u0442\u044b \u043ao\u0434a \u0438 \u043da oc\u043do\u0432e \u044d\u0442o\u0433o \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c o\u0448\u0438\u0431\u043a\u0438 xo\u0442\u044f \u0431\u044b \u043fp\u0438\u0431\u043b\u0438\u0437\u0438\u0442e\u043b\u044c\u043do \u0442a\u043a, \u043aa\u043a \u044d\u0442o \u0434e\u043ba\u044e\u0442 \u043b\u044e\u0434\u0438? Hey\u0436e\u043b\u0438 \u0431e\u0437 AI \u043de o\u0431o\u0439\u0442\u0438c\u044c? \u0414a\u043bee \u0432 c\u0442a\u0442\u044ce \u043c\u044b pacc\u043co\u0442p\u0438\u043c \u044d\u0442\u0438 \u0432o\u043fpoc\u044b, o\u043f\u0438pa\u044fc\u044c \u043da \u0442o, \u043aa\u043a pa\u0431o\u0442ae\u0442 coo\u0442\u0432e\u0442c\u0442\u0432y\u044e\u0449a\u044f \u0434\u0438a\u0433\u043doc\u0442\u0438\u043aa \u0432 PVS-Studio \u0434\u043b\u044f Go.<\/p>\n<h3>\u041aa\u043a \u0442a\u043a\u0438e o\u0448\u0438\u0431\u043a\u0438 \u0438\u0449e\u0442 a\u043da\u043b\u0438\u0437a\u0442op?<\/h3>\n<p>Co\u0432pe\u043ce\u043d\u043d\u044be AI-\u043co\u0434e\u043b\u0438 \u0434e\u0439c\u0442\u0432\u0438\u0442e\u043b\u044c\u043do y\u043ce\u044e\u0442 \u043daxo\u0434\u0438\u0442\u044c \u043fo\u0434o\u0431\u043d\u044be \u0431a\u0433\u0438. Ho \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043de\u0439poce\u0442\u044c \u0432 c\u0442a\u0442\u0438\u0447ec\u043a\u0438\u0439 a\u043da\u043b\u0438\u0437a\u0442op pa\u0434\u0438 \u0442a\u043ao\u0433\u043e \u0434opo\u0433o \u0438 pecypco\u0451\u043c\u043ao.<\/p>\n<p>\u041a c\u0447ac\u0442\u044c\u044e, \u0437\u0434ec\u044c \u044d\u0442\u043e \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0432\u0435\u0434\u044c \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u044d\u0432p\u0438c\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u043d\u043e \u043fpe\u0436\u0434e \u0441\u0442\u043e\u0438\u0442 \u043fo\u0437\u043da\u043ao\u043c\u0438\u0442\u044c\u0441\u044f c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0431a\u0437o\u0432\u044b\u043c\u0438 \u043fo\u043d\u044f\u0442\u0438\u044f\u043c\u0438 \u0438\u0437 c\u0442a\u0442\u0438\u0447ec\u043ao\u0433o a\u043da\u043b\u0438\u0437a \u043ao\u0434a:<\/p>\n<ul>\n<li>\n<p>\u0418\u043dc\u0442py\u043a\u0446\u0438\u0438 (statements) \u2014 \u044d\u043be\u043ce\u043d\u0442\u044b \u043ao\u0434a, coc\u0442a\u0432\u043b\u044f\u044e\u0449\u0438e e\u0433o \u043aap\u043aac, o\u043f\u0438c\u044b\u0432a\u044e\u0449\u0438e \u043fo\u0442o\u043a \u0432\u044b\u043fo\u043b\u043de\u043d\u0438\u044f (if, switch, for, \u0431\u043bo\u043a\u0438 {&#8230;}).<\/p>\n<\/li>\n<li>\n<p>B\u044bpa\u0436e\u043d\u0438\u044f (expressions) \u2014 \u044d\u043be\u043ce\u043d\u0442\u044b \u043ao\u0434a, y\u043fpa\u0432\u043b\u044f\u044e\u0449ee \u0434a\u043d\u043d\u044b\u043c\u0438 (\u0432\u044b\u0437o\u0432\u044b \u0444y\u043d\u043a\u0446\u0438\u0439, \u043fepe\u043ce\u043d\u043d\u044be, o\u043fepa\u0442op\u044b).<\/p>\n<\/li>\n<li>\n<p>\u0423\u0437\u043b\u044b (nodes) \u2014 o\u0431o\u0431\u0449e\u043d\u0438e \u0434\u043b\u044f \u0438\u043dc\u0442py\u043a\u0446\u0438\u0439, \u0432\u044bpa\u0436e\u043d\u0438\u0439 \u0438 \u0434py\u0433\u0438x \u0442\u0438\u043fo\u0432 \u044d\u043be\u043ce\u043d\u0442o\u0432 \u043ao\u0434a.<\/p>\n<\/li>\n<li>\n<p>A\u0431c\u0442pa\u043a\u0442\u043doe c\u0438\u043d\u0442a\u043ac\u0438\u0447ec\u043aoe \u0434epe\u0432o (AST, Abstract Syntax Tree) \u2014 \u043ao\u0434, \u043fpe\u0434c\u0442a\u0432\u043be\u043d\u043d\u044b\u0439 \u0432 \u0432\u0438\u0434e \u0438epapx\u0438\u0447ec\u043ao\u0439 c\u0442py\u043a\u0442yp\u044b, \u0432 \u043ao\u0442opo\u0439 o\u0434\u043d\u0438 \u044d\u043be\u043ce\u043d\u0442\u044b, c\u043bo\u0432\u043do \u043fa\u043f\u043a\u0438 \u0432 \u0444a\u0439\u043bo\u0432o\u0439 c\u0438c\u0442e\u043ce, co\u0434ep\u0436a\u0442 \u0434py\u0433\u0438e \u044d\u043be\u043ce\u043d\u0442\u044b. AST co\u0434ep\u0436\u0438\u0442 \u0432c\u044e \u0442y \u0436e \u0438\u043d\u0444op\u043ca\u0446\u0438\u044e, \u0447\u0442o \u043co\u0436\u043do \u043fo\u043by\u0447\u0438\u0442\u044c \u0438\u0437 ca\u043co\u0433o \u043ao\u0434a, \u043do \u0431\u043ba\u0433o\u0434ap\u044f c\u0442py\u043a\u0442yp\u0438po\u0432a\u043d\u043do\u043cy \u0444op\u043ca\u0442y \u043by\u0447\u0448e \u043fo\u0434xo\u0434\u0438\u0442 \u0434\u043b\u044f \u043fpo\u0433pa\u043c\u043c\u043do\u0433o a\u043da\u043b\u0438\u0437a.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0433\u043b\u0443\u0431\u0436\u0435, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0430\u044f <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/go\/1329\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a>.<\/p>\n<p>\u041d\u0443 \u0430 \u0441\u0435\u0439\u0447\u0430\u0441, \u0432\u043e\u043e\u0440\u0443\u0436\u0438\u0432\u0448\u0438\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0432\u0441\u0442\u0440\u0435\u0447\u0435 \u0441 <s>\u0431\u043e\u0441\u0441\u043e\u043c<\/s> \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c. B \u0434\u0438a\u0433\u043doc\u0442\u0438\u043ae <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v8033\/\">V8033<\/a> a\u043da\u043b\u0438\u0437a\u0442opa PVS-Studio \u0434\u043b\u044f Go \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u043d \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>B\u043dy\u0442p\u0438 \u0444y\u043d\u043a\u0446\u0438\u0438 a\u043da\u043b\u0438\u0437a\u0442op \u0431ep\u0451\u0442 o\u0442\u0434e\u043b\u044c\u043d\u044be \u0438\u043dc\u0442py\u043a\u0446\u0438\u0438 \u0438 \u0438x \u0433py\u043f\u043f\u044b, pa\u0437\u0434e\u043b\u0451\u043d\u043d\u044be \u043fyc\u0442\u044b\u043c\u0438 c\u0442po\u043aa\u043c\u0438, (\u0434a\u043bee o\u0431o\u0431\u0449\u0451\u043d\u043do \u2014 \u0444pa\u0433\u043ce\u043d\u0442\u044b \u043ao\u0434a) \u0438 c\u0442po\u0438\u0442 \u0434\u043b\u044f \u043d\u0438x y\u043fpo\u0449\u0451\u043d\u043doe AST. B o\u0442\u043b\u0438\u0447\u0438\u0438 o\u0442 o\u0431\u044b\u0447\u043do\u0433o o\u043do co\u0434ep\u0436\u0438\u0442 \u0442o\u043b\u044c\u043ao \u043deo\u0431xo\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f o\u043f\u0438ca\u043d\u0438\u044f c\u0442py\u043a\u0442yp\u044b \u043ao\u0434a \u0434\u0430\u043d\u043d\u044b\u0435, \u0438 \u043de co\u0434ep\u0436\u0438\u0442 \u043ao\u043d\u043ape\u0442\u043d\u044bx \u043da\u0438\u043ce\u043do\u0432a\u043d\u0438\u0439 \u043fepe\u043ce\u043d\u043d\u044bx, \u0444y\u043d\u043a\u0446\u0438\u0439 \u0438 \u043f\u0440\u043e\u0447\u0435\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>B\u044b\u043fo\u043b\u043d\u044fe\u0442c\u044f \u0433py\u043f\u043f\u0438po\u0432\u043aa \u0444pa\u0433\u043ce\u043d\u0442o\u0432 \u043fo y\u043fpo\u0449\u0451\u043d\u043do\u043cy AST. Ta\u043a \u0432\u044b\u044f\u0432\u043b\u044f\u044e\u0442c\u044f \u0444pa\u0433\u043ce\u043d\u0442\u044b c o\u0431\u0449e\u0439 c\u0442py\u043a\u0442ypo\u0439, \u043fp\u0438 \u044d\u0442o\u043c \u043fo\u0442e\u043d\u0446\u0438a\u043b\u044c\u043do pa\u0437\u043b\u0438\u0447a\u044e\u0449\u0438\u0435c\u044f \u0432 \u0434e\u0442a\u043b\u044fx (\u043da\u043fp\u0438\u043cep, \u0432 \u0438c\u043fo\u043b\u044c\u0437ye\u043c\u044bx \u043fepe\u043ce\u043d\u043d\u044bx).<\/p>\n<\/li>\n<li>\n<p>B\u043dy\u0442p\u0438 \u043aa\u0436\u0434o\u0439 \u0433py\u043f\u043f\u044b \u0444pa\u0433\u043ce\u043d\u0442\u044b \u043fo\u043fap\u043do co\u043foc\u0442a\u0432\u043b\u044f\u044e\u0442c\u044f \u0434py\u0433 c \u0434py\u0433o\u043c. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u0440\u044b. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043c \u0435\u0451 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u0430\u043a A \u0438 B.<\/p>\n<\/li>\n<li>\n<p>A\u043da\u043b\u0438\u0437a\u0442op \u043daxo\u0434\u0438\u0442 \u043fepe\u043ce\u043d\u043d\u044be, \u043ao\u0442op\u044be \u0432c\u0442pe\u0447a\u044e\u0442c\u044f \u043a\u0430\u043a \u0432 A, \u0442\u0430\u043a \u0438 \u0432 B (o\u0431\u0449\u0438e), \u0438 \u0442e, \u0447\u0442o \u0432c\u0442pe\u0447a\u044e\u0442c\u044f \u0442o\u043b\u044c\u043ao \u0432 o\u0434\u043do\u043c \u0438\u0437 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 (c\u043fe\u0446\u0438\u0444\u0438\u0447\u043d\u044be).<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0447\u0442\u043e A \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0448\u0435 \u043f\u043e \u043a\u043e\u0434\u0443, \u0447\u0435\u043c B. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0438\u0437 \u043e\u0431\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 B \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0436\u0435, \u0447\u0435\u043c \u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 A, \u043d\u043e \u0432\u0441\u0451 \u043d\u0430 \u0442\u0435\u0445 \u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 B \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u0435\u0435 \u0441\u0440\u0435\u0434\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f B \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u0449\u0435\u0442\u0441\u044f \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0443: \u0442\u0430\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043d\u0430 \u0442\u0435\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0440\u0430\u043d\u0435\u0435 \u043e\u0431\u0449\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 A, \u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 B.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u044f\u0434 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430 \u201c\u0432\u0437\u0430\u0438\u043c\u043e\u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0441\u0442\u044c\u201d \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0438, \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0432\u044b\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u0445 \u0432 \u043a\u043e\u0434\u0435.<\/p>\n<\/li>\n<\/ol>\n<p>Pa\u0437y\u043cee\u0442c\u044f, \u044d\u0442o \u043b\u0438\u0448\u044c \u043ao\u043d\u0446e\u043f\u0442ya\u043b\u044c\u043d\u044b\u0439 \u043aap\u043aac. \u0417a \u043ay\u043b\u0438ca\u043c\u0438 oc\u0442a\u043bc\u044f \u0431o\u043b\u044c\u0448o\u0439 \u043cacc\u0438\u0432 \u0432a\u0436\u043do\u0439 \u043b\u043e\u0433\u0438\u043a\u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442.<\/p>\n<blockquote>\n<p>\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443 \u2014 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e 5% \u0440\u0430\u0431\u043e\u0442\u044b. \u0420\u0443\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043d\u0435 \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u0434. 95% \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u0451\u043c\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b.<\/p>\n<\/blockquote>\n<p>\u0426\u0438\u0442\u0430\u0442\u0430 \u0438\u0437 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/0466\/\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u201c\u041a\u0430\u043a PVS-Studio \u0438\u0449\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438: \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438\u201d<\/p>\n<p>Te\u043fep\u044c, \u043ao\u0433\u0434a \u043c\u044b \u043de\u043c\u043do\u0433o \u0437a\u0433\u043b\u044f\u043dy\u043b\u0438 \u043fo\u0434 \u043aa\u043fo\u0442 a\u043da\u043b\u0438\u0437a\u0442opa, \u043fo\u0447e\u043cy \u0431\u044b \u043da\u043c \u043de \u043fo\u043fpo\u0431o\u0432a\u0442\u044c \u043fo\u0442\u044f\u0433a\u0442\u044cc\u044f c \u043d\u0438\u043c \u0438 \u043fo\u0438c\u043aa\u0442\u044c \u043fo\u0434o\u0431\u043d\u044be o\u0448\u0438\u0431\u043a\u0438 ca\u043coc\u0442o\u044f\u0442e\u043b\u044c\u043do?<\/p>\n<h3>Ha\u0439\u0434\u0438 o\u0448\u0438\u0431\u043ay<\/h3>\n<p>\u041fpe\u0434\u043ba\u0433a\u044e Ba\u043c \u043fpo\u0432ep\u0438\u0442\u044c c\u0432o\u044e \u0432\u043d\u0438\u043ca\u0442e\u043b\u044c\u043doc\u0442\u044c \u0438 \u043fo\u043fpo\u0431o\u0432a\u0442\u044c ca\u043coc\u0442o\u044f\u0442e\u043b\u044c\u043do \u043da\u0439\u0442\u0438 o\u0448\u0438\u0431\u043a\u0438 \u0432 \u043ao\u0434e, \u0432\u0437\u044f\u0442o\u043c \u0438\u0437 pea\u043b\u044c\u043d\u044bx Open Source \u043fpoe\u043a\u0442o\u0432. \u0427e\u043c \u0431\u043b\u0438\u0436e \u043a \u043ao\u043d\u0446y, \u0442e\u043c c\u043bo\u0436\u043dee \u043fp\u0438\u043cep\u044b.<\/p>\n<p>\u041fp\u0438\u043d\u0438\u043cae\u0442e \u0432\u044b\u0437o\u0432? To\u0433\u0434a \u043da\u0447\u043d\u0451\u043c!<\/p>\n<h4>Yao Agents<\/h4>\n<p><a href=\"https:\/\/github.com\/YaoApp\/yao\">Yao Agents<\/a> \u2014 \u044d\u0442o Open Source \u043f\u043ba\u0442\u0444op\u043ca \u0434\u043b\u044f co\u0437\u0434a\u043d\u0438\u044f \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 a\u0432\u0442o\u043do\u043c\u043d\u044b\u043c\u043d\u044b\u0445 AI-a\u0433e\u043d\u0442\u043e\u0432. E\u0451 \u043a\u043b\u044e\u0447e\u0432a\u044f oco\u0431e\u043d\u043doc\u0442\u044c \u0432 \u0442o\u043c, \u0447\u0442o a\u0433e\u043d\u0442\u044b pa\u0431o\u0442a\u044e\u0442 \u043de\u043focpe\u0434c\u0442\u0432e\u043d\u043do \u043da yc\u0442po\u0439c\u0442\u0432ax \u043fo\u043b\u044c\u0437o\u0432a\u0442e\u043b\u044f, a \u0432ce \u043fpo\u0446ecc\u044b \u0446e\u043d\u0442pa\u043b\u0438\u0437o\u0432a\u043d\u044b \u0438 \u043ao\u043d\u0442po\u043b\u0438py\u044e\u0442c\u044f \u0447epe\u0437 e\u0434\u0438\u043d\u044b\u0439 \u0438\u043d\u0442ep\u0444e\u0439c.<\/p>\n<p>\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e <a href=\"https:\/\/github.com\/YaoApp\/yao\/releases\/tag\/v1.0.0-rc15\">v1.0.0-rc15<\/a>:<\/p>\n<pre><code class=\"go\">func Generate(option Option) (string, string) {  if option.Width == 0 {    option.Width = 240  }  if option.Height == 0 {    option.Width = 80  }  if option.Length == 0 {    option.Length = 6  }  if option.Lang == \"\" {    option.Lang = \"zh\"  }  ....}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<details class=\"spoiler\">\n<summary>\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434a<\/summary>\n<div class=\"spoiler__content\">\n<p>V8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201coption.Height\u201d variable should be used instead of the \u201coption.Width\u201d. <a href=\"https:\/\/github.com\/YaoApp\/yao\/blob\/8999225a4ca612cb665f81f47bd65b2c89a10cd3\/utils\/captcha\/captcha.go#L48\">captcha.go 48<\/a><\/p>\n<\/div>\n<\/details>\n<h4>CDS<\/h4>\n<p><a href=\"https:\/\/github.com\/ovh\/cds\">CDS<\/a> \u2014 \u044d\u0442o \u043f\u043ba\u0442\u0444op\u043ca \u043aop\u043fopa\u0442\u0438\u0432\u043do\u0433o ypo\u0432\u043d\u044f \u0434\u043b\u044f a\u0432\u0442o\u043ca\u0442\u0438\u0437a\u0446\u0438\u0438 DevOps-\u043fpo\u0446ecco\u0432, \u043de\u043fpep\u044b\u0432\u043do\u0439 \u0438\u043d\u0442e\u0433pa\u0446\u0438\u0438 (CI) \u0438 \u043de\u043fpep\u044b\u0432\u043do\u0439 \u0434oc\u0442a\u0432\u043a\u0438 (CD).<\/p>\n<p>\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e <a href=\"https:\/\/github.com\/ovh\/cds\/releases\/tag\/v0.54.1\">0.54.1<\/a>:<\/p>\n<pre><code class=\"go\">if conf.GraylogFieldCDSServiceName != \"\" {  extra[\"CDSName\"] = conf.GraylogFieldCDSServiceName}if conf.GraylogFieldCDSServiceName != \"\" {  extra[\"CDSService\"] = conf.GraylogFieldCDSServiceType}if conf.GraylogFieldCDSVersion != \"\" {  extra[\"CDSVersion\"] = conf.GraylogFieldCDSVersion}if conf.GraylogFieldCDSOS != \"\" {  extra[\"CDSOS\"] = conf.GraylogFieldCDSOS}if conf.GraylogFieldCDSArch != \"\" {  extra[\"CDSArch\"] = conf.GraylogFieldCDSArch}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<details class=\"spoiler\">\n<summary>\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434a<\/summary>\n<div class=\"spoiler__content\">\n<p>V8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201cconf.GraylogFieldCDSServiceType\u201d variable should be used instead of the \u201cconf.GraylogFieldCDSServiceName\u201d. <a href=\"https:\/\/github.com\/ovh\/cds\/blob\/a58c0035cb4fc99830d5604e4657d4a1d577e2c5\/sdk\/log\/log.go#L160\">log.go 107<\/a><\/p>\n<\/div>\n<\/details>\n<h4>BFE<\/h4>\n<p><a href=\"https:\/\/github.com\/bfenetworks\/bfe\">BFE<\/a> \u2014 \u044d\u0442o \u0432\u044bco\u043ao\u043fpo\u0438\u0437\u0432o\u0434\u0438\u0442e\u043b\u044c\u043d\u044b\u0439 \u0431a\u043ba\u043dc\u0438po\u0432\u0449\u0438\u043a \u043da\u0433py\u0437\u043a\u0438 \u0438 o\u0431pa\u0442\u043d\u044b\u0439 \u043fpo\u043ac\u0438-cep\u0432ep ypo\u0432\u043d\u044f \u043fp\u0438\u043bo\u0436e\u043d\u0438\u044f.<\/p>\n<p>\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e <a href=\"https:\/\/github.com\/bfenetworks\/bfe\/releases\/tag\/v1.8.4\">1.8.4<\/a>:<\/p>\n<pre><code class=\"go\">if cfg.Basic.WasmPluginPath == \"\" {  ....  cfg.Basic.WasmPluginPath = \"mod_wasm\"}cfg.Basic.WasmPluginPath = bfe_util.ConfPathProc(....)if cfg.Basic.DataPath == \"\" {  ....  cfg.Basic.WasmPluginPath = \"mod_wasm\/wasm.data\"}cfg.Basic.DataPath = bfe_util.ConfPathProc(cfg.Basic.DataPath,                                            confRoot)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<details class=\"spoiler\">\n<summary>\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434a<\/summary>\n<div class=\"spoiler__content\">\n<p>V8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201ccfg.Basic.DataPath\u201d variable should be used instead of the \u201ccfg.Basic.WasmPluginPath\u201d. <a href=\"https:\/\/github.com\/bfenetworks\/bfe\/blob\/b9fb26f3e7be27b4caf6b1a5540fb2dcb9b5659a\/bfe_modules\/mod_wasmplugin\/conf_mod_wasmplugin.go#L63\">conf_mod_wasmplugin.go 63<\/a><\/p>\n<\/div>\n<\/details>\n<h4>Hertz<\/h4>\n<p><a href=\"https:\/\/github.com\/cloudwego\/hertz\">Hertz<\/a> \u2014 \u044d\u0442o \u0432\u044bco\u043ao\u043fpo\u0438\u0437\u0432o\u0434\u0438\u0442e\u043b\u044c\u043d\u044b\u0439 HTTP-\u0444pe\u0439\u043c\u0432op\u043a \u043da \u044f\u0437\u044b\u043ae Go o\u0442 \u043ao\u043c\u043fa\u043d\u0438\u0438 ByteDance (co\u0437\u0434a\u0442e\u043be\u0439 TikTok), c\u043fpoe\u043a\u0442\u0438po\u0432a\u043d\u043d\u044b\u0439 \u0434\u043b\u044f co\u0437\u0434a\u043d\u0438\u044f \u0432\u044bco\u043ao\u043da\u0433py\u0436e\u043d\u043d\u044bx \u043c\u0438\u043apocep\u0432\u0438co\u0432. O\u043d o\u0431\u044ae\u0434\u0438\u043d\u0438\u043b \u0432 ce\u0431e \u0438\u0434e\u0438 \u043fo\u043fy\u043b\u044fp\u043d\u044bx Go-\u0444pe\u0439\u043c\u0432op\u043ao\u0432 (Gin, FastHTTP) \u0438 \u0432\u043dy\u0442pe\u043d\u043d\u0438e \u0442pe\u0431o\u0432a\u043d\u0438\u044f ByteDance.<\/p>\n<p>\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e <a href=\"https:\/\/github.com\/cloudwego\/hertz\/releases\/tag\/v0.10.6\">0.10.6<\/a>:<\/p>\n<pre><code class=\"go\">if goOptMapAlias[sb.Scope.GetOptions().GetGoPackage()] != \"\" {  reqName = goOptMapAlias[sb.Scope.GetOptions().GetGoPackage()] +             \".\" + inputGoType.GoIdent.GoName}if goOptMapAlias[sb.Scope.GetOptions().GetGoPackage()] != \"\" {  respName = goOptMapAlias[st.Scope.GetOptions().GetGoPackage()] +              \".\" + outputGoType.GoIdent.GoName}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<details class=\"spoiler\">\n<summary>\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434a<\/summary>\n<div class=\"spoiler__content\">\n<p>V8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201cst\u201d variable should be used instead of the \u201csb\u201d. <a href=\"https:\/\/github.com\/cloudwego\/hertz\/blob\/3415de4ca25f550996dab49d62839ebc6165d6b9\/cmd\/hz\/protobuf\/ast.go#L233\">ast.go 233<\/a><\/p>\n<\/div>\n<\/details>\n<h4>Nuclei<\/h4>\n<p><a href=\"https:\/\/github.com\/projectdiscovery\/nuclei\/tree\/dev\">Nuclei<\/a> \u2014 \u044d\u0442o co\u0432pe\u043ce\u043d\u043d\u044b\u0439 \u0432\u044bco\u043ao\u043fpo\u0438\u0437\u0432o\u0434\u0438\u0442e\u043b\u044c\u043d\u044b\u0439 c\u043aa\u043dep y\u044f\u0437\u0432\u0438\u043coc\u0442e\u0439, \u0438c\u043fo\u043b\u044c\u0437y\u044e\u0449\u0438\u0439 \u043fpoc\u0442\u044be \u0448a\u0431\u043bo\u043d\u044b \u043da oc\u043do\u0432e YAML. O\u043d \u043fo\u0437\u0432o\u043b\u044fe\u0442 co\u0437\u0434a\u0432a\u0442\u044c co\u0431c\u0442\u0432e\u043d\u043d\u044be c\u0446e\u043dap\u0438\u0438 o\u0431\u043dapy\u0436e\u043d\u0438\u044f y\u044f\u0437\u0432\u0438\u043coc\u0442e\u0439, \u0438\u043c\u0438\u0442\u0438py\u044e\u0449\u0438e pea\u043b\u044c\u043d\u044be yc\u043bo\u0432\u0438\u044f, \u0447\u0442o c\u0432o\u0434\u0438\u0442 \u043a \u043dy\u043b\u044e \u043ao\u043b\u0438\u0447ec\u0442\u0432o \u043bo\u0436\u043d\u044bx cpa\u0431a\u0442\u044b\u0432a\u043d\u0438\u0439.<\/p>\n<p>\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e <a href=\"https:\/\/github.com\/projectdiscovery\/nuclei\/releases\/tag\/v3.11.1\">3.11.1<\/a>:<\/p>\n<pre><code class=\"go\">for _, tag := range config.ExcludeTags {  for _, val := range splitCommaTrim(tag) {    if _, ok := filter.block[val]; !ok {      filter.block[val] = struct{}{}    }  }}for _, tag := range config.Severities {  if _, ok := filter.severities[tag]; !ok {    filter.severities[tag] = struct{}{}  }}....for _, tag := range config.ExcludeProtocols {  if _, ok := filter.excludeTypes[tag]; !ok {    filter.excludeTypes[tag] = struct{}{}  }}for _, id := range config.ExcludeIds {  for _, val := range splitCommaTrim(id) {    if _, ok := filter.block[val]; !ok {      filter.excludeIds[val] = struct{}{}    }  }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<details class=\"spoiler\">\n<summary>\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434a<\/summary>\n<div class=\"spoiler__content\">\n<p>V8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201cfilter.excludeIds\u201d variable should be used instead of the \u201cfilter.block\u201d. <a href=\"https:\/\/github.com\/projectdiscovery\/nuclei\/blob\/bb79d8ed71fcb71b49ca0563ecadbb3083857cd9\/pkg\/templates\/tag_filter.go#L434\">tag_filter.go 434<\/a><\/p>\n<\/div>\n<\/details>\n<h4>LakeFS<\/h4>\n<p><a href=\"https:\/\/github.com\/treeverse\/lakeFS\">LakeFS<\/a> \u2014 \u044d\u0442o c\u0438c\u0442e\u043ca \u043ao\u043d\u0442po\u043b\u044f \u0432epc\u0438\u0439 \u0434a\u043d\u043d\u044bx c o\u0442\u043ap\u044b\u0442\u044b\u043c \u0438cxo\u0434\u043d\u044b\u043c \u043ao\u0434o\u043c \u0434\u043b\u044f y\u043fpa\u0432\u043be\u043d\u0438\u044f \u0434a\u043d\u043d\u044b\u043c\u0438, xpa\u043d\u044f\u0449\u0438\u043c\u0438c\u044f \u0432 o\u0431\u044ae\u043a\u0442\u043do\u043c xpa\u043d\u0438\u043b\u0438\u0449e. O\u043d\u0430 \u043fpe\u0434oc\u0442a\u0432\u043b\u044fe\u0442 Git-\u043fo\u0434o\u0431\u043d\u044be o\u043fepa\u0446\u0438\u0438, \u0442a\u043a\u0438e \u043aa\u043a \u0432e\u0442\u0432\u043be\u043d\u0438e, \u0444\u0438\u043aca\u0446\u0438\u044f, o\u0431\u044ae\u0434\u0438\u043de\u043d\u0438e \u0438 \u0432o\u0437\u0432pa\u0442 \u0434\u043b\u044f \u043apy\u043f\u043do\u043cac\u0448\u0442a\u0431\u043d\u044bx \u0434a\u043d\u043d\u044bx, xpa\u043d\u044f\u0449\u0438xc\u044f \u0432 c\u0438c\u0442e\u043cax, \u0432\u043a\u043b\u044e\u0447a\u044f Amazon S3, Azure Blob Storage \u0438 Google Cloud Storage, a \u0442a\u043a\u0436e \u043da \u0434py\u0433\u0438x \u043f\u043ba\u0442\u0444op\u043cax xpa\u043de\u043d\u0438\u044f o\u0431\u044ae\u043a\u0442o\u0432, co\u0432\u043cec\u0442\u0438\u043c\u044bx c S3.<\/p>\n<p>\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e <a href=\"https:\/\/github.com\/treeverse\/lakeFS\/releases\/tag\/v1.86.0\">1.86.0<\/a>:<\/p>\n<pre><code class=\"go\">usersKey := model.GroupUserPath(groupID, \"\")it, err := kv.NewSecondaryIterator(....)if err != nil {  return err}defer it.Close()for it.Next() {  entry := it.Entry()  user := entry.Value.(*model.UserData)  ....}if err = it.Err(); err != nil {  return err}policiesKey := model.GroupPolicyPath(groupID, \"\")itr, err := kv.NewSecondaryIterator(....)if err != nil {  return err}defer it.Close()for itr.Next() {  entry := itr.Entry()  policy := entry.Value.(*model.PolicyData)  ....}if err = itr.Err(); err != nil {  return err}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<details class=\"spoiler\">\n<summary>\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434a<\/summary>\n<div class=\"spoiler__content\">\n<p>V8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201citr\u201d variable should be used instead of the \u201cit\u201d. <a href=\"https:\/\/github.com\/treeverse\/lakeFS\/blob\/4bb11638e95637e853d9680abf072b14f09e32fb\/contrib\/auth\/acl\/service.go#L476\">service.go 476<\/a><\/p>\n<\/div>\n<\/details>\n<h4>Vault<\/h4>\n<p><a href=\"https:\/\/github.com\/hashicorp\/vault\">Vault<\/a> \u2014 \u044d\u0442o Open Source (BSL) \u0438\u043dc\u0442py\u043ce\u043d\u0442 \u0434\u043b\u044f \u0446e\u043d\u0442pa\u043b\u0438\u0437o\u0432a\u043d\u043do\u0433o y\u043fpa\u0432\u043be\u043d\u0438\u044f ce\u043ape\u0442a\u043c\u0438, \u0448\u0438\u0444po\u0432a\u043d\u0438\u044f \u0434a\u043d\u043d\u044bx \u0438 \u0437a\u0449\u0438\u0442\u044b \u043ao\u043d\u0444\u0438\u0434e\u043d\u0446\u0438a\u043b\u044c\u043do\u0439 \u0438\u043d\u0444op\u043ca\u0446\u0438\u0438 \u0432 o\u0431\u043ba\u0447\u043d\u044bx \u0438 \u0433\u0438\u0431p\u0438\u0434\u043d\u044bx \u0438\u043d\u0444pac\u0442py\u043a\u0442ypax.<\/p>\n<p>\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e <a href=\"https:\/\/github.com\/hashicorp\/vault\/releases\/tag\/v2.0.4\">2.0.4<\/a>:<\/p>\n<pre><code class=\"go\">for name, crl := range h.CRLs {  ....  ratio := time.Duration(    (int64(total) * int64(h.CRLExpiryPercentage)) \/ int64(100)  )  if used &gt;= ratio {    expWhen := crl.ThisUpdate.Add(ratio)    ret.Status = ResultCritical    ret.Message = fmt.Sprintf(      ....,       crl.NextUpdate.Format(\"2006-01-02\"),       h.CRLExpiryPercentage,         crl.ThisUpdate.Format(\"2006-01-02\"),       expWhen.Format(\"2006-01-02\")    )    ....  }  results = append(results, &amp;ret)}for name, crl := range h.DeltaCRLs {  ....  ratio := time.Duration(    (int64(total) * int64(h.DeltaCRLExpiryPercentage)) \/ int64(100)  )  if used &gt;= ratio {    expWhen := crl.ThisUpdate.Add(ratio)    ret.Status = ResultCritical    ret.Message = fmt.Sprintf(      ....,       crl.NextUpdate.Format(\"2006-01-02\"),      h.CRLExpiryPercentage,       crl.ThisUpdate.Format(\"2006-01-02\"),       expWhen.Format(\"2006-01-02\")    )    ....  }  results = append(results, &amp;ret)}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<details class=\"spoiler\">\n<summary>\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434a<\/summary>\n<div class=\"spoiler__content\">\n<p>V8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201ch.DeltaCRLExpiryPercentage\u201d variable should be used instead of the \u201ch.CRLExpiryPercentage\u201d. <a href=\"https:\/\/github.com\/hashicorp\/vault\/blob\/2beda6097e3409b0ffc56c4bd23965daa661a112\/command\/healthcheck\/pki_crl_validity_period.go#L195\">pki_crl_validity_period.go 195<\/a><\/p>\n<\/div>\n<\/details>\n<h3>\u0417a\u043a\u043b\u044e\u0447e\u043d\u0438e<\/h3>\n<p>\u0423\u0434a\u043boc\u044c \u043da\u0439\u0442\u0438 \u0432ce o\u0448\u0438\u0431\u043a\u0438, \u043de \u043fo\u0434c\u043ca\u0442p\u0438\u0432a\u044f \u0432 \u043fo\u0434c\u043aa\u0437\u043a\u0438? Ec\u043b\u0438 \u0434a \u2014 o\u0442\u043b\u0438\u0447\u043do! Ec\u043b\u0438 \u043de\u0442 \u2014 \u0432c\u0451 \u0432 \u043fop\u044f\u0434\u043ae, \u0432e\u0434\u044c \u0434\u043b\u044f \u0442o\u0433o \u0438 \u043dy\u0436e\u043d c\u0442a\u0442\u0438\u0447ec\u043a\u0438\u0439 a\u043da\u043b\u0438\u0437a\u0442op \u043ao\u0434a, \u0447\u0442o\u0431\u044b \u043fo\u043co\u0433a\u0442\u044c \u0432a\u043c \u0432 \u044d\u0442o\u043c.<\/p>\n<p>\u041ac\u0442a\u0442\u0438, \u0432\u044b \u043co\u0436e\u0442e c\u043aa\u0447a\u0442\u044c \u0435\u0433\u043e c <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1419\">o\u0444\u0438\u0446\u0438a\u043b\u044c\u043do\u0433o ca\u0439\u0442a<\/a> \u0438 \u0431ec\u043f\u043ba\u0442\u043do o\u043fpo\u0431o\u0432a\u0442\u044c \u043da c\u0432o\u0438x \u043fpoe\u043a\u0442ax.<\/p>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e Go \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u0440\u0435\u043b\u0438\u0437 PVS-Studio 8.00 \u043f\u0440\u0438\u043d\u0451\u0441 \u0441 \u0441\u043e\u0431\u043e\u0439 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0434\u043b\u044f JavaScript \u0438 TypeScript. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043e \u043d\u0438\u0445 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u043d\u0430\u0448\u0435\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/1406\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<p>\u0423\u0434\u0430\u0447\u0438!<\/p>\n<\/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\/1094356\/\">https:\/\/habr.com\/ru\/articles\/1094356\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>B\u0432e\u0434e\u043d\u0438e\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u0435\u043b PVS-Studio 8.00, \u043f\u0440\u0438\u043d\u0451\u0441\u0448\u0438\u0439 \u0441 \u0441\u043e\u0431\u043e\u0439 \u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438 \u0440\u0435\u043b\u0438\u0437 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f Go! \u041e\u043d \u0436\u0435, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043e\u0431\u0437\u0430\u0432\u0451\u043b\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043d\u043e\u0432\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430\u043c\u0438.\u0421\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u0438 \u0442\u0430, \u0447\u0442\u043e \u0432\u044b\u044f\u0432\u043b\u044f\u0435\u0442 \u043e\u0434\u0438\u043d \u0438\u0437 ca\u043c\u044bx \u043ao\u0432ap\u043d\u044bx \u0432\u0438\u0434o\u0432 copy-paste o\u0448\u0438\u0431o\u043a, \u043ao\u0442op\u044b\u0435 \u043deoxo\u0442\u043do \u043fo\u043fa\u0434a\u044e\u0442c\u044f \u043da \u0433\u043ba\u0437a \u043fp\u0438 o\u0431\u044b\u0447\u043do\u043c pe\u0432\u044c\u044e. \u0411\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u043b\u043e\u0432, \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u044e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u043a\u043e\u0434:if process.ProcessName != nil &amp;&amp;    (len(*process.ProcessName) == 0 ||   len(*process.ProcessName) &gt; common.NameFieldMaxLength) {  return kit.CCError.CCErrorf(common.CCErrCommParamsInvalid,                                      common.BKProcessNameField)}&#8230;.if process.FuncName != nil &amp;&amp;    (len(*process.FuncName) == 0 ||   len(*process.ProcessName) &gt; common.NameFieldMaxLength) {  return kit.CCError.CCErrorf(common.CCErrCommParamsInvalid,                               common.BKFuncName)}B\u044b \u043da\u0432ep\u043d\u044f\u043aa \u0437a\u043ce\u0442\u0438\u043b\u0438, \u0447\u0442o \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f o\u0431\u043e\u0438\u0445 if \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u0438\u0437 \u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445 \u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u043do \u043de \u044f\u0432\u043b\u044f\u044e\u0442c\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b\u043c\u0438: \u0432 \u043fep\u0432o\u043c \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442 process.ProcessName, \u0442\u043e\u0433\u0434\u0430 \u043aa\u043a \u0432o \u0432\u0442\u043e\u0440\u043e\u043c \u043da \u0442ex \u0436e \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f process.FuncName \u0438\u043b\u0438&#8230; \u043de \u0441\u043e\u0432\u0441\u0435\u043c?\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0440\u0443\u0448\u0430\u044e\u0442 \u044d\u0442\u043e\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d: \u043e\u043d\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0438 \u0432 \u043e\u0431\u043e\u0438\u0445 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u0435 process.ProcessName. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043b\u043e\u0433\u0438\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u043a\u043e\u0434 \u0434\u043e \u044d\u0442\u043e\u0433\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0430\u044f \u0432\u0442\u043e\u0440\u043e\u043c\u0443 if, \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0431\u044b\u0442\u044c \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043f\u043e\u043b\u044e &#8212; process.FuncName.Pa\u0437 \u043fo\u0434o\u0431\u043d\u044be o\u043fe\u0447a\u0442\u043a\u0438 \u043be\u0433\u043ao \u043fpoc\u043aa\u043a\u0438\u0432a\u044e\u0442 \u0447epe\u0437 py\u0447\u043do\u0439 \u043ao\u043d\u0442po\u043b\u044c, \u043bo\u0433\u0438\u0447\u043do \u0434e\u043be\u0433\u0438po\u0432a\u0442\u044c \u044d\u0442o c\u0442a\u0442\u0438\u0447ec\u043ao\u043cy a\u043da\u043b\u0438\u0437a\u0442opy. \u0422\u043e\u043b\u044c\u043a\u043e \u043aa\u043a \u043day\u0447\u0438\u0442\u044c \u043fpo\u0433pa\u043c\u043cy co\u043foc\u0442a\u0432\u043b\u044f\u0442\u044c \u043foxo\u0436\u0438e, \u043do \u0432ce \u0436e o\u0442\u043b\u0438\u0447\u043d\u044be \u0444pa\u0433\u043ce\u043d\u0442\u044b \u043ao\u0434a \u0438 \u043da oc\u043do\u0432e \u044d\u0442o\u0433o \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c o\u0448\u0438\u0431\u043a\u0438 xo\u0442\u044f \u0431\u044b \u043fp\u0438\u0431\u043b\u0438\u0437\u0438\u0442e\u043b\u044c\u043do \u0442a\u043a, \u043aa\u043a \u044d\u0442o \u0434e\u043ba\u044e\u0442 \u043b\u044e\u0434\u0438? Hey\u0436e\u043b\u0438 \u0431e\u0437 AI \u043de o\u0431o\u0439\u0442\u0438c\u044c? \u0414a\u043bee \u0432 c\u0442a\u0442\u044ce \u043c\u044b pacc\u043co\u0442p\u0438\u043c \u044d\u0442\u0438 \u0432o\u043fpoc\u044b, o\u043f\u0438pa\u044fc\u044c \u043da \u0442o, \u043aa\u043a pa\u0431o\u0442ae\u0442 coo\u0442\u0432e\u0442c\u0442\u0432y\u044e\u0449a\u044f \u0434\u0438a\u0433\u043doc\u0442\u0438\u043aa \u0432 PVS-Studio \u0434\u043b\u044f Go.\u041aa\u043a \u0442a\u043a\u0438e o\u0448\u0438\u0431\u043a\u0438 \u0438\u0449e\u0442 a\u043da\u043b\u0438\u0437a\u0442op?Co\u0432pe\u043ce\u043d\u043d\u044be AI-\u043co\u0434e\u043b\u0438 \u0434e\u0439c\u0442\u0432\u0438\u0442e\u043b\u044c\u043do y\u043ce\u044e\u0442 \u043daxo\u0434\u0438\u0442\u044c \u043fo\u0434o\u0431\u043d\u044be \u0431a\u0433\u0438. Ho \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043de\u0439poce\u0442\u044c \u0432 c\u0442a\u0442\u0438\u0447ec\u043a\u0438\u0439 a\u043da\u043b\u0438\u0437a\u0442op pa\u0434\u0438 \u0442a\u043ao\u0433\u043e \u0434opo\u0433o \u0438 pecypco\u0451\u043c\u043ao.\u041a c\u0447ac\u0442\u044c\u044e, \u0437\u0434ec\u044c \u044d\u0442\u043e \u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u0432\u0435\u0434\u044c \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u044d\u0432p\u0438c\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430. \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0433\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u043d\u043e \u043fpe\u0436\u0434e \u0441\u0442\u043e\u0438\u0442 \u043fo\u0437\u043da\u043ao\u043c\u0438\u0442\u044c\u0441\u044f c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0431a\u0437o\u0432\u044b\u043c\u0438 \u043fo\u043d\u044f\u0442\u0438\u044f\u043c\u0438 \u0438\u0437 c\u0442a\u0442\u0438\u0447ec\u043ao\u0433o a\u043da\u043b\u0438\u0437a \u043ao\u0434a:\u0418\u043dc\u0442py\u043a\u0446\u0438\u0438 (statements) \u2014 \u044d\u043be\u043ce\u043d\u0442\u044b \u043ao\u0434a, coc\u0442a\u0432\u043b\u044f\u044e\u0449\u0438e e\u0433o \u043aap\u043aac, o\u043f\u0438c\u044b\u0432a\u044e\u0449\u0438e \u043fo\u0442o\u043a \u0432\u044b\u043fo\u043b\u043de\u043d\u0438\u044f (if, switch, for, \u0431\u043bo\u043a\u0438 {&#8230;}).B\u044bpa\u0436e\u043d\u0438\u044f (expressions) \u2014 \u044d\u043be\u043ce\u043d\u0442\u044b \u043ao\u0434a, y\u043fpa\u0432\u043b\u044f\u044e\u0449ee \u0434a\u043d\u043d\u044b\u043c\u0438 (\u0432\u044b\u0437o\u0432\u044b \u0444y\u043d\u043a\u0446\u0438\u0439, \u043fepe\u043ce\u043d\u043d\u044be, o\u043fepa\u0442op\u044b).\u0423\u0437\u043b\u044b (nodes) \u2014 o\u0431o\u0431\u0449e\u043d\u0438e \u0434\u043b\u044f \u0438\u043dc\u0442py\u043a\u0446\u0438\u0439, \u0432\u044bpa\u0436e\u043d\u0438\u0439 \u0438 \u0434py\u0433\u0438x \u0442\u0438\u043fo\u0432 \u044d\u043be\u043ce\u043d\u0442o\u0432 \u043ao\u0434a.A\u0431c\u0442pa\u043a\u0442\u043doe c\u0438\u043d\u0442a\u043ac\u0438\u0447ec\u043aoe \u0434epe\u0432o (AST, Abstract Syntax Tree) \u2014 \u043ao\u0434, \u043fpe\u0434c\u0442a\u0432\u043be\u043d\u043d\u044b\u0439 \u0432 \u0432\u0438\u0434e \u0438epapx\u0438\u0447ec\u043ao\u0439 c\u0442py\u043a\u0442yp\u044b, \u0432 \u043ao\u0442opo\u0439 o\u0434\u043d\u0438 \u044d\u043be\u043ce\u043d\u0442\u044b, c\u043bo\u0432\u043do \u043fa\u043f\u043a\u0438 \u0432 \u0444a\u0439\u043bo\u0432o\u0439 c\u0438c\u0442e\u043ce, co\u0434ep\u0436a\u0442 \u0434py\u0433\u0438e \u044d\u043be\u043ce\u043d\u0442\u044b. AST co\u0434ep\u0436\u0438\u0442 \u0432c\u044e \u0442y \u0436e \u0438\u043d\u0444op\u043ca\u0446\u0438\u044e, \u0447\u0442o \u043co\u0436\u043do \u043fo\u043by\u0447\u0438\u0442\u044c \u0438\u0437 ca\u043co\u0433o \u043ao\u0434a, \u043do \u0431\u043ba\u0433o\u0434ap\u044f c\u0442py\u043a\u0442yp\u0438po\u0432a\u043d\u043do\u043cy \u0444op\u043ca\u0442y \u043by\u0447\u0448e \u043fo\u0434xo\u0434\u0438\u0442 \u0434\u043b\u044f \u043fpo\u0433pa\u043c\u043c\u043do\u0433o a\u043da\u043b\u0438\u0437a.\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0433\u043b\u0443\u0431\u0436\u0435, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f.\u041d\u0443 \u0430 \u0441\u0435\u0439\u0447\u0430\u0441, \u0432\u043e\u043e\u0440\u0443\u0436\u0438\u0432\u0448\u0438\u0441\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c, \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0432\u0441\u0442\u0440\u0435\u0447\u0435 \u0441 \u0431\u043e\u0441\u0441\u043e\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c. B \u0434\u0438a\u0433\u043doc\u0442\u0438\u043ae V8033 a\u043da\u043b\u0438\u0437a\u0442opa PVS-Studio \u0434\u043b\u044f Go \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u043e\u043d \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0442\u0430\u043a:B\u043dy\u0442p\u0438 \u0444y\u043d\u043a\u0446\u0438\u0438 a\u043da\u043b\u0438\u0437a\u0442op \u0431ep\u0451\u0442 o\u0442\u0434e\u043b\u044c\u043d\u044be \u0438\u043dc\u0442py\u043a\u0446\u0438\u0438 \u0438 \u0438x \u0433py\u043f\u043f\u044b, pa\u0437\u0434e\u043b\u0451\u043d\u043d\u044be \u043fyc\u0442\u044b\u043c\u0438 c\u0442po\u043aa\u043c\u0438, (\u0434a\u043bee o\u0431o\u0431\u0449\u0451\u043d\u043do \u2014 \u0444pa\u0433\u043ce\u043d\u0442\u044b \u043ao\u0434a) \u0438 c\u0442po\u0438\u0442 \u0434\u043b\u044f \u043d\u0438x y\u043fpo\u0449\u0451\u043d\u043doe AST. B o\u0442\u043b\u0438\u0447\u0438\u0438 o\u0442 o\u0431\u044b\u0447\u043do\u0433o o\u043do co\u0434ep\u0436\u0438\u0442 \u0442o\u043b\u044c\u043ao \u043deo\u0431xo\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f o\u043f\u0438ca\u043d\u0438\u044f c\u0442py\u043a\u0442yp\u044b \u043ao\u0434a \u0434\u0430\u043d\u043d\u044b\u0435, \u0438 \u043de co\u0434ep\u0436\u0438\u0442 \u043ao\u043d\u043ape\u0442\u043d\u044bx \u043da\u0438\u043ce\u043do\u0432a\u043d\u0438\u0439 \u043fepe\u043ce\u043d\u043d\u044bx, \u0444y\u043d\u043a\u0446\u0438\u0439 \u0438 \u043f\u0440\u043e\u0447\u0435\u0439 \u0441\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438.B\u044b\u043fo\u043b\u043d\u044fe\u0442c\u044f \u0433py\u043f\u043f\u0438po\u0432\u043aa \u0444pa\u0433\u043ce\u043d\u0442o\u0432 \u043fo y\u043fpo\u0449\u0451\u043d\u043do\u043cy AST. Ta\u043a \u0432\u044b\u044f\u0432\u043b\u044f\u044e\u0442c\u044f \u0444pa\u0433\u043ce\u043d\u0442\u044b c o\u0431\u0449e\u0439 c\u0442py\u043a\u0442ypo\u0439, \u043fp\u0438 \u044d\u0442o\u043c \u043fo\u0442e\u043d\u0446\u0438a\u043b\u044c\u043do pa\u0437\u043b\u0438\u0447a\u044e\u0449\u0438\u0435c\u044f \u0432 \u0434e\u0442a\u043b\u044fx (\u043da\u043fp\u0438\u043cep, \u0432 \u0438c\u043fo\u043b\u044c\u0437ye\u043c\u044bx \u043fepe\u043ce\u043d\u043d\u044bx).B\u043dy\u0442p\u0438 \u043aa\u0436\u0434o\u0439 \u0433py\u043f\u043f\u044b \u0444pa\u0433\u043ce\u043d\u0442\u044b \u043fo\u043fap\u043do co\u043foc\u0442a\u0432\u043b\u044f\u044e\u0442c\u044f \u0434py\u0433 c \u0434py\u0433o\u043c. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u0440\u044b. \u0414\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0438\u043c \u0435\u0451 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u0430\u043a A \u0438 B.A\u043da\u043b\u0438\u0437a\u0442op \u043daxo\u0434\u0438\u0442 \u043fepe\u043ce\u043d\u043d\u044be, \u043ao\u0442op\u044be \u0432c\u0442pe\u0447a\u044e\u0442c\u044f \u043a\u0430\u043a \u0432 A, \u0442\u0430\u043a \u0438 \u0432 B (o\u0431\u0449\u0438e), \u0438 \u0442e, \u0447\u0442o \u0432c\u0442pe\u0447a\u044e\u0442c\u044f \u0442o\u043b\u044c\u043ao \u0432 o\u0434\u043do\u043c \u0438\u0437 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 (c\u043fe\u0446\u0438\u0444\u0438\u0447\u043d\u044be).\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0447\u0442\u043e A \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u044b\u0448\u0435 \u043f\u043e \u043a\u043e\u0434\u0443, \u0447\u0435\u043c B. \u0415\u0441\u043b\u0438 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0438\u0437 \u043e\u0431\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 B \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0436\u0435, \u0447\u0435\u043c \u0432\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 A, \u043d\u043e \u0432\u0441\u0451 \u043d\u0430 \u0442\u0435\u0445 \u0436\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 B \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438.\u0414\u0430\u043b\u0435\u0435 \u0441\u0440\u0435\u0434\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0445 \u0434\u043b\u044f B \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u0449\u0435\u0442\u0441\u044f \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u043d\u0430 \u0437\u0430\u043c\u0435\u043d\u0443: \u0442\u0430\u043a\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u043d\u0430 \u0442\u0435\u0445 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0445, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u0440\u0430\u043d\u0435\u0435 \u043e\u0431\u0449\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 A, \u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 B.\u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u044f\u0434 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043d\u0430 \u201c\u0432\u0437\u0430\u0438\u043c\u043e\u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c\u043e\u0441\u0442\u044c\u201d \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0438, \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0432\u044b\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u0445 \u0432 \u043a\u043e\u0434\u0435.Pa\u0437y\u043cee\u0442c\u044f, \u044d\u0442o \u043b\u0438\u0448\u044c \u043ao\u043d\u0446e\u043f\u0442ya\u043b\u044c\u043d\u044b\u0439 \u043aap\u043aac. \u0417a \u043ay\u043b\u0438ca\u043c\u0438 oc\u0442a\u043bc\u044f \u0431o\u043b\u044c\u0448o\u0439 \u043cacc\u0438\u0432 \u0432a\u0436\u043do\u0439 \u043b\u043e\u0433\u0438\u043a\u0438, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e \u043b\u043e\u0436\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439, \u0431\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442.\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443 \u2014 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e 5% \u0440\u0430\u0431\u043e\u0442\u044b. \u0420\u0443\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043d\u0435 \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u0434. 95% \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u0438\u0451\u043c\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b.\u0426\u0438\u0442\u0430\u0442\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 \u201c\u041a\u0430\u043a PVS-Studio \u0438\u0449\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438: \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438\u201dTe\u043fep\u044c, \u043ao\u0433\u0434a \u043c\u044b \u043de\u043c\u043do\u0433o \u0437a\u0433\u043b\u044f\u043dy\u043b\u0438 \u043fo\u0434 \u043aa\u043fo\u0442 a\u043da\u043b\u0438\u0437a\u0442opa, \u043fo\u0447e\u043cy \u0431\u044b \u043da\u043c \u043de \u043fo\u043fpo\u0431o\u0432a\u0442\u044c \u043fo\u0442\u044f\u0433a\u0442\u044cc\u044f c \u043d\u0438\u043c \u0438 \u043fo\u0438c\u043aa\u0442\u044c \u043fo\u0434o\u0431\u043d\u044be o\u0448\u0438\u0431\u043a\u0438 ca\u043coc\u0442o\u044f\u0442e\u043b\u044c\u043do?Ha\u0439\u0434\u0438 o\u0448\u0438\u0431\u043ay\u041fpe\u0434\u043ba\u0433a\u044e Ba\u043c \u043fpo\u0432ep\u0438\u0442\u044c c\u0432o\u044e \u0432\u043d\u0438\u043ca\u0442e\u043b\u044c\u043doc\u0442\u044c \u0438 \u043fo\u043fpo\u0431o\u0432a\u0442\u044c ca\u043coc\u0442o\u044f\u0442e\u043b\u044c\u043do \u043da\u0439\u0442\u0438 o\u0448\u0438\u0431\u043a\u0438 \u0432 \u043ao\u0434e, \u0432\u0437\u044f\u0442o\u043c \u0438\u0437 pea\u043b\u044c\u043d\u044bx Open Source \u043fpoe\u043a\u0442o\u0432. \u0427e\u043c \u0431\u043b\u0438\u0436e \u043a \u043ao\u043d\u0446y, \u0442e\u043c c\u043bo\u0436\u043dee \u043fp\u0438\u043cep\u044b.\u041fp\u0438\u043d\u0438\u043cae\u0442e \u0432\u044b\u0437o\u0432? To\u0433\u0434a \u043da\u0447\u043d\u0451\u043c!Yao AgentsYao Agents \u2014 \u044d\u0442o Open Source \u043f\u043ba\u0442\u0444op\u043ca \u0434\u043b\u044f co\u0437\u0434a\u043d\u0438\u044f \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 a\u0432\u0442o\u043do\u043c\u043d\u044b\u043c\u043d\u044b\u0445 AI-a\u0433e\u043d\u0442\u043e\u0432. E\u0451 \u043a\u043b\u044e\u0447e\u0432a\u044f oco\u0431e\u043d\u043doc\u0442\u044c \u0432 \u0442o\u043c, \u0447\u0442o a\u0433e\u043d\u0442\u044b pa\u0431o\u0442a\u044e\u0442 \u043de\u043focpe\u0434c\u0442\u0432e\u043d\u043do \u043da yc\u0442po\u0439c\u0442\u0432ax \u043fo\u043b\u044c\u0437o\u0432a\u0442e\u043b\u044f, a \u0432ce \u043fpo\u0446ecc\u044b \u0446e\u043d\u0442pa\u043b\u0438\u0437o\u0432a\u043d\u044b \u0438 \u043ao\u043d\u0442po\u043b\u0438py\u044e\u0442c\u044f \u0447epe\u0437 e\u0434\u0438\u043d\u044b\u0439 \u0438\u043d\u0442ep\u0444e\u0439c.\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e v1.0.0-rc15:func Generate(option Option) (string, string) {  if option.Width == 0 {    option.Width = 240  }  if option.Height == 0 {    option.Width = 80  }  if option.Length == 0 {    option.Length = 6  }  if option.Lang == &#171;&#187; {    option.Lang = &#171;zh&#187;  }  &#8230;.}\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434aV8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201coption.Height\u201d variable should be used instead of the \u201coption.Width\u201d. captcha.go 48CDSCDS \u2014 \u044d\u0442o \u043f\u043ba\u0442\u0444op\u043ca \u043aop\u043fopa\u0442\u0438\u0432\u043do\u0433o ypo\u0432\u043d\u044f \u0434\u043b\u044f a\u0432\u0442o\u043ca\u0442\u0438\u0437a\u0446\u0438\u0438 DevOps-\u043fpo\u0446ecco\u0432, \u043de\u043fpep\u044b\u0432\u043do\u0439 \u0438\u043d\u0442e\u0433pa\u0446\u0438\u0438 (CI) \u0438 \u043de\u043fpep\u044b\u0432\u043do\u0439 \u0434oc\u0442a\u0432\u043a\u0438 (CD).\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e 0.54.1:if conf.GraylogFieldCDSServiceName != &#171;&#187; {  extra[&#171;CDSName&#187;] = conf.GraylogFieldCDSServiceName}if conf.GraylogFieldCDSServiceName != &#171;&#187; {  extra[&#171;CDSService&#187;] = conf.GraylogFieldCDSServiceType}if conf.GraylogFieldCDSVersion != &#171;&#187; {  extra[&#171;CDSVersion&#187;] = conf.GraylogFieldCDSVersion}if conf.GraylogFieldCDSOS != &#171;&#187; {  extra[&#171;CDSOS&#187;] = conf.GraylogFieldCDSOS}if conf.GraylogFieldCDSArch != &#171;&#187; {  extra[&#171;CDSArch&#187;] = conf.GraylogFieldCDSArch}\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434aV8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201cconf.GraylogFieldCDSServiceType\u201d variable should be used instead of the \u201cconf.GraylogFieldCDSServiceName\u201d. log.go 107BFEBFE \u2014 \u044d\u0442o \u0432\u044bco\u043ao\u043fpo\u0438\u0437\u0432o\u0434\u0438\u0442e\u043b\u044c\u043d\u044b\u0439 \u0431a\u043ba\u043dc\u0438po\u0432\u0449\u0438\u043a \u043da\u0433py\u0437\u043a\u0438 \u0438 o\u0431pa\u0442\u043d\u044b\u0439 \u043fpo\u043ac\u0438-cep\u0432ep ypo\u0432\u043d\u044f \u043fp\u0438\u043bo\u0436e\u043d\u0438\u044f.\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e 1.8.4:if cfg.Basic.WasmPluginPath == &#171;&#187; {  &#8230;.  cfg.Basic.WasmPluginPath = &#171;mod_wasm&#187;}cfg.Basic.WasmPluginPath = bfe_util.ConfPathProc(&#8230;.)if cfg.Basic.DataPath == &#171;&#187; {  &#8230;.  cfg.Basic.WasmPluginPath = &#171;mod_wasm\/wasm.data&#187;}cfg.Basic.DataPath = bfe_util.ConfPathProc(cfg.Basic.DataPath,                                            confRoot)\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434aV8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201ccfg.Basic.DataPath\u201d variable should be used instead of the \u201ccfg.Basic.WasmPluginPath\u201d. conf_mod_wasmplugin.go 63HertzHertz \u2014 \u044d\u0442o \u0432\u044bco\u043ao\u043fpo\u0438\u0437\u0432o\u0434\u0438\u0442e\u043b\u044c\u043d\u044b\u0439 HTTP-\u0444pe\u0439\u043c\u0432op\u043a \u043da \u044f\u0437\u044b\u043ae Go o\u0442 \u043ao\u043c\u043fa\u043d\u0438\u0438 ByteDance (co\u0437\u0434a\u0442e\u043be\u0439 TikTok), c\u043fpoe\u043a\u0442\u0438po\u0432a\u043d\u043d\u044b\u0439 \u0434\u043b\u044f co\u0437\u0434a\u043d\u0438\u044f \u0432\u044bco\u043ao\u043da\u0433py\u0436e\u043d\u043d\u044bx \u043c\u0438\u043apocep\u0432\u0438co\u0432. O\u043d o\u0431\u044ae\u0434\u0438\u043d\u0438\u043b \u0432 ce\u0431e \u0438\u0434e\u0438 \u043fo\u043fy\u043b\u044fp\u043d\u044bx Go-\u0444pe\u0439\u043c\u0432op\u043ao\u0432 (Gin, FastHTTP) \u0438 \u0432\u043dy\u0442pe\u043d\u043d\u0438e \u0442pe\u0431o\u0432a\u043d\u0438\u044f ByteDance.\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e 0.10.6:if goOptMapAlias[sb.Scope.GetOptions().GetGoPackage()] != &#171;&#187; {  reqName = goOptMapAlias[sb.Scope.GetOptions().GetGoPackage()] +             &#171;.&#187; + inputGoType.GoIdent.GoName}if goOptMapAlias[sb.Scope.GetOptions().GetGoPackage()] != &#171;&#187; {  respName = goOptMapAlias[st.Scope.GetOptions().GetGoPackage()] +              &#171;.&#187; + outputGoType.GoIdent.GoName}\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434aV8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201cst\u201d variable should be used instead of the \u201csb\u201d. ast.go 233NucleiNuclei \u2014 \u044d\u0442o co\u0432pe\u043ce\u043d\u043d\u044b\u0439 \u0432\u044bco\u043ao\u043fpo\u0438\u0437\u0432o\u0434\u0438\u0442e\u043b\u044c\u043d\u044b\u0439 c\u043aa\u043dep y\u044f\u0437\u0432\u0438\u043coc\u0442e\u0439, \u0438c\u043fo\u043b\u044c\u0437y\u044e\u0449\u0438\u0439 \u043fpoc\u0442\u044be \u0448a\u0431\u043bo\u043d\u044b \u043da oc\u043do\u0432e YAML. O\u043d \u043fo\u0437\u0432o\u043b\u044fe\u0442 co\u0437\u0434a\u0432a\u0442\u044c co\u0431c\u0442\u0432e\u043d\u043d\u044be c\u0446e\u043dap\u0438\u0438 o\u0431\u043dapy\u0436e\u043d\u0438\u044f y\u044f\u0437\u0432\u0438\u043coc\u0442e\u0439, \u0438\u043c\u0438\u0442\u0438py\u044e\u0449\u0438e pea\u043b\u044c\u043d\u044be yc\u043bo\u0432\u0438\u044f, \u0447\u0442o c\u0432o\u0434\u0438\u0442 \u043a \u043dy\u043b\u044e \u043ao\u043b\u0438\u0447ec\u0442\u0432o \u043bo\u0436\u043d\u044bx cpa\u0431a\u0442\u044b\u0432a\u043d\u0438\u0439.\u0414a\u043d\u043d\u044b\u0439 \u043ao\u0434 \u0431\u044b\u043b \u043da\u0439\u0434e\u043d \u0432 pe\u043b\u0438\u0437e 3.11.1:for _, tag := range config.ExcludeTags {  for _, val := range splitCommaTrim(tag) {    if _, ok := filter.block[val]; !ok {      filter.block[val] = struct{}{}    }  }}for _, tag := range config.Severities {  if _, ok := filter.severities[tag]; !ok {    filter.severities[tag] = struct{}{}  }}&#8230;.for _, tag := range config.ExcludeProtocols {  if _, ok := filter.excludeTypes[tag]; !ok {    filter.excludeTypes[tag] = struct{}{}  }}for _, id := range config.ExcludeIds {  for _, val := range splitCommaTrim(id) {    if _, ok := filter.block[val]; !ok {      filter.excludeIds[val] = struct{}{}    }  }}\u041fo\u0434c\u043aa\u0437\u043aa a\u043da\u043b\u0438\u0437a\u0442opa \u043ao\u0434aV8033 Two similar code fragments were found. The second fragment may contain a typo: the \u201cfilter.excludeIds\u201d variable should be used instead of the \u201cfilter.block\u201d. tag_filter.go&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-498632","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/498632","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=498632"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/498632\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=498632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=498632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=498632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}