{"id":489644,"date":"2026-08-04T07:15:59","date_gmt":"2026-08-04T07:15:59","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=489644"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=489644","title":{"rendered":"\u0421\u0435\u0440\u0434\u0446\u0435 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 Java: \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c Quarkus"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>Java \u0443\u0436\u0435 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0438\u0442\u0430\u0435\u0442 \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445. \u0412\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0435 \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Java \u2014 Quarkus.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/779\/dc5\/a38\/779dc5a38165e88627bc1be7a59f1950.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/779\/dc5\/a38\/779dc5a38165e88627bc1be7a59f1950.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/779\/dc5\/a38\/779dc5a38165e88627bc1be7a59f1950.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041c\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/inspections\/\">\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c<\/a> Open Source \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u0422\u0430\u043a\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u0431\u043b\u0438\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0435\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u044e\u0430\u043d\u0441\u0430\u0445 \u0438 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044f\u0445 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435.<\/p>\n<p>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0432\u0435\u0434\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442\u0441\u044f: \u0443 \u043d\u0438\u0445 \u043e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430, \u0430 \u043f\u0440\u0438 \u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0438 \u0441\u0430\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0432\u044b\u0431\u043e\u0440 \u0443\u043f\u0430\u043b \u043d\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/quarkusio\/quarkus\">Quarkus<\/a>. \u042d\u0442\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Java \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439, \u0441\u0442\u0430\u0432\u0448\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c\u0438 \u0432 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 (\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b, DI-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435).<\/p>\n<p>Quarkus \u0434\u0435\u043b\u0430\u0435\u0442 \u0443\u043f\u043e\u0440 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0437\u0430 \u0441\u0447\u0451\u0442 <a href=\"https:\/\/quarkus.io\/performance\/\">\u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0441\u0431\u043e\u0440\u043a\u0438<\/a>: \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 classpath, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Quarkus \u0443\u0434\u043e\u0431\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437.<\/p>\n<p>\u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043d\u0451\u043c \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438. \u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0437\u044f\u043b\u0438 \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/tree\/19d6bc987d61c3d70995b557a93e840a1106bef0\">\u043a\u043e\u043c\u043c\u0438\u0442<\/a>. \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0434\u0435\u043b\u0443.<\/p>\n<h3>\u0422\u0440\u0443\u0434\u043d\u044b\u0439 \u0440\u0435\u0431\u0451\u043d\u043e\u043a \u0438 \u043a\u0430\u043a \u0441 \u043d\u0438\u043c \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f<\/h3>\n<p>\u0412\u044b \u043f\u043e\u0434\u0443\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043b\u0435\u043a\u0446\u0438\u0438 \u043e \u0432\u043e\u0441\u043f\u0438\u0442\u0430\u043d\u0438\u0438? \u042f \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 \u0431\u044b\u0432\u0430\u044e\u0442 \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f Java. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434.<\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 1<\/strong><\/p>\n<pre><code class=\"java\">public class InterceptorInfo extends BeanInfo                              implements Comparable&lt;InterceptorInfo&gt; {  private final Set&lt;AnnotationInstance&gt; bindings;  ....   @Override  public String toString() {    return \"INTERCEPTOR bean [bindings=\" + bindings +            \", target=\" + getTarget() + \"]\";   }}<\/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>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>toString<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435 <code>bindings<\/code> \u043a\u043b\u0430\u0441\u0441\u0430 <code>InterceptorInfo<\/code>. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 <code>BeanInfo<\/code>:<\/p>\n<pre><code class=\"java\">BeanInfo(....) {  ....  this.identifier = Hashes.sha1_base64(            (identifier != null ? identifier : \"\") +             toString() + beanDeployment.toString()           );  ....}<\/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>\u0418 \u0447\u0442\u043e\u0431\u044b \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u0430\u0437\u0437\u043b \u0432 \u043e\u0434\u043d\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u0443, \u0432\u043e\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 <code>InterceptorInfo<\/code>:<\/p>\n<pre><code class=\"java\">InterceptorInfo(. . . ., Set&lt;AnnotationInstance&gt; bindings) {  super(. . . .);  this.bindings = bindings;  ....}<\/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>\u0418\u0442\u0430\u043a, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u041f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 <code>InterceptorInfo<\/code> \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 <code>BeanInfo<\/code>. \u0422\u043e\u0442, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <code>toString<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 <code>InterceptorInfo<\/code>. \u041c\u0435\u0442\u043e\u0434 <code>toString<\/code> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 <code>bindings<\/code>. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 \u0438 \u043a\u0430\u043a \u0441 \u043d\u0435\u0439 \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/java\/1132\/\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6052\/\">V6052<\/a> Calling overridden \u2018toString\u2019 method in \u2018BeanInfo\u2019 parent-class constructor may lead to use of uninitialized data. Inspect field: bindings. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/independent-projects\/arc\/processor\/src\/main\/java\/io\/quarkus\/arc\/processor\/InterceptorInfo.java#L266\">InterceptorInfo.java 265<\/a><\/p>\n<h3>\u041f\u043e\u0442\u0435\u0440\u044f\u0448\u043a\u0438<\/h3>\n<p>\u0417\u0430\u0431\u044b\u0442\u044b\u0435, \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0438\u043b\u0438 \u0438\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0438 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u043e\u0431\u043e\u0448\u043b\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 Quarkus.<\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 2<\/strong><\/p>\n<pre><code class=\"java\">public void build(Path projectDir) {  ....   try {    ModelUtils.persistModel(projectDir.resolve(\"pom.xml\"), model);  } catch (IOException e) {    throw new IllegalStateException();   \/\/ &lt;=   }}<\/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>\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Maven \u0438 \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0412 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0442\u0438\u0440\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0438\u043f\u0430 <code>IllegalStateException<\/code>. \u042d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0431\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0435 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 <code>build<\/code>, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435. \u041d\u0438\u043a\u0442\u043e \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0441\u043a\u0435\u043b\u0435\u0442\u044b \u0441\u043f\u0440\u044f\u0442\u0430\u043b\u0438\u0441\u044c \u0432 \u0432\u0430\u0448\u0435\u043c \u0448\u043a\u0430\u0444\u0443.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6118\/\">V6118<\/a> The original exception object \u2018IOException\u2019 was swallowed. Cause of original exception could be lost. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/independent-projects\/bootstrap\/maven-resolver\/src\/test\/java\/io\/quarkus\/bootstrap\/workspace\/test\/MvnProjectBuilder.java#L123\">MvnProjectBuilder.java 122<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 3<\/strong><\/p>\n<pre><code class=\"java\">Foo.Bar bar1 = new Bar(new ArrayList&lt;&gt;());event1.fire(bar1);assertEquals(1, bar1.getNames().size());     \/\/ &lt;= assertEquals(\"bazinga\", bar1.getNames().get(0));Foo.Bar bar2 = new Bar(new ArrayList&lt;&gt;());event2.fire(bar2);assertEquals(1, bar1.getNames().size());     \/\/ &lt;= assertEquals(\"bazinga\", bar2.getNames().get(0));<\/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>\u042d\u0442\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u0417\u0434\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e\u0442 \u0434\u0432\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 <code>Foo.Bar<\/code>. \u041d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0431\u043b\u043e\u043a \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u2014 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e. \u0412 \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 <code>assertEquals(1, bar1.getNames().size())<\/code> \u0437\u0430\u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c <code>bar1<\/code> \u043d\u0430 <code>bar2<\/code>, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435 \u0442\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6072\/\">V6072<\/a> Two similar code fragments were found. Perhaps, this is a typo and \u2018bar2\u2019 variable should be used instead of \u2018bar1\u2019. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/integration-tests\/injectmock\/src\/test\/java\/io\/quarkus\/it\/mockbean\/MockEventTest.java#L47\">MockEventTest.java<\/a> 40<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0436\u0435 <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v7023\/\">\u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443<\/a> \u0432 \u043d\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0434\u043b\u044f JavaScript \u0438 TypeScript.<\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 4<\/strong><\/p>\n<pre><code class=\"java\">public class PathTreeBuilder {  private List&lt;String&gt; includes;  private List&lt;String&gt; excludes;  ....  List&lt;String&gt; getIncludes() {    return includes;  }    List&lt;String&gt; getExcludes() {    return includes;       \/\/ &lt;=   }}<\/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>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430, <code>PathTreeBuilder<\/code> \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <code>PathTree<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430. \u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 <code>includes<\/code> \u0438 <code>excludes<\/code>. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>getExcludes<\/code> \u043f\u043e \u043e\u0448\u0438\u0431\u043a\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043f\u043e\u043b\u0435 <code>includes<\/code>.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6091\/\">V6091<\/a> Suspicious getter implementation. The \u2018excludes\u2019 field should probably be returned instead. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/independent-projects\/bootstrap\/app-model\/src\/main\/java\/io\/quarkus\/paths\/PathTreeBuilder.java#L59\">PathTreeBuilder.java<\/a> 58<\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 5<\/strong><\/p>\n<pre><code class=\"java\">private static boolean isIgnored(DotName classDotName) {  String className = classDotName.toString();  if (className.startsWith(\"java.util.\")       || className.startsWith(\"java.lang.\")      || className.startsWith(\"org.hibernate.engine.spi.\")      || className.startsWith(\"jakarta.persistence.\")      || className.startsWith(\"jakarta.persistence.\")    \/\/ &lt;=  ) {    return true;  }  return false;}<\/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>\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 <code>JpaJandexScavenger<\/code> \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e Hibernate ORM. \u0421\u0430\u043c \u0436\u0435 \u043a\u043b\u0430\u0441\u0441 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u044b \u043d\u0443\u0436\u043d\u044b. \u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0438, Quarkus \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 <code>JpaJandexScavenger<\/code> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0443 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e.<\/p>\n<p>\u0412 \u0442\u0435\u043b\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 <code>jakarta.persistence.<\/code> \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0438:<\/p>\n<pre><code class=\"java\">className.startsWith(\"jakarta.persistence.\") ||className.startsWith(\"jakarta.persistence.\")<\/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>\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435. \u041d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0440\u0430\u0441\u0442\u0438 \u0437\u0430 \u0441\u0447\u0451\u0442 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0410 \u043c\u043e\u0436\u0435\u0442, \u0432\u0441\u0451 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435, \u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0438\u0448\u043d\u044f\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u043e \u043e\u0448\u0438\u0431\u043a\u0435.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions \u2018className.startsWith(\u201cjakarta.persistence.\u201d)\u2019 to the left and to the right of the \u2018||\u2019 operator. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/hibernate-orm\/deployment\/src\/main\/java\/io\/quarkus\/hibernate\/orm\/deployment\/JpaJandexScavenger.java#L622\">JpaJandexScavenger.java 621<\/a><\/p>\n<h3>\u041f\u0440\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0438\u0441\u044c, \u043d\u043e \u0433\u0434\u0435?<\/h3>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u2014 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043e\u0448\u0438\u0431\u043e\u043a. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 6<\/strong><\/p>\n<pre><code class=\"java\">@ConsumeEvent(\"address-4\")CompletionStage&lt;Long&gt; listenAddress4(int i) {  return CompletableFuture.completedFuture((long) (i + 1));}<\/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>\u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>i<\/code> \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u0430 <code>Integer.MAX_VALUE<\/code>, \u0442\u043e \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043a \u043d\u0435\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0432\u0435\u043d <code>Integer.MIN_VALUE<\/code>. \u0417\u0430\u0449\u0438\u0442\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0443\u0442\u0451\u043c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432 \u043a <code>long<\/code>. \u0425\u043e\u0442\u044f \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c, \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6117\/\">V6117<\/a> Possible overflow. The expression will be evaluated before casting. Consider casting one of the operands instead. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/vertx\/deployment\/src\/test\/java\/io\/quarkus\/vertx\/CodecRegistrationTest.java#L195\">CodecRegistrationTest.java 195<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 7<\/strong><\/p>\n<pre><code class=\"java\">@Overridepublic void apply(SocketSettings.Builder builder) {  if (config.connectTimeout().isPresent()) {    builder.connectTimeout((int) config.connectTimeout().get()       \/\/ &lt;=                                        .toMillis(), TimeUnit.MILLISECONDS);   }  if (config.readTimeout().isPresent()) {    builder.readTimeout((int) config.readTimeout().get()        \/\/ &lt;=                                    .toMillis(), TimeUnit.MILLISECONDS);  }}<\/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>\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e. \u0415\u0433\u043e \u0446\u0435\u043b\u044c \u043d\u0435 \u044f\u0441\u043d\u0430, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u0438 <code>connectTimeout<\/code>, \u0438 <code>readTimeout<\/code> \u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>builder<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 <code>long<\/code>.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6106\/\">V6106<\/a> Casting expression to int type before implicitly casting it to other type may be excessive or incorrect. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/mongodb-client\/runtime\/src\/main\/java\/io\/quarkus\/mongodb\/runtime\/MongoClients.java#L289\">MongoClients.java 289<\/a><\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6106\/\">V6106<\/a> Casting expression to int type before implicitly casting it to other type may be excessive or incorrect. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/mongodb-client\/runtime\/src\/main\/java\/io\/quarkus\/mongodb\/runtime\/MongoClients.java#L286\">MongoClients.java 286<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 8<\/strong><\/p>\n<pre><code class=\"java\">static &lt;T&gt; List&lt;T&gt; takeLast(List&lt;T&gt; list, int n) {  if (n &lt; 1 || n &gt; list.size()) {    throw new IndexOutOfBoundsException(n);  }  if (list.isEmpty()) {   \/\/ &lt;=     return list;  }  return list.subList(list.size() - n, list.size());}<\/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>\u041c\u0435\u0442\u043e\u0434 \u0431\u0435\u0440\u0451\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 <code>n<\/code> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 <code>list<\/code>. \u041f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u0437\u044f\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0435\u0441\u0442\u044c. \u041d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0435\u0449\u0451 \u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0430\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u0415\u0441\u043b\u0438 \u043c\u044b \u0431\u0435\u0440\u0451\u043c 1 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <code>list.isEmpty()<\/code> \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u043e\u0436\u043d\u0430\u044f. \u0415\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0445\u043e\u0442\u0435\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u0443\u0441\u0442\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c, \u0442\u043e \u0442\u0443\u0442 \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442, \u0438 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression \u2018list.isEmpty()\u2019 is always false. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/qute\/runtime\/src\/main\/java\/io\/quarkus\/qute\/runtime\/extensions\/CollectionTemplateExtensions.java#L57\">CollectionTemplateExtensions.java 57<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 9<\/strong><\/p>\n<pre><code class=\"java\">if (errorRate != -1.0) {  list.add(\"ERROR\");  list.add(new BigDecimal(errorRate).toPlainString()); \/\/ Prevent E notation}<\/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>\u0421 \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u043c \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <code>BigDecimal<\/code> \u0447\u0438\u0441\u043b\u043e <code>0.1<\/code>, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e <code>0.1000000000000000055511151231257827021181583404541015625<\/code>. \u041d\u0430\u043b\u0438\u0447\u0438\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u0445\u0432\u043e\u0441\u0442\u0430 \u2014 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442\u0441\u044f, \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0437\u0434\u0435\u0441\u044c <a href=\"https:\/\/ru.wikipedia.org\/wiki\/IEEE_754\">\u0441\u0441\u044b\u043b\u043a\u0443<\/a> \u043d\u0430 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.<\/p>\n<p>\u041d\u0443 \u0430 \u043d\u0430\u0441 \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u0435\u0437 \u201c\u0441\u044e\u0440\u043f\u0440\u0438\u0437\u0430\u201d \u0432 \u0432\u0438\u0434\u0435 \u0445\u0432\u043e\u0441\u0442\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/25\/docs\/api\/java.base\/java\/math\/BigDecimal.html#valueOf(double)\"><code>BigDecimal#valueOf<\/code><\/a>, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0445\u0438\u0442\u0440\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430:<\/p>\n<pre><code class=\"java\">public static BigDecimal valueOf(double val) {  ....   var fmt = FormattedFPDecimal.valueForDoubleToString(Math.abs(val));  long s = fmt.getSignificand();  .... }<\/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>\u0415\u0441\u043b\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e\u0431\u0449\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0435\u0433\u043e \u0432 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432 \u0438\u0442\u043e\u0433\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u043a\u0440\u0443\u0433\u043b\u0451\u043d\u043d\u043e\u0435, \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0435\u0435 \u043f\u043e \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0432\u044b\u0448\u0435\u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0442\u0430\u043a\u0438\u043c \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043a\u0430\u043a \u0440\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 0.1. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/25\/docs\/api\/java.base\/java\/math\/BigDecimal.html#valueOf(double)\"><code>BigDecimal#valueOf<\/code><\/a> \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442 \u043d\u0430\u0448\u0435 \u0442\u043e\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u041d\u043e \u0442\u0430\u043a \u0431\u044b\u043b\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430&#8230;<\/summary>\n<div class=\"spoiler__content\">\n<p>\u0412\u043f\u0435\u0440\u0432\u044b\u0435 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 Java 5 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u0441\u043e\u0432\u0441\u0435\u043c \u0438\u043d\u0430\u0447\u0435:<\/p>\n<pre><code class=\"java\">public static BigDecimal valueOf(double val) {   return new BigDecimal(Double.toString(val));}<\/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>\u0418 \u0445\u043e\u0442\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0434\u0435\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u0442\u0440\u043e\u043a\u0430, \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0430\u043b\u0430\u0441\u044c \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a \u0436\u0435.<\/p>\n<p>\u041a \u0441\u043b\u043e\u0432\u0443, \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/25\/docs\/api\/java.base\/java\/math\/BigDecimal.html#valueOf(double)\"><code>BigDecimal#valueOf<\/code><\/a> \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0432 \u0441\u0432\u043e\u0435\u0439 Javadoc \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/25\/docs\/api\/java.base\/java\/lang\/Double.html#toString(double)\"><code>Double#toString()<\/code><\/a>, \u0445\u043e\u0442\u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b. \u041d\u043e \u0441\u0443\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u043f\u0440\u0435\u0436\u043d\u0435\u0439, \u0438 \u043e\u043d\u0430 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 Javadoc \u043a \u043c\u0435\u0442\u043e\u0434\u0443 <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/25\/docs\/api\/java.base\/java\/lang\/Double.html#toString(double)\"><code>Double#toString()<\/code><\/a>.<\/p>\n<p>\u041d\u0443 \u0430 \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u043e Java 5? \u0412\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e: \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <code>BigDecimal(String)<\/code> \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0432\u0441\u0435\u0433\u0434\u0430 \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b\u0441\u044f \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u043c\u0435\u0441\u0442\u043e <code>BigDecimal(double)<\/code>.<\/p>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u0438\u043c\u0435\u044e\u0442 \u043e\u0441\u043e\u0431\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0442\u043e\u0447\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u0433\u0434\u0435 \u0434\u0430\u0436\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f\u043c.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6068\/\">V6068<\/a> Constructor call can result in imprecise representation of the initialized value. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/redis-client\/runtime\/src\/main\/java\/io\/quarkus\/redis\/datasource\/bloom\/BfInsertArgs.java#L95\">BfInsertArgs.java 95<\/a><\/p>\n<h3>\u041d\u043e\u0432\u043e\u0433\u043e\u0434\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043e\u0445<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0430\u0437\u0434\u043d\u043e\u0432\u0430\u043d\u0438\u044f \u041d\u043e\u0432\u043e\u0433\u043e \u0413\u043e\u0434\u0430 \u0432\u044b \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0438\u043b\u0438 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u043d\u0435 \u043f\u0443\u0433\u0430\u0439\u0442\u0435\u0441\u044c \u2014 \u044d\u0442\u043e \u0431\u0430\u0433.<\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 10<\/strong><\/p>\n<pre><code class=\"java\">public class WebSocketNextJsonRPCService implements ConnectionListener {  private static final DateTimeFormatter FORMATTER =     DateTimeFormatter.ofPattern(\"YYYY-MM-dd HH:mm:ss\");    .... }<\/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>\u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0437\u0434\u0435\u0441\u044c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0435\u0442, \u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u0430\u0442\u044b: <code>YYYY-MM-dd<\/code>. \u0418 \u0441\u043d\u043e\u0432\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0441\u0451 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u0418\u043b\u0438 \u043d\u0435\u0442?<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0434\u0430\u0442\u0430, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, 1.1.2027, \u0442\u043e \u0441 \u0442\u0430\u043a\u0438\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a 1.1.2026.<\/p>\n<p>\u0412\u0441\u0451 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 <code>YYYY<\/code> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0433\u043e\u0434 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043d\u0435\u0434\u0435\u043b\u0438 \u0432 \u043d\u0451\u043c. \u0418 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0433\u043e\u0434\u0430 \u0435\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0445\u0438\u0442\u0440\u0430\u044f \u0441\u0445\u0435\u043c\u0430: \u0435\u0441\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043d\u0435\u0434\u0435\u043b\u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u0433\u043e\u0434\u0443, \u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d. \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 1 \u044f\u043d\u0432\u0430\u0440\u044f \u2014 \u043f\u044f\u0442\u043d\u0438\u0446\u0430, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043d\u0435\u0434\u0435\u043b\u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 2026 \u0433\u043e\u0434\u0443.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043d\u0435\u0434\u0435\u043b\u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u0443\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443 \u0433\u043e\u0434\u0443. \u0422\u0430\u043a, 31.12.2024 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0443 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a 31.12.2025, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043d\u0435\u0434\u0435\u043b\u0438 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 2025 \u0433\u043e\u0434\u0443. \u041d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0443\u043b\u0435\u0442\u0435\u043b \u0446\u0435\u043b\u044b\u0439 \u0433\u043e\u0434&#8230;<\/p>\n<p>\u042d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u0441\u0432\u044f\u0442\u0438\u043b\u0438 \u0435\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/java\/1185\/\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a>.<\/p>\n<p>\u0410 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0451 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u043e\u0439 <code>YYYY<\/code> \u043d\u0430 <code>yyyy<\/code>, \u043e \u0447\u0451\u043c \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/V6122\/\">V6122<\/a> Usage of \u2018Y\u2019 (week year) pattern was detected: it was probably intended to use \u2018y\u2019 (year). <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/websockets-next\/runtime-dev\/src\/main\/java\/io\/quarkus\/websockets\/next\/runtime\/dev\/ui\/WebSocketNextJsonRPCService.java#L39\">WebSocketNextJsonRPCService.java 39<\/a><\/p>\n<h3>\u0422\u0435\u043e\u0440\u0438\u044f \u0440\u0430\u0437\u0431\u0438\u0442\u044b\u0445 \u043e\u043a\u043e\u043d<\/h3>\n<p>\u0427\u0442\u043e \u0437\u0430 \u0442\u0435\u043e\u0440\u0438\u044f \u0442\u0430\u043a\u0430\u044f \u0438 \u043a\u0430\u043a \u043e\u043d\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439, \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/1237\/#IDED1685F479\">\u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d\u0430 \u0441\u0435\u0431\u044f \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442.<\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 11<\/strong><\/p>\n<pre><code class=\"java\">@Overridepublic &lt;T&gt; T getClaim(String claimName) {  if (claimName.equals(Claims.groups)) {    return (T) getGroups();  } else if (claimName.equals(Claims.groups)) {  \/\/ &lt;=    return (T) getAudience();  } else if (claimName.equals(Claims.exp)) {    return (T) Long.valueOf(getExpirationTime());  } else if (claimName.equals(Claims.iat)) {    return (T) Long.valueOf(getIssuedAtTime());  } else if (claimName.equals(Claims.aud)) {    return (T) getAudience();  }  return (T) claims.getClaim(claimName);}<\/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\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6003\/\">V6003<\/a> The use of \u2018if (A) {&#8230;} else if (A) {&#8230;}\u2019 pattern was detected. There is a probability of logical error presence. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/amazon-lambda-rest\/runtime\/src\/main\/java\/io\/quarkus\/amazon\/lambda\/http\/CognitoPrincipal.java#L38\">CognitoPrincipal.java 38<\/a><\/p>\n<p>\u0427\u0442\u043e \u043c\u044b \u0442\u0443\u0442 \u0432\u0438\u0434\u0438\u043c: \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 <code>if-else<\/code> \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0443 \u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u0441 <code>Claims.groups<\/code>, \u043f\u0440\u0438 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 <code>getAudience<\/code>. \u041c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e, \u0432\u0435\u0434\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 <code>if-else<\/code>, \u0430 \u0432\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <code>claimName.equals(Claims.groups)<\/code> \u0443\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0439, \u0432\u0435\u0434\u044c \u043e\u043d\u0430 \u043d\u0435 \u043f\u0440\u043e\u0448\u043b\u0430 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0438. \u041d\u043e \u0437\u0434\u0435\u0441\u044c \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u044d\u0442\u043e. \u042d\u0442\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 <code>amazon-lambda-rest<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0440\u044f\u0434\u043e\u043c, \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 <code>amazon-lambda-http<\/code>:<\/p>\n<pre><code class=\"java\">@Overridepublic &lt;T&gt; T getClaim(String claimName) {  if (claimName.equals(Claims.groups)) {    return (T) getGroups();  } else if (claimName.equals(Claims.groups)) {  \/\/ &lt;=    return (T) getAudience();  } else if (claimName.equals(Claims.exp)) {    return (T) Long.valueOf(getExpirationTime());  } else if (claimName.equals(Claims.iat)) {    return (T) Long.valueOf(getIssuedAtTime());  } else if (claimName.equals(Claims.aud)) {    return (T) getAudience();  }  return (T) getClaims().getClaims().get(claimName);}<\/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>\u0418 \u0441\u043d\u043e\u0432\u0430 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u043e\u0434 \u0438 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u0430. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043b\u0438\u0448\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435. \u0412\u043e\u0442 \u0442\u0430\u043a \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u0442\u0430\u043b \u0440\u0430\u0441\u043f\u043e\u043b\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443 \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 copy-paste.<\/p>\n<p>\u0421\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 PVS-Studio \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u043f\u0430\u043a\u0435\u0442\u0435: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6003\/\">V6003<\/a> The use of \u2018if (A) {&#8230;} else if (A) {&#8230;}\u2019 pattern was detected. There is a probability of logical error presence. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/amazon-lambda-http\/runtime\/src\/main\/java\/io\/quarkus\/amazon\/lambda\/http\/CognitoPrincipal.java#L41\">CognitoPrincipal.java 41<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 12<\/strong><\/p>\n<pre><code class=\"java\">@BuildStep@Record(ExecutionTime.RUNTIME_INIT)VertxWebRouterBuildItem initializeRouter(....) {  ....   List&lt;RouteBuildItem&gt; redirectRoutes = new ArrayList&lt;&gt;();  ....   if (frameworkRouterCreated) {        if (redirectRoutes.size() &gt; 0) {    \/\/ &lt;=       recorder.setNonApplicationRedirectHandler(        nonApplicationRootPath.getNonApplicationRootPath(),        nonApplicationRootPath.getNormalizedHttpRootPath()      );      redirectRoutes.forEach(route -&gt; recorder.addRoute(                           httpRouteRouter,                            route.getRouteFunction(),                           recorder.getNonApplicationRedirectHandler(),                           route.getType()                          )      );    }  }  return new VertxWebRouterBuildItem(httpRouteRouter, mainRouter,                                      frameworkRouter, managementRouter,                                     mutinyRouter);}<\/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\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression \u2018redirectRoutes.size() &gt; 0\u2019 is always false. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/vertx-http\/deployment\/src\/main\/java\/io\/quarkus\/vertx\/http\/deployment\/VertxHttpProcessor.java#L392\">VertxHttpProcessor.java 392<\/a><\/p>\n<p>\u0422\u0443\u0442 \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f <code>redirectRoutes<\/code> \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043c\u0435\u0442\u043e\u0434\u0430 \u0438 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f. \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/commit\/e94ac2b8a2c973b81a23498b288fba4f6df7e76a#diff-f15233cea0f87118b4441038738a41197a55fb6e3e1f3e06efd1dc4b41fe0143\">\u043a\u043e\u043c\u043c\u0438\u0442<\/a> 2021 \u0433\u043e\u0434\u0430 \u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438:<\/p>\n<pre><code class=\"java\">if (httpBuildTimeConfig.redirectToNonApplicationRootPath &amp;&amp;     route.isRequiresLegacyRedirect()) {  redirectRoutes.add(route);}<\/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>\u0410 \u043f\u0440\u0438\u0447\u0451\u043c \u0442\u0443\u0442 \u0440\u0430\u0437\u0431\u0438\u0442\u044b\u0435 \u043e\u043a\u043d\u0430? \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e: \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u043e\u0434, \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435, \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044e \u0442\u0430\u043a\u043e\u0433\u043e \u0436\u0435 \u043a\u043e\u0434\u0430 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0447\u0430\u0441\u0442\u044f\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0437\u0430\u0431\u044b\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u044e\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u0432\u0441\u0451 \u0435\u0449\u0451 \u043d\u0443\u0436\u0435\u043d \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c. \u0412 \u0438\u0442\u043e\u0433\u0435 \u0437\u0430\u0431\u044b\u0442\u044b\u0439 \u043a\u043e\u0434 \u0446\u0435\u043f\u043b\u044f\u0435\u0442 \u0443\u0436\u0435 \u0434\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0430, \u0438 \u044d\u0442\u0443 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0434\u043e\u043b\u0433\u043e. \u041a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u0440\u0430\u0437\u0434\u0443\u0442\u0430\u044f \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430 \u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0432 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u043a\u043e\u0434\u0430.<\/p>\n<h3>\u041d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u044b<\/h3>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u043b \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440.<\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 13<\/strong><\/p>\n<pre><code class=\"java\">static final boolean IS_CYGWIN = OS.WINDOWS.isCurrent()        &amp;&amp; System.getenv(\"PWD\") != null        &amp;&amp; System.getenv(\"PWD\").startsWith(\"\/\");<\/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>\u0417\u0434\u0435\u0441\u044c \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f <code>PWD<\/code>. \u041e\u0431\u044b\u0447\u043d\u043e \u0442\u0430\u043a \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u0421 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u043a\u0438: \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043b\u0438 \u043d\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439, \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0438\u0437\u0432\u043d\u0435. \u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, \u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e JVM <a href=\"https:\/\/docs.oracle.com\/en\/java\/javase\/17\/docs\/api\/java.base\/java\/lang\/System.html#user.dir\"><code>user.dir<\/code><\/a>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u043d\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0438\u0437\u0432\u043d\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f PVS-Studio \u043d\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6110\/\">V6110<\/a> Using the \u2018PWD\u2019 environment variable could be unsafe or unreliable. Consider using trusted system property \u2018user.dir\u2019 instead. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/core\/devmode-spi\/src\/main\/java\/io\/quarkus\/dev\/console\/TerminalUtils.java#L27\">TerminalUtils.java 27<\/a><\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6110\/\">V6110<\/a> Using the \u2018PWD\u2019 environment variable could be unsafe or unreliable. Consider using trusted system property \u2018user.dir\u2019 instead. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/core\/devmode-spi\/src\/main\/java\/io\/quarkus\/dev\/console\/TerminalUtils.java#L28\">TerminalUtils.java 28<\/a><\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439, \u043d\u043e \u0443\u0436\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432 <code>System.getProperty<\/code>:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6110\/\">V6110<\/a> Using the \u2018HOME\u2019 environment variable could be unsafe or unreliable. Consider using trusted system property \u2018user.home\u2019 instead. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/tls-registry\/cli\/src\/main\/java\/io\/quarkus\/tls\/cli\/Constants.java#L11\">Constants.java 11<\/a><\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6110\/\">V6110<\/a> Using the \u2018USER\u2019 environment variable could be unsafe or unreliable. Consider using trusted system property \u2018user.name\u2019 instead. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/independent-projects\/tools\/analytics-common\/src\/main\/java\/io\/quarkus\/analytics\/AnalyticsService.java#L231\">AnalyticsService.java 231<\/a><\/p>\n<h3>\u0413\u043e\u0440\u0435 \u043e\u0442 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/h3>\n<p>\u0421 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0438\u043d\u0430\u0447\u0435 \u0431\u0435\u0434\u044b \u043d\u0435 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c.<\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 14<\/strong><\/p>\n<pre><code class=\"java\">public class KubernetesDevUIProcessor {  static volatile List&lt;Manifest&gt; manifests;  public List&lt;Manifest&gt; getManifests() throws BootstrapException {    if (manifests == null) {      synchronized (Holder.class) {        if (manifests == null) {          manifests = new ArrayList&lt;&gt;();          ....           try (CuratedApplication bootstrap = quarkusBootstrap.bootstrap()) {            ....             for (var entry : context.entrySet()) {              manifests.add(                             new Manifest(entry.getKey(),                              new String(entry.getValue()))                            );            }          }        }      }    }    return manifests;  }}<\/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>\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 double-checked locking (\u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d \u044d\u0442\u043e\u0442 \u043f\u0430\u0442\u0442\u0435\u0440\u043d, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430\u0448\u0443 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/java\/1128\/#ID1BD1BA8916\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a>) \u0434\u043b\u044f \u043f\u043e\u043b\u044f <code>manifests<\/code>.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0442\u043e\u043a \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u0432 \u0431\u043b\u043e\u043a \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u043d \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u0435 <code>manifests<\/code> \u043f\u0443\u0441\u0442\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u0435\u0433\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u0422\u043e \u0435\u0441\u0442\u044c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u043f\u043e\u0441\u043b\u0435 \u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0436\u0435 \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>manifests<\/code>, \u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a.<\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438\u0448\u044c \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6082\/\">V6082<\/a> Unsafe double-checked locking. Object was assigned to the field before it was initialized. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/kubernetes\/vanilla\/deployment\/src\/main\/java\/io\/quarkus\/kubernetes\/deployment\/devui\/KubernetesDevUIProcessor.java#L66\">KubernetesDevUIProcessor.java 66<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 15<\/strong><\/p>\n<pre><code class=\"java\">public class VertxUdpMetrics implements DatagramSocketMetrics {  private volatile Tags tags;  @Override  public void listening(String localName, SocketAddress localAddress) {    tags = tags.and(\"address\", NetworkMetrics.toString(localAddress));   \/\/ &lt;=   }}<\/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 <code>tags<\/code> \u043e\u0442\u043c\u0435\u0442\u0438\u043b\u0438 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c <code>volatile<\/code>. \u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442 \u0432 Java: \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u0442\u043e\u043a \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0432\u0438\u0434\u0438\u0442 \u044d\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437\u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u0442\u0443\u0442 \u0443\u0436\u0435 \u043d\u0443\u0436\u043d\u044b \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_%D0%B3%D0%BE%D0%BD%D0%BA%D0%B8\">\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0433\u043e\u043d\u043a\u0438<\/a>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 <code>listening<\/code> \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0434\u0432\u0430 \u043f\u043e\u0442\u043e\u043a\u0430. \u041e\u0431\u0430 \u0437\u0430\u0448\u043b\u0438 \u0432 \u043c\u0435\u0442\u043e\u0434, \u043e\u0431\u0430 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 <code>and<\/code> \u0438 \u043e\u0431\u0430 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>tags<\/code>.<\/p>\n<p>\u042d\u0442\u0438 \u0442\u0440\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043e\u0434\u043d\u0443 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u0443\u044e, \u0442\u0430\u043a \u0447\u0442\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>volatile<\/code> \u0442\u0443\u0442 \u043d\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0438 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c).<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6074\/\">V6074<\/a> Non-atomic modification of volatile variable. Inspect \u2018tags\u2019. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/micrometer\/runtime\/src\/main\/java\/io\/quarkus\/micrometer\/runtime\/binder\/vertx\/VertxUdpMetrics.java#L37\">VertxUdpMetrics.java 37<\/a><\/p>\n<h3>Attention, please!<\/h3>\n<p>\u041f\u043e\u0440\u043e\u0439 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0439 \u0438\u043b\u0438 \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u043e\u0434, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0437\u0434\u0435\u0441\u044c.<\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 16<\/strong><\/p>\n<p>\u0421 \u044d\u0442\u0438\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u043c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u044d\u0442\u0430\u043f\u043d\u043e.<\/p>\n<pre><code class=\"java\">public class TemplateHtmlBuilder {  private static final String HEADER_TEMPLATE_NO_STACK = \"&lt;h1&gt;%1$s&lt;\/h1&gt;\\n\" +           \"%2$s \\n\" +           \"&lt;div class=\\\"container content\\\"&gt;\\n\";  private static final String HTML_TEMPLATE_START_NO_STACK = \"\" +             \"&lt;!doctype html&gt;\\n\" +             \"&lt;html lang=\\\"en\\\"&gt;\\n\" +             \"&lt;head&gt;\\n\" +             \"    &lt;title&gt;%1$s%2$s&lt;\/title&gt;\\n\" +             \"    &lt;meta charset=\\\"utf-8\\\"&gt;\\n\" +             \"&lt;\/head&gt;\"; ....}<\/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>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0434\u0432\u0430 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 HTML, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u043e\u043b\u044f. \u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043d\u0438\u0445 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c, \u0438 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0435\u0441\u0442\u044c \u043c\u0430\u0440\u043a\u0435\u0440\u044b \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u043e\u0434 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0442\u043e, \u043a\u0430\u043a \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f:<\/p>\n<pre><code class=\"java\">public TemplateHtmlBuilder(....,         String title,         String details) {  ....  result = new StringBuilder(String.format(HTML_TEMPLATE_START_NO_STACK,                         escapeHtml(title),                        subTitle == null || subTitle.isEmpty() ? \"\" : \" - \" +                         escapeHtml(subTitle), CSS));  result.append(String.format(HEADER_TEMPLATE_NO_STACK,                 escapeHtml(title),                escapeHtml(details),                 actionLinks.toString()               ));}<\/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 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u0435\u0439 <code>HEADER_TEMPLATE_NO_STACK<\/code> \u0438 <code>HTML_TEMPLATE_START_NO_STACK<\/code> \u0448\u0430\u0431\u043b\u043e\u043d \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0435\u043c\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u0445\u043e\u0442\u044f \u0432 \u0441\u0430\u043c\u0438\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u043c\u0435\u0441\u0442 \u0432\u0441\u0435\u0433\u043e \u0434\u0432\u0430. \u0412 \u044d\u0442\u043e\u043c \u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/core\/runtime\/src\/main\/java\/io\/quarkus\/runtime\/TemplateHtmlBuilder.java#L321\">\u0441\u0442\u0440\u043e\u043a\u0438<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b, \u043d\u043e \u0441 <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/core\/runtime\/src\/main\/java\/io\/quarkus\/runtime\/TemplateHtmlBuilder.java#L134\">\u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438<\/a> \u0434\u043b\u044f \u0442\u0440\u0451\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u0422\u0430\u043a \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e copy-paste, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0431\u044b\u043b\u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/V6046\/\">V6046<\/a> Incorrect format. A different number of format items is expected. Arguments not used: 3. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/core\/runtime\/src\/main\/java\/io\/quarkus\/runtime\/TemplateHtmlBuilder.java#L325\">TemplateHtmlBuilder.java 325<\/a><\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/V6046\/\">V6046<\/a> Incorrect format. A different number of format items is expected. Arguments not used: 3. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/core\/runtime\/src\/main\/java\/io\/quarkus\/runtime\/TemplateHtmlBuilder.java#L328\">TemplateHtmlBuilder.java 328<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 17<\/strong><\/p>\n<pre><code class=\"java\">public void boot(...., Optional&lt;FunctionInitializedBuildItem&gt; hasFunctions) {  if (!hasFunctions.isPresent() || hasFunctions.get() == null) \/\/ &lt;=     return;}<\/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 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>hasFunctions<\/code> \u0442\u0438\u043f\u0430 <code>Optional<\/code>, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443:<\/p>\n<pre><code class=\"java\">!hasFunctions.isPresent() || hasFunctions.get() == null<\/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>\u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 <code>Optional::isPresent<\/code>:<\/p>\n<pre><code class=\"java\">public boolean isPresent() {  return value != null;}<\/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>\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0437\u043e\u0432 <code>Optional::isPresent<\/code>, \u0442\u0430\u043a \u043a\u0430\u043a <code>Optional::get<\/code> \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e <code>null<\/code>.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression \u2018hasFunctions.get() == null\u2019 is always false. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/funqy\/funqy-http\/deployment\/src\/main\/java\/io\/quarkus\/funqy\/deployment\/bindings\/http\/FunqyHttpBuildStep.java#L77\">FunqyHttpBuildStep.java 77<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 18<\/strong><\/p>\n<pre><code class=\"java\">if (typeInfo == null || (typeInfo != null &amp;&amp;       typeInfo.endsWith(SectionHelperFactory.HINT_METADATA))) {  continue;}<\/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>\u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <code>typeInfo != null<\/code> \u043b\u0438\u0448\u043d\u044f\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0430\u0441\u044c \u043f\u0435\u0440\u0432\u043e\u0439.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression \u2018typeInfo != null\u2019 is always true. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/qute\/deployment\/src\/main\/java\/io\/quarkus\/qute\/deployment\/QuteProcessor.java#L920\">QuteProcessor.java 920<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 19<\/strong><\/p>\n<pre><code class=\"java\">if (persistenceProviderResolver == null ||     (persistenceProviderResolver != null       \/\/ &lt;=       &amp;&amp; !(persistenceProviderResolver instanceof               MultiplePersistenceProviderResolver           )      )) {  ....}<\/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>\u042d\u0442\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435, \u043d\u043e \u0437\u0434\u0435\u0441\u044c \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u0441 <code>null<\/code> \u043b\u0438\u0448\u043d\u044f\u044f. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, <code>instanceof<\/code> \u0432\u0435\u0440\u043d\u0451\u0442 <code>false<\/code>, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0440\u0430\u0432\u0435\u043d <code>null<\/code>. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e <code>persistenceProviderResolver<\/code> \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f <code>MultiplePersistenceProviderResolver<\/code>, \u0441\u0442\u043e\u043b\u044c \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <code>if<\/code> \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0434\u043e:<\/p>\n<pre><code class=\"java\">!(persistenceProviderResolver instanceof MultiplePersistenceProviderResolver)<\/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\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression \u2018persistenceProviderResolver != null\u2019 is always true. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/hibernate-orm\/runtime\/src\/main\/java\/io\/quarkus\/hibernate\/orm\/runtime\/PersistenceProviderSetup.java#L28\">PersistenceProviderSetup.java 28<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 20<\/strong><\/p>\n<pre><code class=\"java\">for (String name : res.headers().names()) {  if (name.equalsIgnoreCase(\"Transfer-Encoding\")) {     \/\/ &lt;=     continue; \/\/ ignore transfer encoding,             \/\/ chunked screws up message and response  }  for (String v : res.headers().getAll(name)) {    if (name.equalsIgnoreCase(\"Transfer-Encoding\")       \/\/ &lt;=        &amp;&amp; v.contains(\"chunked\")) {       continue;    }    responseBuilder.getMultiValueHeaders().add(name, v);  }}<\/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\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>name<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 <code>Transfer-Encoding<\/code> \u043f\u0435\u0440\u0435\u0434 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u0446\u0438\u043a\u043b\u043e\u043c \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0435\u0433\u043e \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438. \u042d\u0442\u043e \u043b\u0438\u0448\u043d\u044f\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043a\u043e\u0434 \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043c\u0435\u043d\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u043c.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression \u2018name.equalsIgnoreCase(\u201cTransfer-Encoding\u201d)\u2019 is always false. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/amazon-lambda-rest\/runtime\/src\/main\/java\/io\/quarkus\/amazon\/lambda\/http\/LambdaHttpHandler.java#L104\">LambdaHttpHandler.java 104<\/a><\/p>\n<p><strong>\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 21<\/strong><\/p>\n<pre><code class=\"java\">while (       !ResteasyReactiveDotNames.OBJECT.equals(currentClazz.name()) &amp;&amp;        currentClazz != null              \/\/ &lt;=) {   ....}<\/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>\u041d\u0443 \u0438 \u043d\u0430 \u0434\u0435\u0441\u0435\u0440\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0438\u0448\u0435\u043d\u043a\u0430 \u043d\u0430 \u0442\u043e\u0440\u0442\u0435: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u044e\u0442 <code>currentClazz<\/code> \u0438 \u043b\u0438\u0448\u044c \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u0447\u0442\u043e \u043e\u043d\u0430 \u043d\u0435 <code>null<\/code>.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6060\/\">V6060<\/a> The \u2018currentClazz\u2019 reference was utilized before it was verified against null. <a href=\"https:\/\/github.com\/quarkusio\/quarkus\/blob\/19d6bc987d61c3d70995b557a93e840a1106bef0\/extensions\/resteasy-reactive\/rest\/deployment\/src\/main\/java\/io\/quarkus\/resteasy\/reactive\/server\/deployment\/ResteasyReactiveProcessor.java#L1125\">ResteasyReactiveProcessor.java 1125<\/a><\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0412\u043e\u0442 \u043c\u044b \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 Quarkus. \u041c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438 \u0442\u0430\u043c \u043d\u0435\u043c\u0430\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/java\/1089\/\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u201cK\u201d. \u0418\u0449\u0435\u043c \u0431\u0430\u0433\u0438 \u0432 \u043a\u043e\u0434\u0435 IntelliJ IDEA<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/java\/1247\/\">\u041f\u043e\u0438\u0441\u043a \u0432 \u043f\u043e\u0438\u0441\u043a\u0435: \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Elasticsearch<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/java\/1344\/\">OpenAPI Generator \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0438\u0437\u043c\u0443 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 Quarkus, \u043a\u0430\u043a \u0438 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <code>.md<\/code> \u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f \u0418\u0418-\u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u041d\u043e \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b \u043c\u043e\u0449\u043d\u044b\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043d\u0438 \u0431\u044b\u043b \u0418\u0418, \u0434\u0430\u0436\u0435 \u043e\u043d \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u043a\u043e\u0432\u0430\u0440\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u2014 \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u0434\u0435\u0441\u044c:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/1354\/\">\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432 \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0432\u0430\u0439\u0431-\u043a\u043e\u0434<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/1366\/\">\u0420\u0435\u0432\u044c\u044e \u0432\u0430\u0439\u0431-\u043a\u043e\u0434\u0430 \u0441 \u0433\u043d\u0438\u043b\u044c\u0446\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u0442\u0432\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c C++ \u043a\u043e\u0434\u043e\u043c<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0410 \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u044b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u043f\u0440\u043e\u0431\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0451 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1398\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Daniil Liakhov. <a href=\"https:\/\/pvs-studio.com\/en\/blog\/posts\/java\/1398\/\">Inside cloud-native Java: Exploring Quarkus<\/a>.<\/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\/1066358\/\">https:\/\/habr.com\/ru\/articles\/1066358\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java \u0443\u0436\u0435 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u0438\u0442\u0430\u0435\u0442 \u0432 \u043e\u0431\u043b\u0430\u043a\u0430\u0445. \u0412\u0441\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443. \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0435 \u043e\u0442\u0441\u0442\u0430\u0432\u0430\u0442\u044c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Java \u2014 Quarkus.\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u041c\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c Open Source \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u043c \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u0422\u0430\u043a\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u0431\u043b\u0438\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0435\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u044e\u0430\u043d\u0441\u0430\u0445 \u0438 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044f\u0445 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435.\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0432\u0435\u0434\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0442\u0441\u044f: \u0443 \u043d\u0438\u0445 \u043e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430, \u0430 \u043f\u0440\u0438 \u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0438 \u0441\u0430\u043c\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u043c\u0438.\u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0432\u044b\u0431\u043e\u0440 \u0443\u043f\u0430\u043b \u043d\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 Quarkus. \u042d\u0442\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Java \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439, \u0441\u0442\u0430\u0432\u0448\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c\u0438 \u0432 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 (\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b, DI-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435).Quarkus \u0434\u0435\u043b\u0430\u0435\u0442 \u0443\u043f\u043e\u0440 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0437\u0430 \u0441\u0447\u0451\u0442 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0441\u0431\u043e\u0440\u043a\u0438: \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 classpath, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Quarkus \u0443\u0434\u043e\u0431\u043d\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437.\u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043d\u0451\u043c \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438. \u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0437\u044f\u043b\u0438 \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u043a\u043e\u043c\u043c\u0438\u0442. \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0434\u0435\u043b\u0443.\u0422\u0440\u0443\u0434\u043d\u044b\u0439 \u0440\u0435\u0431\u0451\u043d\u043e\u043a \u0438 \u043a\u0430\u043a \u0441 \u043d\u0438\u043c \u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f\u0412\u044b \u043f\u043e\u0434\u0443\u043c\u0430\u043b\u0438, \u0447\u0442\u043e \u044f \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043b\u0435\u043a\u0446\u0438\u0438 \u043e \u0432\u043e\u0441\u043f\u0438\u0442\u0430\u043d\u0438\u0438? \u042f \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 \u0431\u044b\u0432\u0430\u044e\u0442 \u0432 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f Java. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434.\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 1public class InterceptorInfo extends BeanInfo                              implements Comparable&lt;InterceptorInfo&gt; {  private final Set&lt;AnnotationInstance&gt; bindings;  &#8230;.   @Override  public String toString() {    return &#171;INTERCEPTOR bean [bindings=&#187; + bindings +            &#171;, target=&#187; + getTarget() + &#171;]&#187;;   }}\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 toString \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0435 bindings \u043a\u043b\u0430\u0441\u0441\u0430 InterceptorInfo. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 BeanInfo:BeanInfo(&#8230;.) {  &#8230;.  this.identifier = Hashes.sha1_base64(            (identifier != null ? identifier : &#171;&#187;) +             toString() + beanDeployment.toString()           );  &#8230;.}\u0418 \u0447\u0442\u043e\u0431\u044b \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u0435\u0441\u044c \u043f\u0430\u0437\u0437\u043b \u0432 \u043e\u0434\u043d\u0443 \u043a\u0430\u0440\u0442\u0438\u043d\u0443, \u0432\u043e\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 InterceptorInfo:InterceptorInfo(. . . ., Set&lt;AnnotationInstance&gt; bindings) {  super(. . . .);  this.bindings = bindings;  &#8230;.}\u0418\u0442\u0430\u043a, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u041f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 InterceptorInfo \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 BeanInfo. \u0422\u043e\u0442, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 toString, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 InterceptorInfo. \u041c\u0435\u0442\u043e\u0434 toString \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 bindings. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043d\u0435 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0435 \u0438 \u043a\u0430\u043a \u0441 \u043d\u0435\u0439 \u0431\u043e\u0440\u043e\u0442\u044c\u0441\u044f \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:V6052 Calling overridden \u2018toString\u2019 method in \u2018BeanInfo\u2019 parent-class constructor may lead to use of uninitialized data. Inspect field: bindings. InterceptorInfo.java 265\u041f\u043e\u0442\u0435\u0440\u044f\u0448\u043a\u0438\u0417\u0430\u0431\u044b\u0442\u044b\u0435, \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0447\u0430\u0441\u0442\u0435\u043d\u044c\u043a\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0438\u043b\u0438 \u0438\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435, \u0438 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u043e\u0431\u043e\u0448\u043b\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 Quarkus.\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 2public void build(Path projectDir) {  &#8230;.   try {    ModelUtils.persistModel(projectDir.resolve(&#171;pom.xml&#187;), model);  } catch (IOException e) {    throw new IllegalStateException();   \/\/ &lt;=   }}\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Maven \u0438 \u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0412 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0440\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0435\u0442\u0438\u0440\u0430\u044e\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0438\u043f\u0430 IllegalStateException. \u042d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c\u0430\u044f \u043b\u0443\u0447\u0448\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u0431\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0435 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 build, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0435. \u041d\u0438\u043a\u0442\u043e \u043d\u0435 \u0443\u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0441\u043a\u0435\u043b\u0435\u0442\u044b \u0441\u043f\u0440\u044f\u0442\u0430\u043b\u0438\u0441\u044c \u0432 \u0432\u0430\u0448\u0435\u043c \u0448\u043a\u0430\u0444\u0443.\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:V6118 The original exception object \u2018IOException\u2019 was swallowed. Cause of original exception could be lost. MvnProjectBuilder.java 122\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 3Foo.Bar bar1 = new Bar(new ArrayList&lt;&gt;());event1.fire(bar1);assertEquals(1, bar1.getNames().size());     \/\/ &lt;= assertEquals(&#171;bazinga&#187;, bar1.getNames().get(0));Foo.Bar bar2 = new Bar(new ArrayList&lt;&gt;());event2.fire(bar2);assertEquals(1, bar1.getNames().size());     \/\/ &lt;= assertEquals(&#171;bazinga&#187;, bar2.getNames().get(0));\u042d\u0442\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u0445 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u0417\u0434\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e\u0442 \u0434\u0432\u0430 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 Foo.Bar. \u041d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0431\u043b\u043e\u043a \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u2014 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e. \u0412 \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 assertEquals(1, bar1.getNames().size()) \u0437\u0430\u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c bar1 \u043d\u0430 bar2, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0435 \u0442\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430.\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:V6072 Two similar code fragments were found. Perhaps, this is a typo and \u2018bar2\u2019 variable should be used instead of \u2018bar1\u2019. MockEventTest.java 40\u041a\u0441\u0442\u0430\u0442\u0438, \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0443 \u0432 \u043d\u0430\u0448 \u043d\u043e\u0432\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0434\u043b\u044f JavaScript \u0438 TypeScript.\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 4public class PathTreeBuilder {  private List&lt;String&gt; includes;  private List&lt;String&gt; excludes;  &#8230;.  List&lt;String&gt; getIncludes() {    return includes;  }    List&lt;String&gt; getExcludes() {    return includes;       \/\/ &lt;=   }}\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430, PathTreeBuilder \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 PathTree, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430. \u0421\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0442\u043e\u0434\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0435\u0439 includes \u0438 excludes. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 getExcludes \u043f\u043e \u043e\u0448\u0438\u0431\u043a\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043f\u043e\u043b\u0435 includes.\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:V6091 Suspicious getter implementation. The \u2018excludes\u2019 field should probably be returned instead. PathTreeBuilder.java 58\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 5private static boolean isIgnored(DotName classDotName) {  String className = classDotName.toString();  if (className.startsWith(&#171;java.util.&#187;)       || className.startsWith(&#171;java.lang.&#187;)      || className.startsWith(&#171;org.hibernate.engine.spi.&#187;)      || className.startsWith(&#171;jakarta.persistence.&#187;)      || className.startsWith(&#171;jakarta.persistence.&#187;)    \/\/ &lt;=  ) {    return true;  }  return false;}\u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 JpaJandexScavenger \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e Hibernate ORM. \u0421\u0430\u043c \u0436\u0435 \u043a\u043b\u0430\u0441\u0441 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0438\u043f\u044b \u043d\u0443\u0436\u043d\u044b. \u041a\u0430\u043a \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u0432\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0438, Quarkus \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0447\u0430\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0438 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 JpaJandexScavenger \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0443 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e.\u0412 \u0442\u0435\u043b\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 jakarta.persistence. \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0438:className.startsWith(&#171;jakarta.persistence.&#187;) ||className.startsWith(&#171;jakarta.persistence.&#187;)\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043e, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435. \u041d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c, \u043e\u0434\u043d\u0430\u043a\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0440\u0430\u0441\u0442\u0438 \u0437\u0430 \u0441\u0447\u0451\u0442 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0410 \u043c\u043e\u0436\u0435\u0442, \u0432\u0441\u0451 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435, \u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043b\u0438\u0448\u043d\u044f\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u043e \u043e\u0448\u0438\u0431\u043a\u0435.\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:V6001 There are identical sub-expressions \u2018className.startsWith(\u201cjakarta.persistence.\u201d)\u2019 to the left and to the right of the \u2018||\u2019 operator. JpaJandexScavenger.java 621\u041f\u0440\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0438\u0441\u044c, \u043d\u043e \u0433\u0434\u0435?\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u2014 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043e\u0448\u0438\u0431\u043e\u043a. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f.\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 6@ConsumeEvent(&#171;address-4&#187;)CompletionStage&lt;Long&gt; listenAddress4(int i) {  return CompletableFuture.completedFuture((long) (i + 1));}\u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f i \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u0430 Integer.MAX_VALUE, \u0442\u043e \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043a \u043d\u0435\u0439 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0435\u0442 \u0440\u0430\u0432\u0435\u043d Integer.MIN_VALUE. \u0417\u0430\u0449\u0438\u0442\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0443\u0442\u0451\u043c \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u043e\u0432 \u043a long. \u0425\u043e\u0442\u044f \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c, \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f.\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:V6117 Possible overflow. The expression will be evaluated before casting. Consider casting one of the operands instead. CodecRegistrationTest.java 195\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 7@Overridepublic void apply(SocketSettings.Builder builder) {  if (config.connectTimeout().isPresent()) {    builder.connectTimeout((int) config.connectTimeout().get()       \/\/ &lt;=                                        .toMillis(), TimeUnit.MILLISECONDS);   }  if (config.readTimeout().isPresent()) {    builder.readTimeout((int) config.readTimeout().get()        \/\/ &lt;=                                    .toMillis(), TimeUnit.MILLISECONDS);  }}\u0415\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e. \u0415\u0433\u043e \u0446\u0435\u043b\u044c \u043d\u0435 \u044f\u0441\u043d\u0430, \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0447\u0442\u043e \u0438 connectTimeout, \u0438 readTimeout \u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 builder \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442 long.\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u044d\u0442\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445:V6106 Casting expression to int type before implicitly casting it to other type may be excessive or incorrect. MongoClients.java 289V6106 Casting expression to int type before implicitly casting it to other type may be excessive or incorrect. MongoClients.java 286\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 8static &lt;T&gt; List&lt;T&gt; takeLast(List&lt;T&gt; list, int n) {  if (n &lt; 1 || n &gt; list.size()) {    throw new IndexOutOfBoundsException(n);  }  if (list.isEmpty()) {   \/\/ &lt;=     return list;  }  return list.subList(list.size() &#8212; n, list.size());}\u041c\u0435\u0442\u043e\u0434 \u0431\u0435\u0440\u0451\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 n \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 list. \u041f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u0437\u044f\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0435\u0441\u0442\u044c. \u041d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0435\u0449\u0451 \u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0430\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u0415\u0441\u043b\u0438 \u043c\u044b \u0431\u0435\u0440\u0451\u043c 1 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430, \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 list.isEmpty() \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u043e\u0436\u043d\u0430\u044f. \u0415\u0441\u043b\u0438 \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0445\u043e\u0442\u0435\u043b \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u0443\u0441\u0442\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c, \u0442\u043e \u0442\u0443\u0442 \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435 \u0432\u044b\u0439\u0434\u0435\u0442, \u0438 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0441\u0442\u043e\u0438\u0442 \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c.\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:V6007 Expression \u2018list.isEmpty()\u2019 is always false&#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-489644","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/489644","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=489644"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/489644\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=489644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=489644"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=489644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}