{"id":478491,"date":"2026-05-04T10:16:01","date_gmt":"2026-05-04T10:16:01","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=478491"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=478491","title":{"rendered":"CodeClone 2.0: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0435 \u0440\u0435\u0432\u044c\u044e Python-\u043a\u043e\u0434\u0430 \u0434\u043b\u044f CI, IDE \u0438 AI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u0447\u0438\u043d\u0430\u043b CodeClone, \u044d\u0442\u043e \u0431\u044b\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442: \u043d\u0430\u0439\u0442\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043a\u043b\u043e\u043d\u044b \u0432 Python-\u043a\u043e\u0434\u0435 \u0438 \u043d\u0435 \u0434\u0430\u0442\u044c \u0438\u043c \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443.<\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044b\u0448\u0435\u043b CodeClone 2.0.0, \u0438 \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442.<\/p>\n<p>\u041d\u0435 \u201c\u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043b\u0438\u043d\u0442\u0435\u0440\u201d, \u043d\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c Ruff, mypy, pytest, Bandit \u0438\u043b\u0438 Semgrep, \u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0440\u0435\u0432\u044c\u044e: \u043e\u043d \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 Python-\u043a\u043e\u0434\u0430, \u043e\u0442\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0439 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u0433 \u043e\u0442 \u043d\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0439, \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u043a\u0438 \u0441 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u0438 \u0434\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0432 CLI, HTML-\u043e\u0442\u0447\u0435\u0442\u0435, GitHub Actions, VS Code, Claude Desktop, Codex \u0438 \u0447\u0435\u0440\u0435\u0437 MCP.<\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u043f\u0440\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u043b\u0430\u0433\u043e\u0432 CLI. \u041f\u0440\u043e \u0444\u043b\u0430\u0433\u0438 \u0435\u0441\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0432\u043e \u0447\u0442\u043e CodeClone \u0432\u044b\u0440\u043e\u0441 \u043a\u0430\u043a \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0438 \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u0435\u043d \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u0435\u0439\u0447\u0430\u0441, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0441\u0451 \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435 \u0441\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 AI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0430\u0433\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435 \u201c\u043a\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 diff\u201d, \u0430 \u201c\u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u0434\u0430\u0434\u0443\u0442 \u044d\u0442\u043e\u043c\u0443 diff \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u0445\u0443\u0434\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u201d. CodeClone 2.0 \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u0440\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u043e\u0439: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0435 \u0440\u0435\u0432\u044c\u044e, baseline-aware CI, \u0435\u0434\u0438\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0447\u0435\u0442\u0430 \u0438 MCP-\u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u0430\u044f \u043d\u0435 \u043d\u0430 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0434\u0440\u044f\u0434, \u0430 \u043d\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0440\u0435\u0432\u044c\u044e.<\/p>\n<h3>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0435 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c<\/h3>\n<p>\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430 \u0440\u0435\u0434\u043a\u043e \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435\u043c.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0438\u0445\u043e:<\/p>\n<ul>\n<li>\n<p>\u0433\u0434\u0435-\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432\u0435\u0442\u043a\u0443 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0434\u0435-\u0442\u043e \u0432 guard-\u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043e\u0434\u043d\u0430 \u043a\u043e\u043f\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0436\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0439;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0434\u0435-\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0441\u0442\u0430\u043b \u0442\u043e\u0447\u043a\u043e\u0439, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0434\u0435-\u0442\u043e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 API \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u201c\u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u043b\u043e\u043c\u201d;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0434\u0435-\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043d\u043e coverage \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u043d\u0435\u0439 \u043d\u0438\u0447\u0435\u0433\u043e;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0434\u0435-\u0442\u043e \u0430\u0433\u0435\u043d\u0442\u0443 \u0434\u0430\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0438 \u043e\u043d \u043d\u0430\u0447\u0430\u043b \u0447\u0438\u043d\u0438\u0442\u044c \u043d\u0435 \u0442\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 CI \u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u0437\u0440\u0435\u043b\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043e\u043d \u0437\u0430\u0432\u0430\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u043c \u0434\u043e\u043b\u0433\u0435. \u0415\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043c\u044f\u0433\u043a\u043e\u0439, \u043e\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u043e\u0442\u0434\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0443 \u0432\u0435\u0441\u044c \u043e\u0442\u0447\u0435\u0442, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u0439 \u0448\u0443\u043c.<\/p>\n<p>CodeClone 2.0 \u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u0434\u0435\u0438:<\/p>\n<blockquote>\n<p>\u041e\u0442\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e \u0432\u0430\u0436\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0442 \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0448\u0443\u043c\u0430 \u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442: \u0447\u0442\u043e \u043d\u043e\u0432\u043e\u0435, \u0447\u0442\u043e \u0443\u0436\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e baseline-\u043e\u043c, \u0447\u0442\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 CI \u0438 \u043a\u0443\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c.<\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u043e \u043d\u0430 \u0432\u0435\u0441\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430.<\/p>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0432\u0430\u0436\u043d\u0435\u0435 \u0441 AI-\u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438<\/h3>\n<p>\u0421 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c AI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442, \u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435.<\/p>\n<p>\u0410\u0433\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0440\u0430\u0437\u043d\u0435\u0441\u0442\u0438 \u043f\u0440\u0430\u0432\u043a\u0443 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0444\u0430\u0439\u043b\u0430\u043c, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u0438\u043b\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u044b. \u041d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0440\u0435\u0432\u044c\u044e:<\/p>\n<ul>\n<li>\n<p>\u044d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u0434\u043e\u043b\u0433 \u0438\u043b\u0438 \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439?<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u043b\u043e production-\u043a\u043e\u0434 \u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0441\u0442\u044b?<\/p>\n<\/li>\n<li>\n<p>\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0438\u043b\u0438 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e?<\/p>\n<\/li>\n<li>\n<p>\u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u043a\u0440\u044b\u0442 \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u0438\u043b\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432\u043d\u0435 coverage scope?<\/p>\n<\/li>\n<li>\n<p>\u0430\u0433\u0435\u043d\u0442 \u0447\u0438\u043d\u0438\u0442 \u0432\u0430\u0436\u043d\u044b\u0439 hotspot \u0438\u043b\u0438 \u0442\u0440\u0430\u0442\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u0439 \u0448\u0443\u043c?<\/p>\n<\/li>\n<li>\n<p>\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u044d\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 CI?<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441 \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f. \u041d\u0435 \u0440\u0430\u0441\u043f\u043b\u044b\u0432\u0447\u0430\u0442\u043e\u0435 \u201c\u0441\u0434\u0435\u043b\u0430\u0439 \u0445\u043e\u0440\u043e\u0448\u043e\u201d, \u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b: \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0433\u0434\u0435 \u0440\u0438\u0441\u043a, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u043c, \u0447\u0442\u043e \u0443\u0436\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e baseline-\u043e\u043c, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c merge.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 CodeClone 2.0 \u044f \u0432\u0441\u0451 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440. \u0421\u043a\u043e\u0440\u0435\u0435 \u044d\u0442\u043e \u0441\u043b\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0439 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438: \u043e\u043d \u043d\u0435 \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434 \u0437\u0430 \u0430\u0433\u0435\u043d\u0442\u0430 \u0438 \u043d\u0435 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u0434 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0440\u0430\u043d\u044c\u0448\u0435.<\/p>\n<h3>Baseline: \u0441\u0442\u0430\u0440\u044b\u0439 \u0434\u043e\u043b\u0433 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b<\/h3>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u0430\u044f \u0438\u0434\u0435\u044f CodeClone \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0447\u0435\u0440\u0435\u0437 baseline.<\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u201c\u0443 \u0432\u0430\u0441 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0438\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0432\u0441\u0451\u201d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442:<\/p>\n<ol>\n<li>\n<p>\u041e\u0434\u0438\u043d \u0440\u0430\u0437 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0445 \u043e\u0442\u0434\u0435\u043b\u044f\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0434\u043e\u043b\u0433 \u043e\u0442 \u043d\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p>\u0412 CI \u043f\u0430\u0434\u0430\u0435\u043c \u043d\u0430 \u043d\u043e\u0432\u043e\u043c, \u0430 \u043d\u0435 \u043d\u0430 \u0432\u0441\u0435\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u043c.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"bash\">uv tool install codeclonecodeclone . --update-baselinecodeclone . --ci<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043d\u043e \u0438 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c production-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0433\u0434\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b \u0438 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u043b\u0433.<\/p>\n<p>Baseline \u0432 CodeClone \u2014 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u201c\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 JSON\u201d. \u042d\u0442\u043e \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442 \u0441 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, fingerprint-\u0432\u0435\u0440\u0441\u0438\u0435\u0439, python tag \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438. \u0415\u0441\u043b\u0438 baseline \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0443 \u0438\u043b\u0438 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d, CI \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0438\u0434, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u041e\u043d \u044f\u0432\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u0443\u0445\u043e, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430. \u0411\u0435\u0437 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e baseline \u043b\u044e\u0431\u043e\u0439 quality gate \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u0432 \u0448\u0443\u043c, \u043b\u0438\u0431\u043e \u0432 \u0434\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u044e.<\/p>\n<h3>\u041e\u0434\u0438\u043d \u0430\u043d\u0430\u043b\u0438\u0437, \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439<\/h3>\n<p>\u0412 CodeClone 2.0 \u044f \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443:<\/p>\n<blockquote>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2014 \u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438.<\/p>\n<\/blockquote>\n<p>CLI, HTML, JSON, Markdown, SARIF, MCP, VS Code extension, Claude Desktop bundle, Codex plugin \u0438 GitHub Action \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u0430\u0432\u0434\u0443. \u041e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0444\u043e\u0440\u043c\u0435, \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.<\/p>\n<p>\u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u043e \u0434\u0432\u0443\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c.<\/p>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0433\u0430\u0434\u0430\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432 HTML \u043e\u0434\u043d\u043e, \u0432 CI \u0434\u0440\u0443\u0433\u043e\u0435, \u0430 \u0430\u0433\u0435\u043d\u0442 \u0447\u0435\u0440\u0435\u0437 MCP \u0443\u0432\u0438\u0434\u0435\u043b \u0442\u0440\u0435\u0442\u044c\u0435.<\/p>\n<p>\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435. VS Code extension \u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434 \u0437\u0430\u043d\u043e\u0432\u043e. Claude Desktop bundle \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. Codex plugin \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u201c\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432\u044b\u0435\u201d \u043d\u0430\u0445\u043e\u0434\u043a\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442 \u0436\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 <code>codeclone-mcp<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0435 \u0436\u0435 \u043e\u0442\u0447\u0435\u0442\u044b \u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 CodeClone 2.0 \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 PyPI. \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0432\u044c\u044e \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0435:<\/p>\n<ul>\n<li>\n<p>CLI \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 CI;<\/p>\n<\/li>\n<li>\n<p>HTML-\u043e\u0442\u0447\u0435\u0442 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>JSON\/Markdown\/Text\/SARIF \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>MCP \u0434\u043b\u044f AI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0438 IDE;<\/p>\n<\/li>\n<li>\n<p>VS Code extension \u0434\u043b\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435;<\/p>\n<\/li>\n<li>\n<p>Claude Desktop bundle \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 <code>.mcpb<\/code>;<\/p>\n<\/li>\n<li>\n<p>Codex plugin \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>composite GitHub Action \u0434\u043b\u044f PR \u0438 CI.<\/p>\n<\/li>\n<\/ul>\n<h3>MCP: \u043d\u0435 \u201c\u043e\u0442\u0434\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0443 \u0432\u0435\u0441\u044c \u043e\u0442\u0447\u0435\u0442\u201d, \u0430 \u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u043f\u043e \u0440\u0435\u0432\u044c\u044e<\/h3>\n<p>MCP \u0441\u0442\u0430\u043b \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 CodeClone 2.0.<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b \u0435\u0433\u043e \u043a\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u041f\u043e\u0442\u043e\u043c \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u0430\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c: \u0430\u0433\u0435\u043d\u0442\u0430\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u044b \u043e\u0442\u0447\u0435\u0442\u0430 \u0438 \u043d\u0430\u0434\u0435\u044f\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u0430\u043c\u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0443\u0442\u0441\u044f.<\/p>\n<p>MCP \u0432 CodeClone \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 <code>triage-first<\/code>.<\/p>\n<p>\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0442\u0430\u043a\u043e\u0439:<\/p>\n<ol>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u0443\u044e \u0441\u0432\u043e\u0434\u043a\u0443.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c production-first triage.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c hotspot-\u0430\u043c.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u0434\u043d\u0443 \u043d\u0430\u0445\u043e\u0434\u043a\u0443.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0437\u044f\u0442\u044c remediation-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0430\u0445\u043e\u0434\u043a\u0443 \u043a\u0430\u043a reviewed \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 MCP-\u0441\u0435\u0441\u0441\u0438\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0436\u0435 \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435:<\/p>\n<ul>\n<li>\n<p>MCP read-only \u043f\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0443;<\/p>\n<\/li>\n<li>\n<p>\u043e\u043d \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 baseline;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435 \u043f\u0438\u0448\u0435\u0442 cache \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438\u0441\u0442\u0438\u043d\u044b;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 MCP-only \u043d\u0430\u0445\u043e\u0434\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u201c\u0447\u0442\u043e-\u0442\u043e \u0440\u044f\u0434\u043e\u043c\u201d \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f AI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0430\u0433\u0435\u043d\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u2014 \u043d\u0435 \u0442\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u201c\u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0451\u201d. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u0447\u0435\u0441\u0442\u043d\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.<\/p>\n<p>\u0414\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0430 \u0444\u043e\u0440\u043c\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u0434\u0430\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043d\u0430\u0445\u043e\u0434\u043e\u043a, \u0430\u0433\u0435\u043d\u0442 \u043b\u0435\u0433\u043a\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0434\u043e\u0440\u043e\u0433\u0443\u044e \u0438 \u0448\u0443\u043c\u043d\u0443\u044e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 MCP \u0432 CodeClone \u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a \u201c\u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443\u201d. \u041e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a control surface: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0440\u0430\u0442\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430, \u043f\u043e\u0442\u043e\u043c triage, \u043f\u043e\u0442\u043e\u043c hotspot, \u043f\u043e\u0442\u043e\u043c \u043e\u0434\u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u043a\u0430.<\/p>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 MCP-\u0447\u0430\u0441\u0442\u0438:<\/p>\n<pre><code class=\"bash\">uv tool install \"codeclone[mcp]\"codeclone-mcp --transport stdio<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 <code>stdio<\/code> \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c. HTTP-\u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u0435\u0441\u0442\u044c, \u043d\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c.<\/p>\n<h3>HTML-\u043e\u0442\u0447\u0435\u0442 \u0441\u0442\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0432\u044c\u044e<\/h3>\n<p>\u0412 \u0440\u0430\u043d\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 HTML-\u043e\u0442\u0447\u0435\u0442 \u0431\u044b\u043b \u0441\u043a\u043e\u0440\u0435\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430.<\/p>\n<p>\u0412 2.0 \u043e\u043d \u0441\u0442\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0432\u044c\u044e.<\/p>\n<p>\u0422\u0430\u043c \u0435\u0441\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u043e\u0431\u0449\u0438\u0439 Overview;<\/p>\n<\/li>\n<li>\n<p>\u0432\u043a\u043b\u0430\u0434\u043a\u0430 Clones;<\/p>\n<\/li>\n<li>\n<p>Quality \u0441 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438 \u0438 report-only \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>Dependencies \u0441 \u0446\u0438\u043a\u043b\u0430\u043c\u0438 \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0446\u0435\u043f\u043e\u0447\u0435\u043a;<\/p>\n<\/li>\n<li>\n<p>Dead Code;<\/p>\n<\/li>\n<li>\n<p>Suggestions;<\/p>\n<\/li>\n<li>\n<p>Findings;<\/p>\n<\/li>\n<li>\n<p>IDE-\u0441\u0441\u044b\u043b\u043a\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440;<\/p>\n<\/li>\n<li>\n<p>provenance-\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f: baseline, cache, runtime, \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0445\u0435\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c HTML \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u0441\u043c\u044b\u0441\u043b. \u041e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0430\u043a\u0442\u044b \u0438\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u043e\u0442\u0447\u0435\u0442\u0430. \u0415\u0441\u043b\u0438 UI \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u201creport-only\u201d, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0438\u043c\u0435\u043d\u043d\u043e report-only: \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f \u0440\u0435\u0432\u044c\u044e, \u043d\u043e \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 gates \u0438 \u043d\u0435 \u043f\u0440\u0438\u0442\u0432\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439.<\/p>\n<p>\u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u043b\u043e\u0435\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Coverage Join \u0438 Security Surfaces.<\/p>\n<h3>Coverage Join: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0441 \u0442\u0435\u0441\u0442\u0430\u043c\u0438<\/h3>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u0447 2.0 \u2014 Coverage Join.<\/p>\n<p>\u0421\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 coverage \u0447\u0430\u0441\u0442\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u0435\u043d. 95% \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441: \u201c\u043f\u043e\u043a\u0440\u044b\u0442\u0430 \u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u0440\u043e\u0433\u0430\u044e?\u201d<\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u0431\u0435\u0437 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0442\u043e\u0436\u0435 \u043d\u0435\u043f\u043e\u043b\u043d\u0430\u044f. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0439, \u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043a\u0440\u044b\u0442\u043e\u0439. \u0418\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f \u043f\u043e \u0446\u0438\u043a\u043b\u043e\u043c\u0430\u0442\u0438\u043a\u0435, \u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u043c \u043f\u0443\u0442\u0438 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0430 \u0432 <code>coverage.xml<\/code>.<\/p>\n<p>Coverage Join \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 Cobertura XML \u0441 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u043c\u0438 CodeClone:<\/p>\n<pre><code class=\"bash\">codeclone . --coverage coverage.xml --fail-on-untested-hotspots --coverage-min 50<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430:<\/p>\n<ul>\n<li>\n<p>coverage hotspots \u2014 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u0440\u0438\u0441\u043a\u043e\u043c \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\u043c;<\/p>\n<\/li>\n<li>\n<p>scope gaps \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 CodeClone \u0432\u0438\u0434\u0438\u0442, \u043d\u043e coverage-\u0444\u0430\u0439\u043b \u043d\u0435 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435. \u201c\u041f\u043b\u043e\u0445\u043e \u043f\u043e\u043a\u0440\u044b\u0442\u043e\u201d \u0438 \u201c\u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u043e \u0432 coverage.xml\u201d \u2014 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0438 \u0432 \u0440\u0435\u0432\u044c\u044e \u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>\u0414\u043b\u044f CI \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 gate:<\/p>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e \u0440\u0438\u0441\u043a\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u043a\u0440\u044b\u0442\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f.<\/p>\n<\/blockquote>\n<p>\u0414\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 \u044d\u0442\u043e \u0435\u0449\u0451 \u0432\u0430\u0436\u043d\u0435\u0435: \u043e\u043d \u0432\u0438\u0434\u0438\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u201c\u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043a\u043e\u0434\u201d, \u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0442\u0435\u0441\u0442\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043a\u0443 \u043d\u0430 \u043a\u043e\u0441\u043c\u0435\u0442\u0438\u043a\u0443 \u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u0440\u0438\u0441\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u0432\u0441\u043b\u0435\u043f\u0443\u044e.<\/p>\n<h3>Security Surfaces: \u043d\u0435 SAST, \u0430 \u043a\u0430\u0440\u0442\u0430 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446<\/h3>\n<p>\u0421\u0430\u043c\u0430\u044f \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0444\u0438\u0447\u0430 2.0 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043e\u043a \u2014 Security Surfaces.<\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043b\u043e\u0445\u043e\u0439 security scanner:<\/p>\n<ul>\n<li>\n<p>\u043d\u0430\u0439\u0442\u0438 <code>eval<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430\u0439\u0442\u0438 <code>subprocess<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u0432\u0441\u0451 \u043a\u0440\u0430\u0441\u043d\u044b\u043c;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u043f\u0440\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u042f \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0445\u043e\u0442\u0435\u043b \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>CodeClone \u043d\u0435 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c security bugs. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u044b SAST-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, threat model, \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e CodeClone \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 security-relevant boundaries: \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0434\u043e\u0432\u0435\u0440\u0438\u044f.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u043c\u0443\u0442\u0430\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 integrity-\u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b;<\/p>\n<\/li>\n<li>\n<p>auth\/session\/token\/secret \u043e\u0431\u043b\u0430\u0441\u0442\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e report-only inventory. \u041d\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0431 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0435 CWE-\u0434\u0432\u0438\u0436\u043e\u043a \u0438 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0430 SAST.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0443\u0436\u043d\u043e?<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0435\u0432\u044c\u044e \u0432\u0430\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0442\u0430\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u0432\u044b\u0441\u043e\u043a\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p>\u0441\u043b\u0430\u0431\u043e\u0435 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c;<\/p>\n<\/li>\n<li>\n<p>\u043a\u043b\u043e\u043d\u043e\u0432\u0430\u044f \u0434\u0438\u0432\u0435\u0440\u0433\u0435\u043d\u0446\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 API.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 2.0 Security Surfaces \u0443\u0436\u0435 \u0432\u0438\u0434\u043d\u044b \u0432 HTML, CLI, MCP \u0438 VS Code extension. \u042d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0433. \u0414\u0430\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0442 \u0441\u043b\u043e\u0439 \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0440\u0430\u0441\u0442\u0438 \u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0443\u043c\u043d\u043e\u0433\u043e security pressure, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0441\u0438\u0433\u043d\u0430\u043b \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f \u0447\u0435\u0441\u0442\u043d\u044b\u043c.<\/p>\n<h3>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438: \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u201c\u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u0430\u201d \u0443\u0448\u043b\u0430<\/h3>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 2.0 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0430\u0441\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0430\u044f \u0432\u0435\u0449\u044c: \u043f\u0440\u0435\u0436\u043d\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0433\u043b\u0443\u0431\u0438\u043d\u0435 dependency chains \u0431\u044b\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u0440\u0443\u0431\u044b\u043c.<\/p>\n<p>\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u043e\u0433 \u0432\u0440\u043e\u0434\u0435 \u201c8 \u0434\u043b\u044f \u0432\u0441\u0435\u0445\u201d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e, \u043d\u043e \u043d\u0435\u0447\u0435\u0441\u0442\u0435\u043d. \u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0430\u043a\u0435\u0442 \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441 CLI, MCP, \u043e\u0442\u0447\u0435\u0442\u0430\u043c\u0438, IDE-\u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u0438 action-\u0441\u043b\u043e\u0435\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u043e\u0439.<\/p>\n<p>\u0412 2.0 Dependencies \u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>average depth;<\/p>\n<\/li>\n<li>\n<p>p95 depth;<\/p>\n<\/li>\n<li>\n<p>max depth;<\/p>\n<\/li>\n<li>\n<p>longest chains;<\/p>\n<\/li>\n<li>\n<p>cycles.<\/p>\n<\/li>\n<\/ul>\n<p>\u0426\u0438\u043a\u043b\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0436\u0435\u0441\u0442\u043a\u0438\u043c \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u043c. \u0410 \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0430\u0446\u0438\u043a\u043b\u0438\u0447\u043d\u044b\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 hotspot, \u0430 \u043d\u0435 \u043a\u0430\u043a \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u0433\u043e\u0432\u043e\u0440.<\/p>\n<p>\u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u043d\u0435 \u201c\u043d\u0430\u0442\u044f\u043d\u0443\u0442\u044c \u043c\u0435\u0442\u0440\u0438\u043a\u0443 \u043d\u0430 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 score\u201d, \u0430 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0448\u0442\u0440\u0430\u0444\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0437 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0445 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0439.<\/p>\n<h3>API Surface \u0438 Adoption: \u0440\u0435\u0432\u044c\u044e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430<\/h3>\n<p>\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043b\u043e\u0439 2.0 \u2014 API Surface Inventory.<\/p>\n<p>\u041e\u043d \u043d\u0443\u0436\u0435\u043d \u043d\u0435 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u201c\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043c\u043d\u043e\u0433\u043e, \u0432\u0430\u043c \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0441\u0442\u044b\u0434\u043d\u043e\u201d. \u041e\u043d \u043d\u0443\u0436\u0435\u043d, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>\u043a\u0430\u043a\u0438\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0441\u0442\u0430\u043b\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0447\u0442\u043e \u0438\u0441\u0447\u0435\u0437\u043b\u043e;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0434\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u0442\u044c \u043b\u0438 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e metrics baseline.<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u044f\u0434\u043e\u043c \u0441 \u044d\u0442\u0438\u043c \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f Adoption-\u0431\u043b\u043e\u043a:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u0442\u0438\u043f\u043e\u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u0442\u0438\u043f\u043e\u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 docstring-\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u043f\u043e typing\/docstring baseline.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e \u201c\u043b\u044e\u0431\u0438\u0442\u0435 \u043b\u0438 \u0432\u044b \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438\u201d. \u042d\u0442\u043e \u043f\u0440\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u0443\u044e \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 API, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432\u0438\u0434\u043d\u044b \u0432 review surface, \u0430 \u043d\u0435 \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u043b\u0438\u0437\u0430.<\/p>\n<h3>Overloaded Modules: report-only, \u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e<\/h3>\n<p>CodeClone 2.0 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 overloaded modules.<\/p>\n<p>\u042d\u0442\u043e \u043d\u0435 gate \u0438 \u043d\u0435 \u201cgod-module \u043d\u0430\u0439\u0434\u0435\u043d, \u0441\u0440\u043e\u0447\u043d\u043e \u0440\u0435\u0436\u044c\u0442\u0435\u201d. \u0421\u043a\u043e\u0440\u0435\u0435 \u0440\u0430\u043d\u0436\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0433\u0434\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438: \u0440\u0430\u0437\u043c\u0435\u0440, \u0441\u0432\u044f\u0437\u043d\u043e\u0441\u0442\u044c, \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439, \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u0445.<\/p>\n<p>\u041d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0432\u043e\u043f\u0440\u043e\u0441:<\/p>\n<blockquote>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435 \u0432\u0441\u043b\u0435\u043f\u0443\u044e, \u0441 \u043a\u0430\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0430\u0447\u0430\u0442\u044c?<\/p>\n<\/blockquote>\n<p>\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0435\u0435, \u0447\u0435\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043e\u0434\u0438\u043d \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 CC.<\/p>\n<h3>\u041d\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u044b: VS Code, Claude Desktop, Codex<\/h3>\n<p>\u0412 2.0 CodeClone \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e CLI-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c.<\/p>\n<h4>VS Code extension<\/h4>\n<p>VS Code extension \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 MCP-\u043a\u043b\u0438\u0435\u043d\u0442:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 <code>codeclone-mcp<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 triage-first \u043e\u0431\u0437\u043e\u0440;<\/p>\n<\/li>\n<li>\n<p>\u0434\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 Coverage Join \u0438 Security Surfaces, \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u0438\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0443\u0432\u0430\u0436\u0430\u0435\u0442 workspace trust;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u0434 \u043d\u0430\u0440\u0443\u0436\u0443 \u0438 \u043d\u0435 \u0441\u0442\u0440\u043e\u0438\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u043d\u0435 \u201cHTML-\u043e\u0442\u0447\u0435\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 WebView\u201d. \u0418\u0434\u0435\u044f \u0434\u0440\u0443\u0433\u0430\u044f: \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0440\u0435\u0432\u044c\u044e \u0441 \u0431\u044b\u0441\u0442\u0440\u044b\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043e\u043c \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u043c \u043f\u0440\u044f\u043c\u043e \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435.<\/p>\n<p>Marketplace:<\/p>\n<p><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=orenlab.codeclone\" rel=\"noopener noreferrer nofollow\">https:\/\/marketplace.visualstudio.com\/items?itemName=orenlab.codeclone<\/a><\/p>\n<h4>Claude Desktop bundle<\/h4>\n<p>\u0414\u043b\u044f Claude Desktop \u0435\u0441\u0442\u044c <code>.mcpb<\/code> bundle. \u041e\u043d \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043d\u0435 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043c\u044b\u0441\u043b MCP. \u042d\u0442\u043e install wrapper, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 <code>codeclone-mcp<\/code> \u043a Claude Desktop \u0431\u0435\u0437 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432. \u0421\u0435\u0439\u0447\u0430\u0441 \u044f \u043f\u0440\u043e\u0431\u0443\u044e \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u0443\u0442\u044c \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0431\u0430\u043d\u0434\u043b\u0430 \u0432 Anthropic Directory.<\/p>\n<h4>Codex plugin<\/h4>\n<p>Codex plugin \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e discovery-\u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c, MCP-\u043a\u043e\u043d\u0444\u0438\u0433 \u0438 review skills. \u041e\u043d \u0442\u043e\u0436\u0435 \u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434 \u0441\u0430\u043c. \u0415\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430 \u043f\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u0443 CodeClone workflow: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u0437\u043e\u0440, \u043f\u043e\u0442\u043e\u043c triage, \u043f\u043e\u0442\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u043a\u0438.<\/p>\n<h3>GitHub Action: CodeClone \u0432 PR<\/h3>\n<p>\u0414\u043b\u044f CI \u0438 PR \u0435\u0441\u0442\u044c composite GitHub Action:<\/p>\n<pre><code class=\"yaml\">- uses: orenlab\/codeclone\/.github\/actions\/codeclone@v2  with:    fail-on-new: \"true\"    sarif: \"true\"    pr-comment: \"true\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u043d \u0443\u043c\u0435\u0435\u0442:<\/p>\n<ul>\n<li>\n<p>\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c baseline-aware \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c JSON \u0438 SARIF;<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c SARIF \u0432 GitHub Code Scanning;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c PR summary comment;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 pull request \u0431\u0435\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>Action \u0432 2.0 \u0442\u043e\u0436\u0435 \u0431\u044b\u043b \u0434\u043e\u0432\u0435\u0434\u0435\u043d \u0434\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0438: \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0435 inputs, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0443\u0442\u0435\u0439, \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 summary, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0438 \u0442\u0435\u0441\u0442\u044b.<\/p>\n<h3>\u0427\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 stable \u0432 CodeClone 2.0<\/h3>\n<p>\u0421\u043b\u043e\u0432\u043e stable \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u201c\u0432\u0441\u0435 \u0438\u0434\u0435\u0438 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c\u201d.<\/p>\n<p>\u041e\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0435:<\/p>\n<ul>\n<li>\n<p>\u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043f\u0430\u043a\u0435\u0442 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043a <code>codeclone<\/code>, \u0431\u0435\u0437 <code>--pre<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>codeclone[mcp]<\/code> \u0441\u0442\u0430\u043b \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 optional extra;<\/p>\n<\/li>\n<li>\n<p>CLI, report, baseline, cache \u0438 MCP \u0438\u043c\u0435\u044e\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043c\u0430\u0440\u043a\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a preview;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0443\u044e 2.0 release line;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0442\u0430\u0440\u044b\u0435 legacy-shim \u043f\u0443\u0442\u0438 \u0443\u0431\u0440\u0430\u043d\u044b;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u043e\u043a\u0440\u0443\u0433 cache, baseline \u0438 runtime compatibility \u0441\u0442\u0430\u043b\u0438 \u044f\u0432\u043d\u044b\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p>CodeClone \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043b\u0438\u043d\u0442\u0435\u0440\u044b \u0438 \u0442\u0435\u0441\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p>Security Surfaces \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 SAST;<\/p>\n<\/li>\n<li>\n<p>Coverage Join \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 coverage.py;<\/p>\n<\/li>\n<li>\n<p>MCP \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0430 \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439;<\/p>\n<\/li>\n<li>\n<p>HTML \u0438 IDE \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u201c\u043f\u0440\u0430\u0432\u0434\u0443\u201d.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430 \u044d\u0442\u043e, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e. \u0415\u0441\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043e\u0431\u0435\u0449\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u044c, \u043e\u043d \u0431\u044b\u0441\u0442\u0440\u043e \u0442\u0435\u0440\u044f\u0435\u0442 \u0434\u043e\u0432\u0435\u0440\u0438\u0435.<\/p>\n<h3>\u041f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c<\/h3>\n<p>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442:<\/p>\n<pre><code class=\"bash\">uv tool install codeclonecodeclone .codeclone . --html --open-html-report<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>CI-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439:<\/p>\n<pre><code class=\"bash\">codeclone . --update-baselinecodeclone . --ci<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>MCP \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0438 IDE:<\/p>\n<pre><code class=\"bash\">uv tool install \"codeclone[mcp]\"codeclone-mcp --transport stdio<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Coverage Join:<\/p>\n<pre><code class=\"bash\">codeclone . --coverage coverage.xml --fail-on-untested-hotspots<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>GitHub: <a href=\"https:\/\/github.com\/orenlab\/codeclone\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/orenlab\/codeclone<\/a><\/p>\n<\/li>\n<li>\n<p>PyPI: <a href=\"https:\/\/pypi.org\/project\/codeclone\/\" rel=\"noopener noreferrer nofollow\">https:\/\/pypi.org\/project\/codeclone\/<\/a><\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f: <a href=\"https:\/\/orenlab.github.io\/codeclone\/\" rel=\"noopener noreferrer nofollow\">https:\/\/orenlab.github.io\/codeclone\/<\/a><\/p>\n<\/li>\n<li>\n<p>Live HTML report: <a href=\"https:\/\/orenlab.github.io\/codeclone\/examples\/report\/\" rel=\"noopener noreferrer nofollow\">https:\/\/orenlab.github.io\/codeclone\/examples\/report\/<\/a><\/p>\n<\/li>\n<li>\n<p>VS Code Marketplace: <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=orenlab.codeclone\" rel=\"noopener noreferrer nofollow\">https:\/\/marketplace.visualstudio.com\/items?itemName=orenlab.codeclone<\/a><\/p>\n<\/li>\n<\/ul>\n<h3>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435<\/h3>\n<p>2.0 \u2014 \u044d\u0442\u043e \u043d\u0435 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430, \u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442.<\/p>\n<p>\u0411\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u0441\u0430\u043c\u043e\u043c\u0443 \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0432\u0430\u0436\u043d\u044b\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u043b\u0443\u0447\u0448\u0435\u0435 changed-scope \u0440\u0435\u0432\u044c\u044e \u0434\u043b\u044f PR;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 Security Surfaces \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e, \u043d\u043e \u043f\u043e-\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u0447\u0435\u0441\u0442\u043d\u043e\u0433\u043e pressure-\u0441\u0438\u0433\u043d\u0430\u043b\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u043b\u044f GitHub Action \u0438 marketplace-\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f;<\/p>\n<\/li>\n<li>\n<p>\u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 UX \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u0435\u0439\u0441\u043e\u0432 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 Python-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445.<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442\u0435 CodeClone \u043d\u0430 \u0441\u0432\u043e\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043c\u043d\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0433\u0438, \u043d\u043e \u0438 \u201c\u043d\u0435\u0443\u0434\u043e\u0431\u043d\u044b\u0435\u201d \u0432\u043e\u043f\u0440\u043e\u0441\u044b:<\/p>\n<ul>\n<li>\n<p>\u0433\u0434\u0435 \u0441\u0438\u0433\u043d\u0430\u043b \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0448\u0443\u043c\u043d\u044b\u043c;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0434\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u0435\u043d;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0434\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u043b\u044f \u0440\u0435\u0432\u044c\u044e;<\/p>\n<\/li>\n<li>\n<p>\u043a\u0430\u043a\u0438\u0435 MCP-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0430\u0433\u0435\u043d\u0442\u0443;<\/p>\n<\/li>\n<li>\n<p>\u0433\u0434\u0435 CI-gates \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0438\u043d\u0430\u0447\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>CodeClone 2.0 \u0432\u044b\u0440\u043e\u0441 \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u043a\u043b\u043e\u043d\u043e\u0432 \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0432\u044c\u044e. \u041d\u043e \u0435\u0433\u043e \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0442\u0435\u043c \u0436\u0435: \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0438\u0434, \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0437\u043d\u0430\u0435\u0442 \u0438\u0441\u0442\u0438\u043d\u0443 \u043e \u043a\u043e\u0434\u0435, \u0430 \u0447\u0435\u0441\u0442\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0444\u0430\u043a\u0442\u044b, \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u0438\u043b\u0438 \u0430\u0433\u0435\u043d\u0442\u0443.<\/p>\n<p>\u0415\u0441\u043b\u0438 AI-\u0430\u0433\u0435\u043d\u0442\u044b \u0434\u0435\u043b\u0430\u044e\u0442 \u043a\u043e\u0434 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435, \u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0440\u043e\u0434\u0435 CodeClone \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u0434\u043e\u0440\u043e\u0436\u0435 \u0432 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0435. \u041d\u0435 \u0437\u0430 \u0441\u0447\u0435\u0442 \u043c\u0430\u0433\u0438\u0438, \u0430 \u0437\u0430 \u0441\u0447\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432: baseline, canonical report, CI gates, Coverage Join, Security Surfaces \u0438 triage-first MCP.<\/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\/1031124\/\">https:\/\/habr.com\/ru\/articles\/1031124\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u0447\u0438\u043d\u0430\u043b CodeClone, \u044d\u0442\u043e \u0431\u044b\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442: \u043d\u0430\u0439\u0442\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043a\u043b\u043e\u043d\u044b \u0432 Python-\u043a\u043e\u0434\u0435 \u0438 \u043d\u0435 \u0434\u0430\u0442\u044c \u0438\u043c \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443.\u0421\u0435\u0439\u0447\u0430\u0441 \u0432\u044b\u0448\u0435\u043b CodeClone 2.0.0, \u0438 \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442.\u041d\u0435 \u201c\u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043b\u0438\u043d\u0442\u0435\u0440\u201d, \u043d\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c Ruff, mypy, pytest, Bandit \u0438\u043b\u0438 Semgrep, \u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0440\u0435\u0432\u044c\u044e: \u043e\u043d \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 Python-\u043a\u043e\u0434\u0430, \u043e\u0442\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0440\u044b\u0439 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u0433 \u043e\u0442 \u043d\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0439, \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u043a\u0438 \u0441 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u0438 \u0434\u0430\u0435\u0442 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0432 CLI, HTML-\u043e\u0442\u0447\u0435\u0442\u0435, GitHub Actions, VS Code, Claude Desktop, Codex \u0438 \u0447\u0435\u0440\u0435\u0437 MCP.\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u043f\u0440\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u043b\u0430\u0433\u043e\u0432 CLI. \u041f\u0440\u043e \u0444\u043b\u0430\u0433\u0438 \u0435\u0441\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f.\u0417\u0434\u0435\u0441\u044c \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0432\u043e \u0447\u0442\u043e CodeClone \u0432\u044b\u0440\u043e\u0441 \u043a\u0430\u043a \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0438 \u0437\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u0435\u043d \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0441\u0435\u0439\u0447\u0430\u0441, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0441\u0451 \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435 \u0441\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 AI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432.\u0415\u0441\u043b\u0438 \u0430\u0433\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435 \u201c\u043a\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 diff\u201d, \u0430 \u201c\u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0435 \u0434\u0430\u0434\u0443\u0442 \u044d\u0442\u043e\u043c\u0443 diff \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u0445\u0443\u0434\u0448\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u201d. CodeClone 2.0 \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u0440\u043e \u0442\u0430\u043a\u043e\u0439 \u0441\u043b\u043e\u0439: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0435 \u0440\u0435\u0432\u044c\u044e, baseline-aware CI, \u0435\u0434\u0438\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0442\u0447\u0435\u0442\u0430 \u0438 MCP-\u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c, \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u0430\u044f \u043d\u0435 \u043d\u0430 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0434\u0440\u044f\u0434, \u0430 \u043d\u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0440\u0435\u0432\u044c\u044e.\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0435 \u043d\u0430\u0447\u0430\u043b\u043e\u0441\u044c\u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430 \u0440\u0435\u0434\u043a\u043e \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435\u043c.\u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0438\u0445\u043e:\u0433\u0434\u0435-\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432\u0435\u0442\u043a\u0443 \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0438;\u0433\u0434\u0435-\u0442\u043e \u0432 guard-\u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043e\u0434\u043d\u0430 \u043a\u043e\u043f\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0436\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0439;\u0433\u0434\u0435-\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u0441\u0442\u0430\u043b \u0442\u043e\u0447\u043a\u043e\u0439, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438;\u0433\u0434\u0435-\u0442\u043e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 API \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u201c\u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u043b\u043e\u043c\u201d;\u0433\u0434\u0435-\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043d\u043e coverage \u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u043d\u0435\u0439 \u043d\u0438\u0447\u0435\u0433\u043e;\u0433\u0434\u0435-\u0442\u043e \u0430\u0433\u0435\u043d\u0442\u0443 \u0434\u0430\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0438 \u043e\u043d \u043d\u0430\u0447\u0430\u043b \u0447\u0438\u043d\u0438\u0442\u044c \u043d\u0435 \u0442\u043e.\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 CI \u043f\u043b\u043e\u0445\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0442\u0430\u043a\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u0437\u0440\u0435\u043b\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043e\u043d \u0437\u0430\u0432\u0430\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u0440\u043e\u043c \u0434\u043e\u043b\u0433\u0435. \u0415\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043c\u044f\u0433\u043a\u043e\u0439, \u043e\u043d\u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u043e\u0442\u0434\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0443 \u0432\u0435\u0441\u044c \u043e\u0442\u0447\u0435\u0442, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u0439 \u0448\u0443\u043c.CodeClone 2.0 \u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u0432\u043e\u043a\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u043e\u0439 \u0438\u0434\u0435\u0438:\u041e\u0442\u0434\u0435\u043b\u044f\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e \u0432\u0430\u0436\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0442 \u0444\u043e\u043d\u043e\u0432\u043e\u0433\u043e \u0448\u0443\u043c\u0430 \u0438 \u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442: \u0447\u0442\u043e \u043d\u043e\u0432\u043e\u0435, \u0447\u0442\u043e \u0443\u0436\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e baseline-\u043e\u043c, \u0447\u0442\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 CI \u0438 \u043a\u0443\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c.\u042d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u043e \u043d\u0430 \u0432\u0435\u0441\u044c \u0434\u0438\u0437\u0430\u0439\u043d \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430.\u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0432\u0430\u0436\u043d\u0435\u0435 \u0441 AI-\u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438\u0421 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c AI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442, \u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u0435\u0435.\u0410\u0433\u0435\u043d\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0440\u0430\u0437\u043d\u0435\u0441\u0442\u0438 \u043f\u0440\u0430\u0432\u043a\u0443 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0444\u0430\u0439\u043b\u0430\u043c, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u0438\u043b\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u0441\u0442\u044b. \u041d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0440\u0435\u0432\u044c\u044e:\u044d\u0442\u043e \u043d\u043e\u0432\u044b\u0439 \u0434\u043e\u043b\u0433 \u0438\u043b\u0438 \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439?\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u043b\u043e production-\u043a\u043e\u0434 \u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0441\u0442\u044b?\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0438\u043b\u0438 \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u043e?\u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u043e\u043a\u0440\u044b\u0442 \u0442\u0435\u0441\u0442\u0430\u043c\u0438 \u0438\u043b\u0438 \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432\u043d\u0435 coverage scope?\u0430\u0433\u0435\u043d\u0442 \u0447\u0438\u043d\u0438\u0442 \u0432\u0430\u0436\u043d\u044b\u0439 hotspot \u0438\u043b\u0438 \u0442\u0440\u0430\u0442\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u044b\u0439 \u0448\u0443\u043c?\u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u044d\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 CI?\u0412 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441 \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f. \u041d\u0435 \u0440\u0430\u0441\u043f\u043b\u044b\u0432\u0447\u0430\u0442\u043e\u0435 \u201c\u0441\u0434\u0435\u043b\u0430\u0439 \u0445\u043e\u0440\u043e\u0448\u043e\u201d, \u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u044b: \u0447\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0433\u0434\u0435 \u0440\u0438\u0441\u043a, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u043c, \u0447\u0442\u043e \u0443\u0436\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u043e baseline-\u043e\u043c, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c merge.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 CodeClone 2.0 \u044f \u0432\u0441\u0451 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e \u043a\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440. \u0421\u043a\u043e\u0440\u0435\u0435 \u044d\u0442\u043e \u0441\u043b\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e\u0439 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438: \u043e\u043d \u043d\u0435 \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434 \u0437\u0430 \u0430\u0433\u0435\u043d\u0442\u0430 \u0438 \u043d\u0435 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043d\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u0434 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0440\u0430\u043d\u044c\u0448\u0435.Baseline: \u0441\u0442\u0430\u0440\u044b\u0439 \u0434\u043e\u043b\u0433 \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u0430\u044f \u0438\u0434\u0435\u044f CodeClone \u2014 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0447\u0435\u0440\u0435\u0437 baseline.\u0412\u043c\u0435\u0441\u0442\u043e \u201c\u0443 \u0432\u0430\u0441 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0438\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u0432\u0441\u0451\u201d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442:\u041e\u0434\u0438\u043d \u0440\u0430\u0437 \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.\u041f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0445 \u043e\u0442\u0434\u0435\u043b\u044f\u0435\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0434\u043e\u043b\u0433 \u043e\u0442 \u043d\u043e\u0432\u044b\u0445 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0439.\u0412 CI \u043f\u0430\u0434\u0430\u0435\u043c \u043d\u0430 \u043d\u043e\u0432\u043e\u043c, \u0430 \u043d\u0435 \u043d\u0430 \u0432\u0441\u0435\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u043c.\u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:uv tool install codeclonecodeclone . &#8212;update-baselinecodeclone . &#8212;ci\u0414\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0422\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c \u0443\u0447\u0435\u0431\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u043d\u043e \u0438 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u043c production-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0433\u0434\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b \u0438 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u043b\u0433.Baseline \u0432 CodeClone \u2014 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u201c\u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0439 JSON\u201d. \u042d\u0442\u043e \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442 \u0441 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, fingerprint-\u0432\u0435\u0440\u0441\u0438\u0435\u0439, python tag \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438. \u0415\u0441\u043b\u0438 baseline \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u043c\u0443 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0443 \u0438\u043b\u0438 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d, CI \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0438\u0434, \u0447\u0442\u043e \u0432\u0441\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u041e\u043d \u044f\u0432\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f.\u0417\u0432\u0443\u0447\u0438\u0442 \u0441\u0443\u0445\u043e, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430. \u0411\u0435\u0437 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e baseline \u043b\u044e\u0431\u043e\u0439 quality gate \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u0432 \u0448\u0443\u043c, \u043b\u0438\u0431\u043e \u0432 \u0434\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u044e.\u041e\u0434\u0438\u043d \u0430\u043d\u0430\u043b\u0438\u0437, \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439\u0412 CodeClone 2.0 \u044f \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u0443:\u0410\u043d\u0430\u043b\u0438\u0437 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0434\u0438\u043d. \u0412\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2014 \u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u0438.CLI, HTML, JSON, Markdown, SARIF, MCP, VS Code extension, Claude Desktop bundle, Codex plugin \u0438 GitHub Action \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u0430\u0432\u0434\u0443. \u041e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0444\u043e\u0440\u043c\u0435, \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.\u042d\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u043e \u0434\u0432\u0443\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c.\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0433\u0430\u0434\u0430\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0432 HTML \u043e\u0434\u043d\u043e, \u0432 CI \u0434\u0440\u0443\u0433\u043e\u0435, \u0430 \u0430\u0433\u0435\u043d\u0442 \u0447\u0435\u0440\u0435\u0437 MCP \u0443\u0432\u0438\u0434\u0435\u043b \u0442\u0440\u0435\u0442\u044c\u0435.\u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435. VS Code extension \u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434 \u0437\u0430\u043d\u043e\u0432\u043e. Claude Desktop bundle \u043d\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440. Codex plugin \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u201c\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432\u044b\u0435\u201d \u043d\u0430\u0445\u043e\u0434\u043a\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442 \u0436\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 codeclone-mcp, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0438\u0442\u0430\u0435\u0442 \u0442\u0435 \u0436\u0435 \u043e\u0442\u0447\u0435\u0442\u044b \u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 CodeClone 2.0 \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 PyPI. \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0432\u044c\u044e \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u043e\u043a\u0440\u0443\u0433 \u043d\u0435\u0435:CLI \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 CI;HTML-\u043e\u0442\u0447\u0435\u0442 \u0434\u043b\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430;JSON\/Markdown\/Text\/SARIF \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438;MCP \u0434\u043b\u044f AI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0438 IDE;VS Code extension \u0434\u043b\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435;Claude Desktop bundle \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 .mcpb;Codex plugin \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f;composite GitHub Action \u0434\u043b\u044f PR \u0438 CI.MCP: \u043d\u0435 \u201c\u043e\u0442\u0434\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0443 \u0432\u0435\u0441\u044c \u043e\u0442\u0447\u0435\u0442\u201d, \u0430 \u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u043f\u043e \u0440\u0435\u0432\u044c\u044eMCP \u0441\u0442\u0430\u043b \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 CodeClone 2.0.\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u043b \u0435\u0433\u043e \u043a\u0430\u043a \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u041f\u043e\u0442\u043e\u043c \u0441\u0442\u0430\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432\u0430\u044f \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c: \u0430\u0433\u0435\u043d\u0442\u0430\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u044b \u043e\u0442\u0447\u0435\u0442\u0430 \u0438 \u043d\u0430\u0434\u0435\u044f\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u0441\u0430\u043c\u0438 \u0440\u0430\u0437\u0431\u0435\u0440\u0443\u0442\u0441\u044f.MCP \u0432 CodeClone \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 triage-first.\u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0442\u0430\u043a\u043e\u0439:\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u0440\u0430\u0442\u043a\u0443\u044e \u0441\u0432\u043e\u0434\u043a\u0443.\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c production-first triage.\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c hotspot-\u0430\u043c.\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043e\u0434\u043d\u0443 \u043d\u0430\u0445\u043e\u0434\u043a\u0443.\u0412\u0437\u044f\u0442\u044c remediation-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.\u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0430\u0445\u043e\u0434\u043a\u0443 \u043a\u0430\u043a reviewed \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 MCP-\u0441\u0435\u0441\u0441\u0438\u0438.\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0436\u0435 \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435:MCP read-only \u043f\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0443;\u043e\u043d \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438;\u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 baseline;\u043d\u0435 \u043f\u0438\u0448\u0435\u0442 cache \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438\u0441\u0442\u0438\u043d\u044b;\u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 MCP-only \u043d\u0430\u0445\u043e\u0434\u043a\u0438;\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044e, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b \u201c\u0447\u0442\u043e-\u0442\u043e \u0440\u044f\u0434\u043e\u043c\u201d \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e.\u0414\u043b\u044f AI-\u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0430\u0433\u0435\u043d\u0442\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u2014 \u043d\u0435 \u0442\u043e\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u201c\u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0451\u201d. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441\u0443\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u0447\u0435\u0441\u0442\u043d\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442.\u0414\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0430 \u0444\u043e\u0440\u043c\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c \u0434\u0430\u0442\u044c \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043d\u0430\u0445\u043e\u0434\u043e\u043a, \u0430\u0433\u0435\u043d\u0442 \u043b\u0435\u0433\u043a\u043e \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0434\u043e\u0440\u043e\u0433\u0443\u044e \u0438 \u0448\u0443\u043c\u043d\u0443\u044e \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 MCP \u0432 CodeClone \u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a \u201c\u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443\u201d. \u041e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u0430\u043a control surface: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0440\u0430\u0442\u043a\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430, \u043f\u043e\u0442\u043e\u043c triage, \u043f\u043e\u0442\u043e\u043c hotspot, \u043f\u043e\u0442\u043e\u043c \u043e\u0434\u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u043a\u0430.\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 MCP-\u0447\u0430\u0441\u0442\u0438:uv tool install &#171;codeclone[mcp]&#187;codeclone-mcp &#8212;transport stdio\u0414\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 stdio \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0443\u0442\u0435\u043c. HTTP-\u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u0435\u0441\u0442\u044c, \u043d\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c.HTML-\u043e\u0442\u0447\u0435\u0442 \u0441\u0442\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0432\u044c\u044e\u0412 \u0440\u0430\u043d\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 HTML-\u043e\u0442\u0447\u0435\u0442 \u0431\u044b\u043b \u0441\u043a\u043e\u0440\u0435\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430.\u0412 2.0 \u043e\u043d \u0441\u0442\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0435\u0432\u044c\u044e.\u0422\u0430\u043c \u0435\u0441\u0442\u044c:\u043e\u0431\u0449\u0438\u0439 Overview;\u0432\u043a\u043b\u0430\u0434\u043a\u0430 Clones;Quality \u0441 \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u043c\u0438 \u0438 report-only \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c\u0438;Dependencies \u0441 \u0446\u0438\u043a\u043b\u0430\u043c\u0438 \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0446\u0435\u043f\u043e\u0447\u0435\u043a;Dead Code;Suggestions;Findings;IDE-\u0441\u0441\u044b\u043b\u043a\u0438 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0432 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440;provenance-\u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f: baseline, cache, runtime, \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0445\u0435\u043c.\u041f\u0440\u0438 \u044d\u0442\u043e\u043c HTML \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u0441\u043c\u044b\u0441\u043b. \u041e\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0430\u043a\u0442\u044b \u0438\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u043e\u0442\u0447\u0435\u0442\u0430. \u0415\u0441\u043b\u0438 UI \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u201creport-only\u201d, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0438\u043c\u0435\u043d\u043d\u043e report-only: \u0441\u0438\u0433\u043d\u0430\u043b \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0434\u043b\u044f \u0440\u0435\u0432\u044c\u044e, \u043d\u043e \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 gates \u0438 \u043d\u0435 \u043f\u0440\u0438\u0442\u0432\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439.\u042d\u0442\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0441\u043b\u043e\u0435\u0432, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a Coverage Join \u0438 Security Surfaces.Coverage Join: \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u043d\u0430\u0445\u043e\u0434\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0441 \u0442\u0435\u0441\u0442\u0430\u043c\u0438\u041e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u0447 2.0 \u2014 Coverage Join.\u0421\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 coverage \u0447\u0430\u0441\u0442\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u0435\u043d. 95% \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441: \u201c\u043f\u043e\u043a\u0440\u044b\u0442\u0430 \u043b\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u0442\u0440\u043e\u0433\u0430\u044e?\u201d\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u0431\u0435\u0437 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0442\u043e\u0436\u0435 \u043d\u0435\u043f\u043e\u043b\u043d\u0430\u044f. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u043e\u0439, \u043d\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043a\u0440\u044b\u0442\u043e\u0439. \u0418\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442: \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u0441\u0442\u0440\u0430\u0448\u043d\u0430\u044f \u043f\u043e \u0446\u0438\u043a\u043b\u043e\u043c\u0430\u0442\u0438\u043a\u0435, \u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u043c \u043f\u0443\u0442\u0438 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u0430 \u0432 coverage.xml.Coverage Join \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 Cobertura XML \u0441 \u0435\u0434\u0438\u043d\u0438\u0446\u0430\u043c\u0438 CodeClone:codeclone . &#8212;coverage coverage.xml &#8212;fail-on-untested-hotspots &#8212;coverage-min 50\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0430:coverage hotspots \u2014 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u0440\u0438\u0441\u043a\u043e\u043c \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\u043c;scope gaps \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 CodeClone \u0432\u0438\u0434\u0438\u0442, \u043d\u043e coverage-\u0444\u0430\u0439\u043b \u043d\u0435 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442.\u042d\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435. \u201c\u041f\u043b\u043e\u0445\u043e \u043f\u043e\u043a\u0440\u044b\u0442\u043e\u201d \u0438 \u201c\u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u043e \u0432 coverage.xml\u201d \u2014 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0438 \u0432 \u0440\u0435\u0432\u044c\u044e \u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0442\u044c.\u0414\u043b\u044f CI \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 gate:\u0415\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u043e \u0440\u0438\u0441\u043a\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043b\u043e\u0445\u043e \u043f\u043e\u043a\u0440\u044b\u0442\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f.\u0414\u043b\u044f \u0430\u0433\u0435\u043d\u0442\u0430 \u044d\u0442\u043e \u0435\u0449\u0451 \u0432\u0430\u0436\u043d\u0435\u0435: \u043e\u043d \u0432\u0438\u0434\u0438\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u201c\u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043a\u043e\u0434\u201d, \u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0442\u0435\u0441\u0442\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043a\u0443 \u043d\u0430 \u043a\u043e\u0441\u043c\u0435\u0442\u0438\u043a\u0443 \u0438 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c \u0440\u0438\u0441\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u0432\u0441\u043b\u0435\u043f\u0443\u044e.Security Surfaces: \u043d\u0435 SAST, \u0430 \u043a\u0430\u0440\u0442\u0430 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0433\u0440\u0430\u043d\u0438\u0446\u0421\u0430\u043c\u0430\u044f \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0444\u0438\u0447\u0430 2.0 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043e\u043a \u2014 Security Surfaces.\u041e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043b\u043e\u0445\u043e\u0439 security scanner:\u043d\u0430\u0439\u0442\u0438 eval;\u043d\u0430\u0439\u0442\u0438 subprocess;\u043f\u043e\u043a\u0440\u0430\u0441\u0438\u0442\u044c \u0432\u0441\u0451 \u043a\u0440\u0430\u0441\u043d\u044b\u043c;\u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430 \u043f\u0440\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438.\u042f \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0445\u043e\u0442\u0435\u043b \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u043b\u0430\u0442\u044c.CodeClone \u043d\u0435 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c security bugs. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u044b SAST-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, threat model, \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u0438. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e CodeClone \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 security-relevant boundaries: \u043c\u0435\u0441\u0442\u0430, \u0433\u0434\u0435 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438 \u0434\u043e\u0432\u0435\u0440\u0438\u044f.\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432;\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430;\u0434\u0435\u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f;\u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435&#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-478491","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/478491","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=478491"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/478491\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=478491"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=478491"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=478491"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}