{"id":457434,"date":"2025-04-25T21:00:37","date_gmt":"2025-04-25T21:00:37","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=457434"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=457434","title":{"rendered":"<span>\u041f\u043e\u0438\u0441\u043a \u0432 \u043f\u043e\u0438\u0441\u043a\u0435: \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Elasticsearch<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 Java \u0432 Open Source. Elasticsearch \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f\u0445, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a GitHub, \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a, \u0422\u0438\u043d\u044c\u043a\u043e\u0444\u0444, Netflix \u0438 Amazon. \u0428\u0435\u0441\u0442\u044c \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u0443\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a\u0438\u0435 \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0437\u0430 \u0441\u0442\u043e\u043b\u044c \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f?<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1c2\/598\/450\/1c2598450e1a5c5a00cf1ddc6ed9ffe7.png\" width=\"780\" height=\"440\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1c2\/598\/450\/1c2598450e1a5c5a00cf1ddc6ed9ffe7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1c2\/598\/450\/1c2598450e1a5c5a00cf1ddc6ed9ffe7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h3>\u041e \u0447\u0451\u043c \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c?<\/h3>\n<p>\u041a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0443\u0436\u0435 \u0446\u0435\u043b\u044b\u0445 \u0448\u0435\u0441\u0442\u044c (!) \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/java\/0621\/\">\u044d\u0442\u043e\u0439<\/a> \u0441\u0441\u044b\u043b\u043a\u0435.<\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0438\u0441\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u044b\u0441\u044f\u0447\u0430\u043c\u0438, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430\u0441\u044c \u0432 \u0440\u043e\u043c\u0430\u043d \u043e \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u0447\u0442\u043e \u0431\u0440\u043e\u0441\u0438\u043b\u0438\u0441\u044c \u0432 \u0433\u043b\u0430\u0437\u0430 \u043f\u0440\u0438 \u0431\u0435\u0433\u043b\u043e\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 Elasticsearch. \u0410 \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0445 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0442\u0430\u043a \u0438 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u044b.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u043a\u0430 \u043d\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0430\u043f\u043e\u043a, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0442\u0430\u0431\u0430\u0439\u0442\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u0443\u044e \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0442\u0440\u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0441\u0442\u0440\u043e\u043a Java \u043a\u043e\u0434\u0430), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0435\u0451 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435.<\/p>\n<p><strong>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/strong>: \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 (\u043f\u0440\u043e\u0431\u0435\u043b\u044b, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044b \u0441\u0442\u0440\u043e\u043a) \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430. \u041c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e, \u0441\u043c\u044b\u0441\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0438\u0441\u043a\u0430\u0436\u0451\u043d.<\/p>\n<h3>\u041e\u0447\u0435\u043f\u044f\u0442\u043a\u0438<\/h3>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0445 \u0432\u0440\u0430\u0433\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u2014 \u043e\u043f\u0435\u0447\u0430\u0442\u043e\u043a.<\/p>\n<h4>\u041f\u043e\u043b\u0435 \u0437\u0430 \u043f\u043e\u043b\u0435<\/h4>\n<p>\u0427\u0430\u0441\u0442\u043e \u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u0433\u0435\u0442\u0442\u0435\u0440\u044b? \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u0435. \u041e\u0442 \u0431\u043e\u0439\u043b\u0435\u0440\u043f\u043b\u0435\u0439\u0442-\u043a\u043e\u0434\u0430 \u0441\u043f\u0430\u0441\u0430\u044e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043a\u043e\u0434\u0430 \u0438\u043b\u0438 \u0442\u0430\u043a\u0438\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u0430\u043a Lombok.<\/p>\n<pre><code class=\"java\">private final boolean isRunning; private final boolean isAsync; .... public boolean isRunning() {       return isRunning;   }  public boolean isAsync() {       return isRunning;   } <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <code>isRunning<\/code> \u0438 <code>isAsync<\/code>, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043d\u0430 \u0438\u0445 \u0433\u0435\u0442\u0442\u0435\u0440\u044b. <code>#isRunning()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>isRunning<\/code>, \u0430 <code>#isAsync()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442&#8230; \u0442\u043e\u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>isRunning<\/code>. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0433\u0435\u0442\u0442\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <code>isAsync<\/code>, \u043d\u043e \u0430\u0432\u0442\u043e\u0440 \u043e\u0448\u0438\u0431\u0441\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6091\/\">V6091<\/a> Suspicious getter implementation. The &#8216;isAsync&#8217; field should probably be returned instead. <a href=\"http:\/\/EsqlQueryResponse.java\">EsqlQueryResponse.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/esql\/src\/main\/java\/org\/elasticsearch\/xpack\/esql\/action\/EsqlQueryResponse.java#L180\"> 180<\/a><\/p>\n<p>\u041c\u044b \u0431\u044b\u043b\u0438 \u0431\u044b \u0440\u0430\u0434\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0442\u0430\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0430\u0441\u044c, \u043d\u043e \u043d\u0430\u0448\u0451\u043b\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0433\u0435\u0442\u0442\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0442 \u043d\u0435\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u044e\u0442:<\/p>\n<pre><code class=\"java\">boolean isDirectory; boolean isSymbolicLink; .... @Override public boolean isDirectory() {       return isDirectory;   }  @Override public boolean isSymbolicLink() {       return isDirectory;   } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>isDirectory<\/code> \u0441 <code>isSymbolicLink<\/code>.<\/p>\n<p>PVS-Studio \u0432\u044b\u0434\u0430\u043b \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6091\/\">V6091<\/a> Suspicious getter implementation. The &#8216;isSymbolicLink&#8217; field should probably be returned instead. <a href=\"http:\/\/DockerFileAttributes.java\">DockerFileAttributes.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/qa\/packaging\/src\/test\/java\/org\/elasticsearch\/packaging\/util\/docker\/DockerFileAttributes.java#L67\"> 67<\/a><\/p>\n<h4>&#171;equals&#187; == &#171;==&#187;<\/h4>\n<p>\u0423 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 Java \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: &#171;\u0412 \u0447\u0451\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 <code>equals<\/code> \u0438 <code>==<\/code>?&#187; \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435:<\/p>\n<pre><code class=\"java\">private void assertValidJsonInput(String content) {     if (testResponse &amp;&amp; (\"js\" == language || \"console-result\" == language)             &amp;&amp; null == skip) {         .....     } } <\/code><\/pre>\n<p>\u041d\u0430 \u043a\u043e\u0434 \u0432\u044b\u0448\u0435 \u0430\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:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6013\/\">V6013<\/a> Strings &#8216;&#187;js&#187;&#8216; and &#8216;language&#8217; are compared by reference. Possibly an equality comparison was intended. <a href=\"http:\/\/SnippetBuilder.java\">SnippetBuilder.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/build-tools-internal\/src\/main\/java\/org\/elasticsearch\/gradle\/internal\/doc\/SnippetBuilder.java#L232\"> 232<\/a><\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6013\/\">V6013<\/a> Strings &#8216;&#187;console-result&#187;&#8216; and &#8216;language&#8217; are compared by reference. Possibly an equality comparison was intended. <a href=\"http:\/\/SnippetBuilder.java\">SnippetBuilder.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/build-tools-internal\/src\/main\/java\/org\/elasticsearch\/gradle\/internal\/doc\/SnippetBuilder.java#L232\"> 232<\/a><\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c: &#171;\u041d\u043e \u0432 \u0447\u0451\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430? \u042f \u043f\u0438\u0441\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434, \u0438 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e&#187;. \u041e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u0430\u0441 \u0441\u043f\u0430\u0441 String Pool, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0441\u0442\u0440\u043e\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0430\u043c \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u0437\u044f\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0443\u043b\u0435. \u0412\u043f\u043e\u043b\u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u0447\u0442\u043e \u0434\u0432\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043f\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b, \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 (<code>==<\/code>) \u0432\u0435\u0440\u043d\u0451\u0442 <code>false<\/code>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>equals<\/code> \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0442\u043e \u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438 \u043e\u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u0430\u0441\u0442 \u0432\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0441 \u0441\u0430\u043c\u0438\u043c \u0441\u043e\u0431\u043e\u0439).<\/p>\n<pre><code class=\"java\">private final List values; .... @Override public final Pipe resolveAttributes(AttributeResolver resolver) {     List newValues = new ArrayList&lt;&gt;(values.size());     for (Pipe v : values) {         newValues.add(v.resolveAttributes(resolver));     }     if (newValues == values) {  \/\/ &lt;=         return this;     }     return replaceChildrenSameSize(newValues); } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u043e\u0432\u043e\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <code>newValues<\/code> \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043b\u0435\u043c <code>values<\/code>, \u0447\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 <code>false<\/code>. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0430\u0432\u0442\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0445\u043e\u0442\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u0430\u043a \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0443\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0438: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6013\/\">V6013<\/a> Objects &#8216;newValues&#8217; and &#8216;values&#8217; are compared by reference. Possibly an equality comparison was intended. <a href=\"http:\/\/ConcatFunctionPipe.java\">ConcatFunctionPipe.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/eql\/src\/main\/java\/org\/elasticsearch\/xpack\/eql\/expression\/function\/scalar\/string\/ConcatFunctionPipe.java#L41\"> 41<\/a><\/p>\n<h4>\u041b\u0435\u0432 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0430\u0432<\/h4>\n<p>Code Completion \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0439, \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442, \u043e\u043d \u0442\u0430\u043a\u0436\u0435 \u0432\u0435\u0437\u0451\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0443\u044e \u0442\u0435\u043b\u0435\u0436\u043a\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u0442 \u043d\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438. \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043e\u0434\u043d\u0443 \u0442\u0430\u043a\u0443\u044e:<\/p>\n<pre><code class=\"java\">public void testReadSlices() throws IOException {     ....     try (StreamInput input1 = bytesReference.streamInput();          StreamInput input2 = bytesReference.streamInput()) {         for (int i = 0; i &lt; refs; i++) {             boolean sliceLeft = randomBoolean();             BytesReference left = sliceLeft ?                                         input1.readSlicedBytesReference()                                         : input1.readBytesReference();             if (sliceLeft &amp;&amp; bytesReference.hasArray()) {                 assertSame(left.array(), bytesReference.array());  \/\/ &lt;=             }             boolean sliceRight = randomBoolean();             BytesReference right = sliceRight ?                                     input2.readSlicedBytesReference()                                     : input2.readBytesReference();             assertEquals(left, right);             if (sliceRight &amp;&amp; bytesReference.hasArray()) {                 assertSame(right.array(), right.array());  \/\/ &lt;=             }         }     } <\/code><\/pre>\n<p>\u0421\u0440\u0430\u0432\u043d\u0438\u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043a\u043e\u0434\u0430 \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"java\">assertSame(right.array(), bytesReference.array()); <\/code><\/pre>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u0434 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>array()<\/code> \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>right<\/code>.<\/p>\n<p>\u041f\u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u043c PVS-Studio \u0437\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6009\/\">V6009<\/a> Function &#8216;assertSame&#8217; receives an odd argument. The &#8216;right.array()&#8217; argument was passed several times. <a href=\"http:\/\/AbstractBytesReferenceTestCase.java\">AbstractBytesReferenceTestCase.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/test\/framework\/src\/main\/java\/org\/elasticsearch\/common\/bytes\/AbstractBytesReferenceTestCase.java#L713\"> 713<\/a><\/p>\n<h4>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 equals<\/h4>\n<p>\u041c\u044b \u0443\u0436\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 <code>equals<\/code> \u0438 <code>==<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c <code>equals<\/code> \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043e\u043a\u0443\u043d\u0451\u043c\u0441\u044f \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"java\">@Override public boolean equals(Object obj) {     ....     KeyedFilter other = (KeyedFilter) obj;     return Objects.equals(keys, other.keys)         &amp;&amp; Objects.equals(timestamp, other.timestamp)         &amp;&amp; Objects.equals(tiebreaker, other.tiebreaker)         &amp;&amp; Objects.equals(child(), other.child())         &amp;&amp; isMissingEventFilter == isMissingEventFilter; \/\/ &lt;= } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <code>other<\/code> \u043f\u0435\u0440\u0435\u0434 \u0432\u0442\u043e\u0440\u044b\u043c <code>isMissingEventFilter<\/code>. \u0418\u0437-\u0437\u0430 \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>isMissingEventFilter<\/code>.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;isMissingEventFilter&#8217; to the left and to the right of the &#8216;==&#8217; operator. <a href=\"http:\/\/KeyedFilter.java\">KeyedFilter.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/eql\/src\/main\/java\/org\/elasticsearch\/xpack\/eql\/plan\/logical\/KeyedFilter.java#L116\"> 116<\/a><\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0443 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>equals<\/code>:<\/p>\n<pre><code class=\"java\">@Override public boolean equals(Object o) {     if (this == o) return true;     if (o == null || getClass() != o.getClass()) return false;     IndexError that = (IndexError) o;     return indexName.equals(that.indexName)         &amp;&amp; Arrays.equals(shardIds, that.shardIds)         &amp;&amp; errorType == that.errorType         &amp;&amp; message.equals(that.message)         &amp;&amp; stallTimeSeconds == stallTimeSeconds;    \/\/ &lt;= } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 <code>equals<\/code>, \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 <code>stallTimeSeconds<\/code> \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>that<\/code>.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435. \u042d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0435\u043d\u043e\u043c\u0435\u043d \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0451\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/0260\/\">\u044d\u0442\u043e\u0439<\/a> \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u0432\u044b\u0434\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;stallTimeSeconds&#8217; to the left and to the right of the &#8216;==&#8217; operator. <a href=\"http:\/\/IndexError.java\">IndexError.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/test\/external-modules\/error-query\/src\/main\/java\/org\/elasticsearch\/test\/errorquery\/IndexError.java#L147\"> 147<\/a><\/p>\n<h4>\u041b\u044e\u0431\u0438\u0442\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443? \u0410 \u0432 \u043a\u043e\u0434\u0435?<\/h4>\n<p>\u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438 \u043d\u0430 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u043a\u043e\u0434\u0435 \u043b\u0435\u0433\u043a\u043e \u043e\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c\u0441\u044f. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432:<\/p>\n<pre><code class=\"java\">private static LinearRing parseLinearRing(             ByteBuffer byteBuffer,             boolean hasZ, boolean coerce             ) {     ....     double[] lons = new double[length];     double[] lats = new double[length];     ....     if (linearRingNeedsCoerced(lats, lons, alts, coerce)) { \/\/ &lt;=         lons = coerce(lons);         lats = coerce(lats);         if (hasZ) {             alts = coerce(alts);         }     }     .... } <\/code><\/pre>\n<p>\u041d\u043e \u0447\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c? \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u0435\u0442\u043e\u0434\u0430 <code>linearRingNeedsCoerced<\/code>.<\/p>\n<pre><code class=\"java\">private static boolean linearRingNeedsCoerced(                     double[] lons, double[] lats,                     double[] alts,                     boolean coerce                     ) {     assert lats.length == lons.length                 &amp;&amp; (alts == null || alts.length == lats.length);     assert lats.length &gt; 0;     if (coerce == false) {         return false;     }     final int last = lons.length - 1;     return lons[0] != lons[last]                  || lats[0] != lats[last]                 || (alts != null &amp;&amp; alts[0] != alts[last]); } <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e <code>lons<\/code> \u0438 <code>lats<\/code> \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043d\u044b \u043c\u0435\u0441\u0442\u0430\u043c\u0438. \u041f\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c\u0443 \u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044e \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0435, \u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u044d\u0442\u0438\u0445 \u0434\u0432\u0443\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0447\u043d\u0451\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u0431\u044b\u043b\u043e \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6029\/\">V6029<\/a> Possible incorrect order of arguments passed to method: &#8216;lats&#8217;, &#8216;lons&#8217;. <a href=\"http:\/\/WellKnownBinary.java\">WellKnownBinary.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/libs\/geo\/src\/main\/java\/org\/elasticsearch\/geometry\/utils\/WellKnownBinary.java#L370\"> 370<\/a><\/p>\n<h4>null null&#8217;\u043e\u043c \u0430 \u0447\u0442\u043e \u0442\u0430\u043c \u0434\u0430\u043b\u044c\u0448\u0435?<\/h4>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"java\">public static void assertDeepEquals(ElasticsearchException expected,                                     ElasticsearchException actual) {     do {         if (expected == null) {             assertNull(actual);         } else {             assertNotNull(actual);         }         assertEquals(expected.getMessage(), actual.getMessage());         ....     }     .... } <\/code><\/pre>\n<p>\u041f\u0440\u0438 <code>expected == null<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 <code>actual<\/code> \u0442\u043e\u0436\u0435 <code>null<\/code>. \u041d\u0430 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0441\u0445\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c\u0441\u044f, \u043d\u043e \u043d\u0435\u0442. \u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 <code>actual<\/code> \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f <code>null<\/code>, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043d\u0430 \u044d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6008\/\">V6008<\/a> Potential null dereference of &#8216;expected&#8217;. <a href=\"http:\/\/ElasticsearchExceptionTests.java\">ElasticsearchExceptionTests.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/server\/src\/test\/java\/org\/elasticsearch\/ElasticsearchExceptionTests.java#L1354\"> 1354<\/a><\/p>\n<h4>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c? \u041d\u0435\u0442<\/h4>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u0438 \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u0431\u044b\u0442\u044c \u043e\u0434\u043d\u0443 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0443\u044e \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044c, \u043a\u0430\u043a \u0432 \u043a\u043e\u0434\u0435 \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"java\">private FinishFunction(....) {     ....     for (int p = 1; p &lt; fn.getParameters().size(); p++) {         VariableElement param = fn.getParameters().get(p);         if (p == 0) {     \/\/ &lt;=             if (false == TypeName.get(param.asType()).equals(workType)) {                 throw new IllegalArgumentException(                     \"First argument of \"                         + declarationType + \"#\" + fn.getSimpleName()                         + \" must have type \" + workType                 );             }             continue;         }         ....     }     invocationPattern = pattern.append(\")\").toString(); } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c <code>for<\/code> \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u043d\u043e \u0432 \u0441\u0430\u043c\u043e\u043c \u0442\u0435\u043b\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0430\u0432\u0442\u043e\u0440 \u0437\u0430\u0431\u044b\u043b \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0446\u0438\u043a\u043b\u0430 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442 \u043e \u0442\u0430\u043a\u0438\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044f\u0445 \u0438 \u0434\u0430\u0451\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0437\u0430\u0431\u044b\u043b: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;p == 0&#8217; is always false. <a href=\"http:\/\/MvEvaluatorImplementer.java\">MvEvaluatorImplementer.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/esql\/compute\/gen\/src\/main\/java\/org\/elasticsearch\/compute\/gen\/MvEvaluatorImplementer.java#L456\"> 456<\/a><\/p>\n<h4>\u041a\u043e\u0440\u0430\u0431\u043b\u0438 \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b\u0438, \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b\u0438, \u0434\u0430 \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b\u0438<\/h4>\n<p>\u0411\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0441\u043b\u043e\u0432 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u0434 \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"java\">public void testDLS() throws Exception {     ....      int numDocs = scaledRandomIntBetween(32, 128);     int commitAfter = scaledRandomIntBetween(1, numDocs);          ....      for (int doc = 1; doc &lt;= numDocs; doc++) {         ....         if (doc % 11 == 0) {             iw.deleteDocuments(new Term(\"id\", id));         } else {             if (commitAfter % commitAfter == 0) {   \/\/ &lt;=                 iw.commit();              }             valuesHitCount[valueIndex]++;         }     }     .... } <\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f <code>commitAfter<\/code> \u043d\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f (\u0447\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0443\u043b\u044e) \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 0. \u042d\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u043e, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e <code>iw.commit()<\/code> \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p>PVS-Studio \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435\u043c: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;commitAfter&#8217; to the left and to the right of the &#8216;%&#8217; operator. <a href=\"http:\/\/SecurityIndexReaderWrapperIntegrationTests.java\">SecurityIndexReaderWrapperIntegrationTests.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/core\/src\/test\/java\/org\/elasticsearch\/xpack\/core\/security\/authz\/accesscontrol\/SecurityIndexReaderWrapperIntegrationTests.java#L157\"> 157<\/a><\/p>\n<p>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435? \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <code>commitAfter<\/code> \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 1 \u0434\u043e <code>numDocs<\/code>. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0447\u0438\u0441\u043b\u0430 \u043e\u0442 1 \u0434\u043e <code>numDocs<\/code>, \u0438 \u0435\u0441\u043b\u0438 \u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f <code>commitAfter<\/code> \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e, \u0442\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u044f\u0442\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b. \u041e\u0441\u0442\u0430\u0442\u043e\u043a \u043e\u0442 \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0443\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043c\u043c\u0438\u0442\u0438\u043b\u0438\u0441\u044c \u043a\u0430\u0436\u0434\u044b\u0435 <code>commitAfter<\/code> \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"java\">doc % commitAfter == 0 <\/code><\/pre>\n<h4>\u0420\u0430\u0441\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435 \u0445\u043e\u0447\u0435\u0442\u0441\u044f<\/h4>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0434\u0432\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"java\">@Override public void setAutoCommit(boolean autoCommit) throws SQLException {     checkOpen();     if (autoCommit == false) {         new SQLFeatureNotSupportedException(\"Non auto-commit is not supported\");     } } <\/code><\/pre>\n<pre><code class=\"java\">private String getProperty(String propertyName) {       final String[] settings = getConnectString().split(\";\");       for (int i = 0; i &lt; settings.length; i++) {           String setting = settings[i].trim();           if (setting.length() &gt; 0) {               final int idx = setting.indexOf('=');               if (idx == -1 || idx == 0 || idx == settings[i].length() - 1) {                   new IllegalArgumentException(\"Invalid connection string: \" \/\/ &lt;=                                                 + getConnectString());             }               if (propertyName.equals(setting.substring(0, idx))) {                   return setting.substring(idx + 1);               }           }       }       return null;   } <\/code><\/pre>\n<p>\u0412\u044b \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0443\u0436\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u043e\u0431\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430: \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043d\u043e \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 \u0435\u043c\u0443 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0436\u0430\u0442\u044c \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u0442\u0430\u043a \u0438 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c, \u043f\u043e\u043a\u0430 JIT-\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u043f\u043e\u0439\u043c\u0451\u0442, \u0447\u0442\u043e \u044d\u0442\u0430 \u0441\u0442\u0440\u043e\u0447\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u0451\u0440\u0442\u0432\u044b\u043c \u043a\u043e\u0434\u043e\u043c.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e, \u0438 \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043e \u043d\u0435\u0439 \u0432 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/java\/0621\/\">\u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 Elasticsearch<\/a>.<\/p>\n<p>PVS-Studio \u0434\u0430\u043b \u0434\u0432\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6006\/\">V6006<\/a> The object was created but it is not being used. The &#8216;throw&#8217; keyword could be missing. <a href=\"http:\/\/JdbcConnection.java\">JdbcConnection.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/sql\/jdbc\/src\/main\/java\/org\/elasticsearch\/xpack\/sql\/jdbc\/JdbcConnection.java#L93\"> 93<\/a><\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6006\/\">V6006<\/a> The object was created but it is not being used. The &#8216;throw&#8217; keyword could be missing. <a href=\"http:\/\/AzureStorageSettings.java\">AzureStorageSettings.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/modules\/repository-azure\/src\/main\/java\/org\/elasticsearch\/repositories\/azure\/AzureStorageSettings.java#L352\"> 352<\/a><\/p>\n<h4>\u0421\u0442\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u043a\u043e\u043f\u0438\u0435\u0439 \u0441\u0435\u0431\u044f<\/h4>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443, \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0443\u044e \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439:<\/p>\n<pre><code class=\"java\">private final PatternSet patternSet = new PatternSet().include(\"**\/*.class\");  ....  public void setPatternSet(PatternSet patternSet) {     patternSet.copyFrom(patternSet); } <\/code><\/pre>\n<p>\u041f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u0430\u0432\u0442\u043e\u0440\u0430, \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0441\u0435\u0442\u0442\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0433\u043e <code>patternSet<\/code> \u0432 \u043f\u043e\u043b\u0435 \u043a\u043b\u0430\u0441\u0441\u0430, \u043d\u043e \u0438\u0437-\u0437\u0430 \u0437\u0430\u0431\u044b\u0442\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 <code>this<\/code> \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0447\u0451\u043b \u044d\u0442\u043e\u0442 \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6100\/\">V6100<\/a> An object is used as an argument to its own method. Consider checking the first actual argument of the &#8216;copyFrom&#8217; method. <a href=\"http:\/\/CheckForbiddenApisTask.java\">CheckForbiddenApisTask.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/build-tools-internal\/src\/main\/java\/org\/elasticsearch\/gradle\/internal\/precommit\/CheckForbiddenApisTask.java#L157\"> 157<\/a><\/p>\n<h4>Ctrl+C, Ctrl+V, Ctrl+V, Ctrl+V, Ctr&#8230; \u041e\u0439<\/h4>\n<p>\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043a\u043e\u0434\u0435, \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u0438\u043d\u043e\u0440\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430: \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 <code>null<\/code>. \u041d\u043e \u0432\u0441\u0451 \u043b\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c? \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u043c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u0443\u044e \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0443. \u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0430.<\/p>\n<pre><code class=\"java\">private void test(Snippet test) {     setupCurrent(test);     if (test.continued()) {         \/* Catch some difficult to debug errors with \/\/ TEST[continued]          * and throw a helpful error message. *\/         if (previousTest == null                 || previousTest.path().equals(test.path()) == false) {             throw new InvalidUserDataException(\"\/\/ TEST[continued] \"                 + \"cannot be on first snippet in a file: \" + test);         }         if (previousTest != null &amp;&amp; previousTest.testSetup()) {             throw new InvalidUserDataException(\"\/\/ TEST[continued] \"                 + \"cannot immediately follow \/\/ TESTSETUP: \" + test);         }         if (previousTest != null &amp;&amp; previousTest.testSetup()) {             throw new InvalidUserDataException(\"\/\/ TEST[continued] \"                 + \"cannot immediately follow \/\/ TEARDOWN: \" + test);         }     }     .... } <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0443 \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u043c.<\/p>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432 \u0434\u0432\u0443\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0431\u043b\u043e\u043a\u0430\u0445 <code>if<\/code>. \u041e\u043d\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b. \u041d\u043e, \u043c\u043e\u0436\u0435\u0442, \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e? \u0422\u043e\u0433\u0434\u0430 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0431\u043b\u043e\u043a\u0438 <code>then<\/code>, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043d\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043c \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f. \u041e\u043d\u0438 \u0443\u0436\u0435 \u0440\u0430\u0437\u043d\u044f\u0442\u0441\u044f. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0430\u0432\u0442\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0445\u043e\u0442\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u043d\u043e \u0432\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p>\u041c\u043e\u0436\u0435\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0442\u043e\u0440\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c (\u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 <code>null<\/code>):<\/p>\n<pre><code class=\"java\">if (previousTest.testTearDown()) {     .... } <\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u043d\u0430\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;previousTest != null&#8217; is always true. <a href=\"http:\/\/RestTestsFromDocSnippetTask.java\">RestTestsFromDocSnippetTask.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/build-tools-internal\/src\/main\/java\/org\/elasticsearch\/gradle\/internal\/doc\/RestTestsFromDocSnippetTask.java#L247\"> 247<\/a><\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;previousTest != null&#8217; is always true. <a href=\"http:\/\/RestTestsFromDocSnippetTask.java\">RestTestsFromDocSnippetTask.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/build-tools-internal\/src\/main\/java\/org\/elasticsearch\/gradle\/internal\/doc\/RestTestsFromDocSnippetTask.java#L249\"> 249<\/a><\/p>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0435\u0449\u0451 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/h3>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0442\u043e\u0438\u0442, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043f\u0440\u0438\u0448\u043b\u0438 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0448\u043b\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u0430\u043b\u0435\u043a\u043e.<\/p>\n<h4>\u0422\u043e\u043a\u0435\u043d \u0438\u043b\u0438 \u0442\u043e\u043a\u0435\u043d?<\/h4>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430.<\/p>\n<pre><code class=\"java\">protected BulkByScrollTask.Status doParseInstance(                         XContentParser parser                         ) throws IOException {     XContentParser.Token token;     if (parser.currentToken() == XContentParser.Token.START_OBJECT) {         token = parser.nextToken(); \/\/ &lt;=     } else {         token = parser.nextToken(); \/\/ &lt;=     }     ensureExpectedToken(XContentParser.Token.START_OBJECT, token, parser);     token = parser.nextToken();     ensureExpectedToken(XContentParser.Token.FIELD_NAME, token, parser);     return innerParseStatus(parser); } <\/code><\/pre>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0432 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435. \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 <code>parser<\/code>, \u0438\u0437 \u043d\u0435\u0433\u043e \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0442\u043e\u043a\u0435\u043d \u0438, \u0435\u0441\u043b\u0438 \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0447\u0438\u0442\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435! \u0418, \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435, \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0438 \u044d\u0442\u043e\u0442 \u0442\u043e\u043a\u0435\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u0430!<\/p>\n<p>\u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u0442\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432\u043d\u043e\u0441\u0438\u043b\u0438 \u043f\u0440\u0430\u0432\u043a\u0438? \u041d\u0435\u0442, \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c <a href=\"https:\/\/github.com\/elastic\/elasticsearch\/commit\/c41df745a6e0c954ee8827e7bac7fd0b71e2bb52#diff-33946abed04fe8362629d0fd559232236448a2feadff042c3cdcf774f12f8f3c\">\u043a\u043e\u043c\u043c\u0438\u0442\u0435<\/a> \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u0441\u044f.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6004\/\">V6004<\/a> The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. <a href=\"http:\/\/BulkByScrollTaskStatusTests.java\">BulkByScrollTaskStatusTests.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/server\/src\/test\/java\/org\/elasticsearch\/index\/reindex\/BulkByScrollTaskStatusTests.java#L189\"> 189<\/a><\/p>\n<h4>\u0421\u0435\u0439\u0447\u0430\u0441 \u0441\u0442\u0440\u043e\u043a \u043d\u0435\u0442. \u0418 \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u0442<\/h4>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u043b\u0438\u0448\u043d\u044e\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443:<\/p>\n<pre><code class=\"java\">@Override protected StringBuilder contentToWKT() {     final StringBuilder sb = new StringBuilder();     if (lines.isEmpty()) {          \/\/ &lt;=         sb.append(GeoWKTParser.EMPTY);     } else {         sb.append(GeoWKTParser.LPAREN);         if (lines.size() &gt; 0) {     \/\/ &lt;=             sb.append(ShapeBuilder                 .coordinateListToWKT(lines.get(0).coordinates)             );         }         for (int i = 1; i &lt; lines.size(); ++i) {             sb.append(GeoWKTParser.COMMA);             sb.append(ShapeBuilder                 .coordinateListToWKT(lines.get(i).coordinates)             );         }         sb.append(GeoWKTParser.RPAREN);     }     return sb; } <\/code><\/pre>\n<p>\u0412 \u043a\u043e\u0434\u0435 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044f\u0432\u043d\u043e \u043b\u0438\u0448\u043d\u044f\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <code>lines.size() &gt; 0<\/code>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043c\u044b \u0443\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 <code>lines<\/code> \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u0442\u0443, \u044d\u0442\u0430 \u0432\u0435\u0442\u0432\u044c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;lines.size() &gt; 0&#8217; is always true. <a href=\"http:\/\/MultiLineStringBuilder.java\">MultiLineStringBuilder.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/modules\/legacy-geo\/src\/main\/java\/org\/elasticsearch\/legacygeo\/builders\/MultiLineStringBuilder.java#L81\"> 81<\/a><\/p>\n<h4>\u0421\u043a\u043e\u0431\u043a\u0430? \u0422\u043e\u0447\u043d\u043e?<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u043e\u0435\u043c\u0441\u044f \u0432 \u043a\u043e\u0434\u0435. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434:<\/p>\n<pre><code class=\"java\">private static List parseCoordinateList(                         StreamTokenizer stream,                         final boolean ignoreZValue,                         final boolean coerce                     ) throws IOException, ElasticsearchParseException {     ....     while (nextCloserOrComma(stream).equals(COMMA)) {         ....         if (isOpenParen &amp;&amp; nextCloser(stream).equals(RPAREN) == false) {  \/\/ &lt;=             throw new ElasticsearchParseException(                                 \"expected: \" + RPAREN                                     + \" but found: \" + tokenString(stream),                                 stream.lineno()                             );         }     }     return coordinates.build(); } <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u043f\u043e\u043c\u043d\u0438\u0442\u0435 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 Elasticsearch \u043d\u0430\u0438\u0437\u0443\u0441\u0442\u044c, \u0442\u043e \u0432\u044b, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043d\u0435 \u043f\u043e\u0439\u043c\u0451\u0442\u0435, \u0432 \u0447\u0451\u043c \u0437\u0434\u0435\u0441\u044c \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;nextCloser(stream).equals(RPAREN) == false&#8217; is always false. <a href=\"http:\/\/GeoWKTParser.java\">GeoWKTParser.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/modules\/legacy-geo\/src\/main\/java\/org\/elasticsearch\/legacygeo\/parsers\/GeoWKTParser.java#L164\"> 164<\/a><\/p>\n<p>\u041f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435, \u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>nextCloser<\/code> \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d <code>RPAREN<\/code>? \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0442\u0435\u043b\u043e \u043c\u0435\u0442\u043e\u0434\u0430:<\/p>\n<pre><code class=\"java\">private static String nextCloser(StreamTokenizer stream)                      throws IOException, ElasticsearchParseException {     if (nextWord(stream).equals(RPAREN)) {         return RPAREN;     }     throw new ElasticsearchParseException(                                 \"expected: \" + RPAREN                                     + \" but found: \" + tokenString(stream),                                 stream.lineno()                             );  } <\/code><\/pre>\n<p>\u0412\u044b\u044f\u0441\u043d\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e <code>nextCloser<\/code> \u043b\u0438\u0431\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>RPAREN<\/code>, \u043b\u0438\u0431\u043e \u043a\u0438\u0434\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435! \u041f\u043e\u0434\u043c\u0435\u0442\u0438\u043c \u0442\u0430\u043a\u0436\u0435, \u0447\u0442\u043e \u043e\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e \u0442\u043e\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 \u0441 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>\u041a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e:<\/p>\n<pre><code class=\"java\">private static List parseCoordinateList(                         StreamTokenizer stream,                         final boolean ignoreZValue,                         final boolean coerce                     ) throws IOException, ElasticsearchParseException {     ....     while (nextCloserOrComma(stream).equals(COMMA)) {         ....         if (isOpenParen) {             nextCloser(stream);         }     }     return coordinates.build(); } <\/code><\/pre>\n<h4>\u041f\u0443\u0441\u0442\u043e\u0442\u0430 x2<\/h4>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432:<\/p>\n<pre><code class=\"java\">public static  List combine(                     List left,                     List right                     ) {     if (right.isEmpty()) {         return (List) left;     }     if (left.isEmpty()) {         return (List) right;     }     List list = new ArrayList&lt;&gt;(left.size() + right.size());     if (left.isEmpty() == false) {  \/\/ &lt;=         list.addAll(left);     }     if (right.isEmpty() == false) {  \/\/ &lt;=         list.addAll(right);     }     return list; } <\/code><\/pre>\n<p>\u0417\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0432 \u0441\u043f\u0438\u0441\u043a\u0438 \u043d\u0430 \u043f\u0443\u0441\u0442\u043e\u0442\u0443, \u043d\u0435\u0437\u0430\u0447\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0435\u0449\u0451 \u0440\u0430\u0437 \u043f\u0440\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f.  \u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 \u043a\u043e\u0434 \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>PVS-Studio \u0437\u0430\u043c\u0435\u0442\u0438\u043b \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 \u0432\u044b\u0434\u0430\u043b \u0434\u0432\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;left.isEmpty() == false&#8217; is always true. <a href=\"http:\/\/CollectionUtils.java\">CollectionUtils.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/ql\/src\/main\/java\/org\/elasticsearch\/xpack\/ql\/util\/CollectionUtils.java#L33\"> 33<\/a><\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;right.isEmpty() == false&#8217; is always true. <a href=\"http:\/\/CollectionUtils.java\">CollectionUtils.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/ql\/src\/main\/java\/org\/elasticsearch\/xpack\/ql\/util\/CollectionUtils.java#L36\"> 36<\/a><\/p>\n<h4>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0448\u044c? \u0421\u043e\u0434\u0435\u0440\u0436\u0443. \u0410 \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044e?<\/h4>\n<p>\u0420\u0430\u0437\u0433\u043e\u043d\u044f\u0435\u043c\u0441\u044f \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435 \u0441\u0430\u043c\u044b\u0439 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0439 \u043a\u0435\u0439\u0441:<\/p>\n<pre><code class=\"java\">@TaskAction public void checkDependencies() {     ....     for (File file : licensesDirAsFile.listFiles()) {         String name = file.getName();         if (name.endsWith(\"-LICENSE\") || name.endsWith(\"-LICENSE.txt\")) {             \/\/ TODO: why do we support suffix of LICENSE *and* LICENSE.txt??             licenses.put(name, false);         } else if (name.contains(\"-NOTICE\")                         || name.contains(\"-NOTICE.txt\")) { \/\/ &lt;=             notices.put(name, false);         } else if (name.contains(\"-SOURCES\")                         || name.contains(\"-SOURCES.txt\")) { \/\/ &lt;=             sources.put(name, false);         }     }     .... } <\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u043d\u043e \u0435\u0433\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c, \u0443\u0431\u0440\u0430\u0432 \u043b\u0438\u0448\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043b\u043e\u0433\u0438\u043a\u0443, \u0430 \u0447\u0442\u043e\u0431\u044b \u0442\u043e\u0447\u043d\u043e \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u043e \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c.<\/p>\n<p>\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430 <code>\"FILENAME-NOTICE.txt\"<\/code>. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 \u043e\u043d\u0430 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0443 <code>\"-NOTICE.txt\"<\/code>? \u0410 <code>\"-NOTICE \"<\/code>? \u041e\u0431\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c <code>\"-NOTICE.txt\"<\/code> \u0438 <code>\"-NOTICE\"<\/code>.<\/p>\n<p>\u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0443 \u043d\u0430\u0441 \u0438 \u0441 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 <code>\"-SOURCES.txt\"<\/code> \u0438 <code>\"-SOURCES\"<\/code>.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;name.contains(&#171;-NOTICE.txt&#187;)&#8217; is always false. <a href=\"http:\/\/DependencyLicensesTask.java\">DependencyLicensesTask.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/build-tools-internal\/src\/main\/java\/org\/elasticsearch\/gradle\/internal\/precommit\/DependencyLicensesTask.java#L228\"> 228<\/a><\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;name.contains(&#171;-SOURCES.txt&#187;)&#8217; is always false. <a href=\"http:\/\/DependencyLicensesTask.java\">DependencyLicensesTask.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/build-tools-internal\/src\/main\/java\/org\/elasticsearch\/gradle\/internal\/precommit\/DependencyLicensesTask.java#L230\"> 230<\/a><\/p>\n<h4>\u0421\u043b\u043e\u0436\u0438\u043b\u043e\u0441\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438<\/h4>\n<p>\u041f\u043e\u0434 \u043a\u043e\u043d\u0435\u0446 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u0434 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432:<\/p>\n<pre><code class=\"java\">public void testMinimumPerNode() {     int negativeShardsPerNode = between(-50_000, 0);     try {         if (frequently()) {             clusterAdmin().prepareUpdateSettings(....)                 .setPersistentSettings(                     Settings.builder()                     .put(shardsPerNodeKey, negativeShardsPerNode)                     .build()                 )                 .get();         } else {             clusterAdmin().prepareUpdateSettings(....)                 .setPersistentSettings(                     Settings.builder()                     .put(shardsPerNodeKey, negativeShardsPerNode)                     .build()                 )                 .get();         }         fail(\"should not be able to set negative shards per node\");     } catch (IllegalArgumentException ex) {         ....     } } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6004\/\">V6004<\/a> The &#8216;then&#8217; statement is equivalent to the &#8216;else&#8217; statement. <a href=\"http:\/\/ClusterShardLimitIT.java\">ClusterShardLimitIT.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/server\/src\/internalClusterTest\/java\/org\/elasticsearch\/cluster\/shards\/ClusterShardLimitIT.java#L52\"> 52<\/a><\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0442\u0430\u043a, \u0447\u0442\u043e <code>then<\/code> \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d <code>else<\/code>, \u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0441\u044f \u043a Git History. \u0421\u0430\u043c \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0448\u0435\u0441\u0442\u044c \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. <code>If<\/code>&#8212;<code>else<\/code> \u0442\u043e\u0433\u0434\u0430 \u0435\u0449\u0451 \u0438\u043c\u0435\u043b \u0441\u043c\u044b\u0441\u043b, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u043e\u0433\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0432\u0443\u043c\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438: \u0442\u0435\u043a\u0443\u0449\u0438\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>setTransientSettings<\/code>. \u041e\u0434\u043d\u0430\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u0431\u044b\u043b \u043f\u043e\u043c\u0435\u0447\u0435\u043d \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u043c, \u0435\u0433\u043e <a href=\"https:\/\/github.com\/elastic\/elasticsearch\/commit\/b2c5fd34ffe5bbdf3b3966721c8979bce6b7fd36#diff-9d1294ab946d0440d0850e029500ff2f443554fdc9bffe0a1591c199ace5a4a1\">\u0437\u0430\u043c\u0435\u043d\u0438\u043b\u0438<\/a> \u043d\u0430 <code>setPersistentSettings<\/code>, \u043d\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438, \u0447\u0442\u043e <code>then<\/code> \u0438 <code>else<\/code> \u0441\u0442\u0430\u043b\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b.<\/p>\n<h3>\u042d\u0442\u043e \u0442\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?<\/h3>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0442\u0438\u043f\u043e\u043c (<code>double<\/code> \u0438\u043b\u0438 <code>float<\/code>):<\/p>\n<pre><code class=\"java\">protected Number randomNumber() {     \/*      * The source parser and doc values round trip will both reduce      * the precision to 32 bits if the value is more precise.      * randomDoubleBetween will smear the values out across a wide      * range of valid values.      *\/     return randomBoolean() ?         randomDoubleBetween(-Float.MAX_VALUE, Float.MAX_VALUE, true)         : randomFloat(); } <\/code><\/pre>\n<p>\u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e: \u043c\u0435\u0442\u043e\u0434 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043b\u0438\u0431\u043e <code>float<\/code>, \u043b\u0438\u0431\u043e <code>double<\/code>.<\/p>\n<p>\u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6088\/\">V6088<\/a> Result of this expression will be implicitly cast to &#8216;double&#8217;. Check if program logic handles it correctly. <a href=\"http:\/\/ScaledFloatFieldMapperTests.java\">ScaledFloatFieldMapperTests.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/modules\/mapper-extras\/src\/test\/java\/org\/elasticsearch\/index\/mapper\/extras\/ScaledFloatFieldMapperTests.java#L505\"> 505<\/a><\/p>\n<p>\u041d\u043e \u043a\u0430\u043a?! \u041c\u043e\u0436\u0435\u0442, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <code>#randomFloat()<\/code> \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>double<\/code>? \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438 \u043d\u0430 \u043d\u0435\u0433\u043e:<\/p>\n<pre><code class=\"java\">public static float randomFloat() {     return random().nextFloat(); } <\/code><\/pre>\n<p>\u0418 \u0442\u0443\u0442 \u0432\u0441\u0451 \u0432\u0435\u0440\u043d\u043e. \u041c\u043e\u0436\u0435\u0442, \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u043c \u0442\u0438\u043f\u043e\u043c \u0443 <code>#randomDoubleBetween<\/code>?<\/p>\n<pre><code class=\"java\">public static double randomDoubleBetween(                 double start, double end,                 boolean lowerInclusive                 ) {     double result = 0.0;     ....     return result; } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043e\u0448\u0438\u0431\u0441\u044f? \u041c\u043e\u0436\u0435\u043c \u0432\u0430\u0441 \u0437\u0430\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043d\u0435\u0442. \u041f\u0443\u0441\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0442\u0438\u043f \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0441\u044b\u043b\u043e\u0447\u043d\u044b\u043c, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jls\/se24\/html\/jls-5.html#jls-5.6\">\u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u043c<\/a> (<code>float<\/code> \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a <code>double<\/code>). \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 Elasticseach \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0432\u0438\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438 \u0432\u043f\u0440\u0430\u0432\u0434\u0443 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0435. \u041e\u0442 \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439 \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u043d\u0430\u0435\u0442 \u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u044f\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <code>if<\/code>&#8212;<code>else<\/code>.<\/p>\n<pre><code class=\"java\">if (randomBoolean()) {     return randomDoubleBetween(-Float.MAX_VALUE, Float.MAX_VALUE, true); } else {     return randomFloat(); } <\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"java\">public static Number truncate(Number n, Number precision) {     ....     return n instanceof Float ? result.floatValue() : result; } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u0434\u0430\u0451\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6088\/\">V6088<\/a> Result of this expression will be implicitly cast to &#8216;double&#8217;. Check if program logic handles it correctly. <a href=\"http:\/\/Maths.java\">Maths.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/ql\/src\/main\/java\/org\/elasticsearch\/xpack\/ql\/expression\/predicate\/operator\/math\/Maths.java#L122\"> 122<\/a><\/p>\n<h3>\u041f\u043e\u0434\u0432\u043e\u0434\u0438\u043c \u0438\u0442\u043e\u0433\u0438<\/h3>\n<p>\u0412\u044b\u0440\u0430\u0436\u0430\u0435\u043c \u0443\u0432\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c: \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u0430\u043a Elasticsearch (\u043d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0442\u0440\u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0441\u0442\u0440\u043e\u043a Java \u043a\u043e\u0434\u0430), \u0441\u0442\u043e\u0438\u0442 \u0442\u0430\u043a\u0438\u0445 \u0436\u0435 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0445 \u0443\u0441\u0438\u043b\u0438\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435 \u043c\u044b \u043b\u044e\u0434\u0438 \u0438 \u0432\u0441\u0435 \u043c\u044b \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0430\u0439\u0442\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u0440\u0438\u0432\u0435\u043b\u0438 \u043b\u0438\u0448\u044c \u043c\u0430\u043b\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043e\u0442 \u0432\u0441\u0435\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043d\u043e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438\u0445 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435. \u0418, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0447\u0430\u0441\u0442\u0435\u0439, \u0432\u044b\u0434\u0435\u043b\u0438\u043b\u0438 \u0441\u0430\u043c\u044b\u0435, \u043d\u0430 \u043d\u0430\u0448 \u0432\u0437\u0433\u043b\u044f\u0434, \u043f\u0440\u0438\u043c\u0435\u0442\u043d\u044b\u0435.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c PVS-Studio, \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e <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=1247\">\u0437\u0434\u0435\u0441\u044c<\/a>. \u0414\u043b\u044f Open Source \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0435\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <a href=\"https:\/\/pvs-studio.ru\/ru\/order\/open-source-license\/\">\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/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: Egor Pishii. <a href=\"https:\/\/pvs-studio.com\/en\/blog\/posts\/java\/1247\/\">Searching in a search: let&#8217;s check Elasticsearch<\/a>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/904438\/\"> https:\/\/habr.com\/ru\/articles\/904438\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 Java \u0432 Open Source. Elasticsearch \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f\u0445, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a GitHub, \u0410\u043b\u044c\u0444\u0430-\u0411\u0430\u043d\u043a, \u0422\u0438\u043d\u044c\u043a\u043e\u0444\u0444, Netflix \u0438 Amazon. \u0428\u0435\u0441\u0442\u044c \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u0443\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a\u0438\u0435 \u043d\u043e\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0437\u0430 \u0441\u0442\u043e\u043b\u044c \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f?<\/p>\n<figure class=\"full-width\"><\/figure>\n<h3>\u041e \u0447\u0451\u043c \u0431\u0443\u0434\u0435\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c?<\/h3>\n<p>\u041a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438, \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b\u0438 \u0443\u0436\u0435 \u0446\u0435\u043b\u044b\u0445 \u0448\u0435\u0441\u0442\u044c (!) \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434. \u041e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/java\/0621\/\">\u044d\u0442\u043e\u0439<\/a> \u0441\u0441\u044b\u043b\u043a\u0435.<\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0438\u0441\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u044b\u0441\u044f\u0447\u0430\u043c\u0438, \u043d\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430\u0441\u044c \u0432 \u0440\u043e\u043c\u0430\u043d \u043e \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435, \u0447\u0442\u043e \u0431\u0440\u043e\u0441\u0438\u043b\u0438\u0441\u044c \u0432 \u0433\u043b\u0430\u0437\u0430 \u043f\u0440\u0438 \u0431\u0435\u0433\u043b\u043e\u043c \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 Elasticsearch. \u0410 \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u0445 \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u043a\u0440\u0443\u043f\u043d\u044b\u0435 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438, \u0442\u0430\u043a \u0438 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u044b.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u043a\u0430 \u043d\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0430\u0448\u0435\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0430\u043f\u043e\u043a, \u0430 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0435\u0442\u0430\u0431\u0430\u0439\u0442\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u0442\u0430\u043a\u0436\u0435 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u0443\u044e \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 (\u0442\u0440\u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0441\u0442\u0440\u043e\u043a Java \u043a\u043e\u0434\u0430), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0435\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0435\u0451 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435.<\/p>\n<p><strong>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440<\/strong>: \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 (\u043f\u0440\u043e\u0431\u0435\u043b\u044b, \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044b \u0441\u0442\u0440\u043e\u043a) \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430. \u041c\u043e\u0436\u0435\u0442\u0435 \u043d\u0435 \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e, \u0441\u043c\u044b\u0441\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0438\u0441\u043a\u0430\u0436\u0451\u043d.<\/p>\n<h3>\u041e\u0447\u0435\u043f\u044f\u0442\u043a\u0438<\/h3>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0441\u0442\u0440\u0430\u0448\u043d\u044b\u0445 \u0432\u0440\u0430\u0433\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u2014 \u043e\u043f\u0435\u0447\u0430\u0442\u043e\u043a.<\/p>\n<h4>\u041f\u043e\u043b\u0435 \u0437\u0430 \u043f\u043e\u043b\u0435<\/h4>\n<p>\u0427\u0430\u0441\u0442\u043e \u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u0433\u0435\u0442\u0442\u0435\u0440\u044b? \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u044d\u0442\u043e \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0437\u0430\u043d\u044f\u0442\u0438\u0435. \u041e\u0442 \u0431\u043e\u0439\u043b\u0435\u0440\u043f\u043b\u0435\u0439\u0442-\u043a\u043e\u0434\u0430 \u0441\u043f\u0430\u0441\u0430\u044e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u043a\u043e\u0434\u0430 \u0438\u043b\u0438 \u0442\u0430\u043a\u0438\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u0430\u043a Lombok.<\/p>\n<pre><code class=\"java\">private final boolean isRunning; private final boolean isAsync; .... public boolean isRunning() {       return isRunning;   }  public boolean isAsync() {       return isRunning;   } <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <code>isRunning<\/code> \u0438 <code>isAsync<\/code>, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043d\u0430 \u0438\u0445 \u0433\u0435\u0442\u0442\u0435\u0440\u044b. <code>#isRunning()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>isRunning<\/code>, \u0430 <code>#isAsync()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442&#8230; \u0442\u043e\u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>isRunning<\/code>. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0433\u0435\u0442\u0442\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <code>isAsync<\/code>, \u043d\u043e \u0430\u0432\u0442\u043e\u0440 \u043e\u0448\u0438\u0431\u0441\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6091\/\">V6091<\/a> Suspicious getter implementation. The &#8216;isAsync&#8217; field should probably be returned instead. <a href=\"http:\/\/EsqlQueryResponse.java\">EsqlQueryResponse.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/esql\/src\/main\/java\/org\/elasticsearch\/xpack\/esql\/action\/EsqlQueryResponse.java#L180\"> 180<\/a><\/p>\n<p>\u041c\u044b \u0431\u044b\u043b\u0438 \u0431\u044b \u0440\u0430\u0434\u044b \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0442\u0430\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u043b\u0430\u0441\u044c, \u043d\u043e \u043d\u0430\u0448\u0451\u043b\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0433\u0435\u0442\u0442\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e, \u0447\u0442\u043e \u043e\u0442 \u043d\u0435\u0433\u043e \u043e\u0436\u0438\u0434\u0430\u044e\u0442:<\/p>\n<pre><code class=\"java\">boolean isDirectory; boolean isSymbolicLink; .... @Override public boolean isDirectory() {       return isDirectory;   }  @Override public boolean isSymbolicLink() {       return isDirectory;   } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <code>isDirectory<\/code> \u0441 <code>isSymbolicLink<\/code>.<\/p>\n<p>PVS-Studio \u0432\u044b\u0434\u0430\u043b \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6091\/\">V6091<\/a> Suspicious getter implementation. The &#8216;isSymbolicLink&#8217; field should probably be returned instead. <a href=\"http:\/\/DockerFileAttributes.java\">DockerFileAttributes.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/qa\/packaging\/src\/test\/java\/org\/elasticsearch\/packaging\/util\/docker\/DockerFileAttributes.java#L67\"> 67<\/a><\/p>\n<h4>&#171;equals&#187; == &#171;==&#187;<\/h4>\n<p>\u0423 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 Java \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043f\u043e\u043b\u043d\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: &#171;\u0412 \u0447\u0451\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 <code>equals<\/code> \u0438 <code>==<\/code>?&#187; \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435:<\/p>\n<pre><code class=\"java\">private void assertValidJsonInput(String content) {     if (testResponse &amp;&amp; (\"js\" == language || \"console-result\" == language)             &amp;&amp; null == skip) {         .....     } } <\/code><\/pre>\n<p>\u041d\u0430 \u043a\u043e\u0434 \u0432\u044b\u0448\u0435 \u0430\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:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6013\/\">V6013<\/a> Strings &#8216;&#187;js&#187;&#8216; and &#8216;language&#8217; are compared by reference. Possibly an equality comparison was intended. <a href=\"http:\/\/SnippetBuilder.java\">SnippetBuilder.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/build-tools-internal\/src\/main\/java\/org\/elasticsearch\/gradle\/internal\/doc\/SnippetBuilder.java#L232\"> 232<\/a><\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6013\/\">V6013<\/a> Strings &#8216;&#187;console-result&#187;&#8216; and &#8216;language&#8217; are compared by reference. Possibly an equality comparison was intended. <a href=\"http:\/\/SnippetBuilder.java\">SnippetBuilder.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/build-tools-internal\/src\/main\/java\/org\/elasticsearch\/gradle\/internal\/doc\/SnippetBuilder.java#L232\"> 232<\/a><\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c: &#171;\u041d\u043e \u0432 \u0447\u0451\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430? \u042f \u043f\u0438\u0441\u0430\u043b \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434, \u0438 \u043e\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e&#187;. \u041e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u0430\u0441 \u0441\u043f\u0430\u0441 String Pool, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u0441\u0442\u0440\u043e\u043a, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0430\u043c \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u0437\u044f\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0443\u043b\u0435. \u0412\u043f\u043e\u043b\u043d\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u0447\u0442\u043e \u0434\u0432\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043f\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e \u0441\u0442\u0440\u043e\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u044b, \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 (<code>==<\/code>) \u0432\u0435\u0440\u043d\u0451\u0442 <code>false<\/code>. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>equals<\/code> \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0440\u043e\u043a.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0442\u043e \u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438 \u043e\u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u0430\u0441\u0442 \u0432\u0435\u0440\u043d\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 (\u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u0441 \u0441\u0430\u043c\u0438\u043c \u0441\u043e\u0431\u043e\u0439).<\/p>\n<pre><code class=\"java\">private final List values; .... @Override public final Pipe resolveAttributes(AttributeResolver resolver) {     List newValues = new ArrayList&lt;&gt;(values.size());     for (Pipe v : values) {         newValues.add(v.resolveAttributes(resolver));     }     if (newValues == values) {  \/\/ &lt;=         return this;     }     return replaceChildrenSameSize(newValues); } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u043e\u0432\u043e\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 <code>newValues<\/code> \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u043e\u043b\u0435\u043c <code>values<\/code>, \u0447\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 <code>false<\/code>. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0430\u0432\u0442\u043e\u0440 \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0445\u043e\u0442\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043b\u0438 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u043a\u0430\u043a \u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0443\u043a\u0430\u0437\u0430\u043b \u043d\u0430 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0438: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6013\/\">V6013<\/a> Objects &#8216;newValues&#8217; and &#8216;values&#8217; are compared by reference. Possibly an equality comparison was intended. <a href=\"http:\/\/ConcatFunctionPipe.java\">ConcatFunctionPipe.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/eql\/src\/main\/java\/org\/elasticsearch\/xpack\/eql\/expression\/function\/scalar\/string\/ConcatFunctionPipe.java#L41\"> 41<\/a><\/p>\n<h4>\u041b\u0435\u0432 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0430\u0432<\/h4>\n<p>Code Completion \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043a\u0440\u0435\u043f\u0438\u043b\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u0442\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0439, \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442, \u043e\u043d \u0442\u0430\u043a\u0436\u0435 \u0432\u0435\u0437\u0451\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0443\u044e \u0442\u0435\u043b\u0435\u0436\u043a\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043b\u0435\u0436\u0430\u0442 \u043d\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438. \u0412\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043e\u0434\u043d\u0443 \u0442\u0430\u043a\u0443\u044e:<\/p>\n<pre><code class=\"java\">public void testReadSlices() throws IOException {     ....     try (StreamInput input1 = bytesReference.streamInput();          StreamInput input2 = bytesReference.streamInput()) {         for (int i = 0; i &lt; refs; i++) {             boolean sliceLeft = randomBoolean();             BytesReference left = sliceLeft ?                                         input1.readSlicedBytesReference()                                         : input1.readBytesReference();             if (sliceLeft &amp;&amp; bytesReference.hasArray()) {                 assertSame(left.array(), bytesReference.array());  \/\/ &lt;=             }             boolean sliceRight = randomBoolean();             BytesReference right = sliceRight ?                                     input2.readSlicedBytesReference()                                     : input2.readBytesReference();             assertEquals(left, right);             if (sliceRight &amp;&amp; bytesReference.hasArray()) {                 assertSame(right.array(), right.array());  \/\/ &lt;=             }         }     } <\/code><\/pre>\n<p>\u0421\u0440\u0430\u0432\u043d\u0438\u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u043a\u043e\u0434\u0430 \u0441\u043e \u0432\u0442\u043e\u0440\u043e\u0439, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b\u043e\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"java\">assertSame(right.array(), bytesReference.array()); <\/code><\/pre>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043a\u043e\u0434 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>array()<\/code> \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <code>right<\/code>.<\/p>\n<p>\u041f\u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u043c PVS-Studio \u0437\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6009\/\">V6009<\/a> Function &#8216;assertSame&#8217; receives an odd argument. The &#8216;right.array()&#8217; argument was passed several times. <a href=\"http:\/\/AbstractBytesReferenceTestCase.java\">AbstractBytesReferenceTestCase.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/test\/framework\/src\/main\/java\/org\/elasticsearch\/common\/bytes\/AbstractBytesReferenceTestCase.java#L713\"> 713<\/a><\/p>\n<h4>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 equals<\/h4>\n<p>\u041c\u044b \u0443\u0436\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 <code>equals<\/code> \u0438 <code>==<\/code>. \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c <code>equals<\/code> \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435 \u043e\u043a\u0443\u043d\u0451\u043c\u0441\u044f \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u0438 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<pre><code class=\"java\">@Override public boolean equals(Object obj) {     ....     KeyedFilter other = (KeyedFilter) obj;     return Objects.equals(keys, other.keys)         &amp;&amp; Objects.equals(timestamp, other.timestamp)         &amp;&amp; Objects.equals(tiebreaker, other.tiebreaker)         &amp;&amp; Objects.equals(child(), other.child())         &amp;&amp; isMissingEventFilter == isMissingEventFilter; \/\/ &lt;= } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c <code>other<\/code> \u043f\u0435\u0440\u0435\u0434 \u0432\u0442\u043e\u0440\u044b\u043c <code>isMissingEventFilter<\/code>. \u0418\u0437-\u0437\u0430 \u0442\u0430\u043a\u043e\u0439 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>isMissingEventFilter<\/code>.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;isMissingEventFilter&#8217; to the left and to the right of the &#8216;==&#8217; operator. <a href=\"http:\/\/KeyedFilter.java\">KeyedFilter.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/x-pack\/plugin\/eql\/src\/main\/java\/org\/elasticsearch\/xpack\/eql\/plan\/logical\/KeyedFilter.java#L116\"> 116<\/a><\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0451 \u043e\u0434\u043d\u0443 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0443 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>equals<\/code>:<\/p>\n<pre><code class=\"java\">@Override public boolean equals(Object o) {     if (this == o) return true;     if (o == null || getClass() != o.getClass()) return false;     IndexError that = (IndexError) o;     return indexName.equals(that.indexName)         &amp;&amp; Arrays.equals(shardIds, that.shardIds)         &amp;&amp; errorType == that.errorType         &amp;&amp; message.equals(that.message)         &amp;&amp; stallTimeSeconds == stallTimeSeconds;    \/\/ &lt;= } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 <code>equals<\/code>, \u0437\u0434\u0435\u0441\u044c \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e \u0432\u0442\u043e\u0440\u043e\u043c\u0443 <code>stallTimeSeconds<\/code> \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>that<\/code>.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435. \u042d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0435\u043d\u043e\u043c\u0435\u043d \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0451\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 <a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/0260\/\">\u044d\u0442\u043e\u0439<\/a> \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u0432\u044b\u0434\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434: <a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;stallTimeSeconds&#8217; to the left and to the right of the &#8216;==&#8217; operator. <a href=\"http:\/\/IndexError.java\">IndexError.java<\/a><a href=\"https:\/\/github.com\/elastic\/elasticsearch\/blob\/f2628392d1b89b1c96f5c835e70432ce568d5e9f\/test\/external-modules\/error-query\/src\/main\/java\/org\/elasticsearch\/test\/errorquery\/IndexError.java#L147\"> 147<\/a><\/p>\n<h4>\u041b\u044e\u0431\u0438\u0442\u0435 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443? \u0410 \u0432 \u043a\u043e\u0434\u0435?<\/h4>\n<p>\u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438 \u043d\u0430 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u0441\u044c \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0432 \u0442\u0430\u043a\u043e\u043c \u043a\u043e\u0434\u0435 \u043b\u0435\u0433\u043a\u043e \u043e\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c\u0441\u044f. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432:<\/p>\n<pre><code class=\"java\">private static LinearRing parseLinearRing(             ByteBuffer byteBuffer,             boolean hasZ, boolean coerce             ) {     ....     double[] lons = new double[length];     double[] lats = new double[length];     ....     if (linearRingNeedsCoerced(lats, lons, alts, coerce)) { \/\/ &lt;=         lons = coerce(lons);         lats = coerce(lats);         if (hasZ) {             alts = coerce(alts);         }     }     .... } <\/code><\/pre>\n<p>\u041d\u043e \u0447\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0441 \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c? \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f, \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043c\u0435\u0442\u043e\u0434\u0430 <code>linearRingNeedsCoerced<\/code>.<\/p>\n<pre><code class=\"java\">private static boolean linearRingNeedsCoerced(                     double[] lons, double[] lats,                     double[] alts,                     boolean coerce                     ) {     assert lats.length == lons.length                 &amp;&amp; (alts == null || alts.length == lats.length);     assert lats.length &gt; 0;     if (coerce == false) {         return false;     }     final int last = lons.length - 1;     return lons[0] != lons[last]                  || lats[0] != lats[last]                 || (alts != null &amp;&amp; alts[0] != alts[last]); } <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e <code>lons<\/code> \u0438 <code>lats<\/code> \u0431\u044b\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043d\u044b \u043c\u0435\u0441\u0442\u0430\u043c\u0438. \u041f\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c\u0443 \u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044e \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u044d\u0442\u043e\u0442<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-457434","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/457434","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=457434"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/457434\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=457434"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=457434"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=457434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}