{"id":315664,"date":"2020-12-28T15:00:18","date_gmt":"2020-12-28T15:00:18","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=315664"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=315664","title":{"rendered":"\u0422\u043e\u043f 10 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Java \u0437\u0430 2020 \u0433\u043e\u0434"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/dab\/8b6\/1f2\/dab8b61f2cee36142ce1af5b5a56121e.png\" alt=\"image1.png\"><\/div>\n<p>  \u041d\u043e\u0432\u044b\u0439 \u0433\u043e\u0434 \u043d\u0435\u0443\u043c\u043e\u043b\u0438\u043c\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0435\u0442\u0441\u044f \u2014 \u0430, \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0442\u043e\u0433\u0438. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u044e, \u043c\u044b \u043f\u0440\u043e\u0448\u043b\u0438\u0441\u044c \u043f\u043e \u043d\u0430\u0448\u0438\u043c \u0441\u0442\u0430\u0442\u044c\u044f\u043c \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 Java-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438\u0437 \u043c\u0438\u0440\u0430 open-source \u0437\u0430 \u044d\u0442\u043e\u0442 \u0433\u043e\u0434 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0440\u0435\u0439\u0442\u0438\u043d\u0433 10 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a. <br \/>  <a name=\"habracut\"><\/a><br \/>  \u0417\u0430 \u0443\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0433\u043e\u0434 \u043c\u044b (Java-\u043a\u043e\u043c\u0430\u043d\u0434\u0430 PVS-Studio) \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438 \u0432 \u043d\u0430\u0448\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u0437 \u043f\u044f\u0442\u0438 open-source \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u043f\u0440\u043e \u043d\u0430\u0448\u0443 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044e\u044e \u043a\u0443\u0445\u043d\u044e:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.viva64.com\/ru\/b\/0738\/\">\u0410\u041d\u0411, Ghidra \u0438 \u0435\u0434\u0438\u043d\u043e\u0440\u043e\u0433\u0438<\/a><\/li>\n<li><a href=\"https:\/\/www.viva64.com\/ru\/b\/0752\/\">\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c PVS-Studio \u0434\u043b\u044f Java: \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a<\/a><\/li>\n<li><a href=\"https:\/\/www.viva64.com\/ru\/b\/0758\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u0434\u0430 XMage \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0434\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Dragon&#39;s Maze<\/a><\/li>\n<li><a href=\"https:\/\/www.viva64.com\/ru\/b\/0763\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 WildFly \u2014 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 JavaEE \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/a><\/li>\n<li><a href=\"https:\/\/www.viva64.com\/ru\/b\/0775\/\">\u0415\u0434\u0438\u043d\u043e\u0440\u043e\u0433\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u0436\u0435 \u0432\u0430\u0448\u0435\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438: \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u043a\u043e\u0434 Bouncy Castle<\/a><\/li>\n<li><a href=\"https:\/\/www.viva64.com\/ru\/b\/0781\/\">Big\/Bug Data: \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 Apache Flink<\/a><\/li>\n<\/ul>\n<p>  \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u044d\u0442\u0438\u043c\u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0439\u0442\u0438\u043d\u0433, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0441 \u043d\u0430\u0448\u0438\u043c \u0438 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u043d\u0435\u043f\u0440\u0430\u0432\u044b :).<\/p>\n<h2>\u0414\u0435\u0441\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: &quot;\u041e\u0431\u043c\u0430\u043d\u0447\u0438\u0432\u043e\u0435 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e&quot;<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0781\/\">Big\/Bug Data: \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 Apache Flink<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6001\/\">V6001<\/a> There are identical sub-expressions &#39;processedData&#39; to the left and to the right of the &#39;==&#39; operator. CheckpointStatistics.java(229)<\/p>\n<pre><code class=\"java\">@Override public boolean equals(Object o)  {   ....   CheckpointStatistics that = (CheckpointStatistics) o;   return id == that.id &amp;&amp;     savepoint == that.savepoint &amp;&amp;     triggerTimestamp == that.triggerTimestamp &amp;&amp;     latestAckTimestamp == that.latestAckTimestamp &amp;&amp;     stateSize == that.stateSize &amp;&amp;     duration == that.duration &amp;&amp;     alignmentBuffered == that.alignmentBuffered &amp;&amp;     processedData == processedData &amp;&amp;                \/\/ &lt;=     persistedData == that.persistedData &amp;&amp;     numSubtasks == that.numSubtasks &amp;&amp;     numAckSubtasks == that.numAckSubtasks &amp;&amp;     status == that.status &amp;&amp;     Objects.equals(checkpointType, that.checkpointType) &amp;&amp;     Objects.equals(       checkpointStatisticsPerTask,        that.checkpointStatisticsPerTask); }<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0441\u0442\u0430\u044f \u0438 \u043e\u0447\u0435\u043d\u044c \u043e\u0431\u0438\u0434\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438: \u043f\u043e\u043b\u0435 <i>processedData<\/i> \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0441\u0430\u043c\u0438\u043c \u0441\u043e\u0431\u043e\u0439. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0442\u0438\u043f\u0430 <i>CheckpointStatistics<\/i> \u0438\u043d\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u043e\u0436\u043d\u043e\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <i>equals <\/i>\u043a\u0440\u0430\u0439\u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u0445, \u0438 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e, \u043d\u0430 \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0443\u0439\u0434\u0451\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>  \u0425\u043e\u0447\u0443 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u0430\u0442\u044c\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0435 \u0434\u0435\u043b\u043e. \u041c\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 \u0434\u0430\u0436\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e &quot;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0509\/\">\u0417\u043b\u043e \u0436\u0438\u0432\u0435\u0442 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/a>&quot; \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0439.<\/p>\n<h2>\u0414\u0435\u0432\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: &quot;\u041d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u0439 \u043a\u043e\u0434&quot;<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0775\/\">\u0415\u0434\u0438\u043d\u043e\u0440\u043e\u0433\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u0436\u0435 \u0432\u0430\u0448\u0435\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438: \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u043c \u043a\u043e\u0434 Bouncy Castle<\/a>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6019\/\">V6019<\/a> Unreachable code detected. It is possible that an error is present. XMSSTest.java(170)<\/p>\n<pre><code class=\"java\">public void testSignSHA256CompleteEvenHeight2() {     ....     int height = 10;     ....     for (int i = 0; i &lt; (1 &lt;&lt; height); i++) {         byte[] signature = xmss.sign(new byte[1024]);         switch (i) {             case 0x005b:                 assertEquals(signatures[0], Hex.toHexString(signature));                 break;             case 0x0822:                 assertEquals(signatures[1], Hex.toHexString(signature));                 break;             ....         }     } }<\/code><\/pre>\n<p>  \u0412\u0435\u0442\u0432\u044c <i>switch<\/i> \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <i>i == 0x0822(2082) <\/i>\u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u043e\u0439. \u041a\u0430\u043a \u0436\u0435 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c?<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0446\u0438\u043a\u043b\u0430 <i>1 &lt;&lt; height<\/i>, \u0433\u0434\u0435 <i>height<\/i> \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u0435\u043d 10<i>,<\/i> \u0442\u043e \u0432\u0441\u0451 \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0430 \u0441\u0432\u043e\u0438 \u043c\u0435\u0441\u0442\u0430. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044e \u0446\u0438\u043a\u043b\u0430, \u0441\u0447\u0451\u0442\u0447\u0438\u043a <i>i<\/i> \u0432 \u0446\u0438\u043a\u043b\u0435 <i>for<\/i> \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c 1024 (1 &lt;&lt; 10). \u0415\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0432\u0435\u0442\u0432\u0438 <i>switch<\/i> \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442.<\/p>\n<h2>\u0412\u043e\u0441\u044c\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: &quot;\u041f\u0440\u043e\u0430\u043d\u043d\u043e\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434&quot;<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0752\/\">\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c PVS-Studio \u0434\u043b\u044f Java: \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a<\/a>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6009\/\">V6009<\/a> Collection is empty. The call of the &#39;clear&#39; function is senseless. MetricRepositoryRule.java(90)<\/p>\n<pre><code class=\"java\">protected void after() {   this.metricsById.clear();   this.metricsById.clear(); }<\/code><\/pre>\n<p>  \u0427\u0430\u0441\u0442\u044c \u043d\u0430\u0448\u0438\u0445 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0430\u043d\u043d\u043e\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0410\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0443 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u0430\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>\u0427\u0438\u0441\u0442\u044b\u0439 \u043b\u0438 \u044d\u0442\u043e \u043c\u0435\u0442\u043e\u0434,<\/li>\n<li>\u041a\u0430\u043a\u0438\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b,<\/li>\n<li>\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442,<\/li>\n<li>\u2026 \u0438 \u0432\u0441\u044f\u043a\u043e\u0435 \u043f\u0440\u043e\u0447\u0435\u0435. <\/li>\n<\/ul>\n<p>  \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0430\u043c \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u0440\u0443\u0447\u043d\u0443\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438). \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0432 \u043f\u043e\u043b\u043d\u043e\u0439 \u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0430\u043d\u043d\u043e\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043c\u0435\u0442\u043e\u0434 Map#clear. \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438, \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043f\u043e\u0432\u044b\u043b\u0435\u0437\u0430\u043b\u0438 \u043d\u043e\u0432\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b \u0438 \u043d\u0430\u0448 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439.<\/p>\n<p>  \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u2013 \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0430. \u0418 \u043c\u044b \u0431\u044b \u0434\u0430\u0436\u0435 \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043f\u0440\u043e\u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u043b\u044f \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<pre><code class=\"java\">private final Map&lt;String, Metric&gt; metricsByKey = new HashMap&lt;&gt;(); private final Map&lt;Long, Metric&gt; metricsById = new HashMap&lt;&gt;();<\/code><\/pre>\n<p>  \u0423 \u043a\u043b\u0430\u0441\u0441\u0430 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u043e\u043b\u044f \u0441 \u043f\u043e\u0445\u043e\u0436\u0438\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 <i>metricsById<\/i> \u0438 <i>metricsByKey<\/i>. \u042d\u0442\u043e \u0438 \u043d\u0430\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u043c\u044b\u0441\u043b\u044c, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u0445\u043e\u0442\u0435\u043b \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043e\u0431\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044f, \u043d\u043e\u2026 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0434\u0432\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 <i>after<\/i>.<\/p>\n<h2>\u0421\u0435\u0434\u044c\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: &quot;\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \/ \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c&quot;<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0763\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 WildFly \u2014 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 JavaEE \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/a>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6058\/\">V6058<\/a> The &#39;equals&#39; function compares objects of incompatible types: String, ModelNode. JaxrsIntegrationProcessor.java(563)<\/p>\n<pre><code class=\"java\">\/\/ Send value to RESTEasy only if it&#39;s not null, empty string, or the  \/\/ default value. private boolean isTransmittable(AttributeDefinition attribute,                                 ModelNode modelNode) {   if (modelNode == null || ModelType       .UNDEFINED.equals(modelNode.getType())) {     return false;   }   String value = modelNode.asString();   if (&quot;&quot;.equals(value.trim())) {     return false;   }   return !value.equals(attribute.getDefaultValue());        \/\/ &lt;= }<\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0442\u0438\u0432 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434\u0443 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u043c\u043e\u0436\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u0432\u0435\u0440\u043d\u0435\u0442 <i>true,<\/i> \u0435\u0441\u043b\u0438:<\/p>\n<ul>\n<li><i>modelNode <\/i>\u043d\u0435 <i>null,<\/i><\/li>\n<li>\u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <i>modelNode<\/i> \u043d\u0435 \u043f\u0443\u0441\u0442\u043e\u0435,<\/li>\n<li><i>modelNode <\/i>\u2013 \u043d\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/li>\n<\/ul>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0439 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0443\u044e, \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043b\u043e\u0433\u0438\u043a\u0443, \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f. \u041f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u044d\u0442\u043e\u043c\u0443 \u0441\u043b\u0443\u0436\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <i>modelNode<\/i> \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u043c\u0435\u0442\u043e\u0434\u0430.<\/p>\n<p>  \u0421\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 <i>modelNode<\/i> \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0442\u0438\u043f\u0430 <i>ModelNode<\/i>, \u0438, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0433\u0430\u0434\u0430\u0442\u044c\u0441\u044f, \u0442\u0430\u043a\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u0438\u043f\u043e\u0432.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u043e\u0448\u0438\u0431\u043a\u0438: \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043a \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <i>modelNode,<\/i> \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u043e \u0440\u0430\u0432\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (<i>attribute.getDefaultValue()<\/i>).<\/p>\n<h2>\u0428\u0435\u0441\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: &quot;\u041a\u043e\u043f\u0438\u043f\u0430\u0441\u0442-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435&quot;<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0758\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u0434\u0430 XMage \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0434\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Dragon&#39;s Maze<\/a>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6072\/\">V6072<\/a> Two similar code fragments were found. Perhaps, this is a typo and &#39;playerB&#39; variable should be used instead of &#39;playerA&#39;. SubTypeChangingEffectsTest.java(162), SubTypeChangingEffectsTest.java(158), SubTypeChangingEffectsTest.java(156), SubTypeChangingEffectsTest.java(160)<\/p>\n<pre><code class=\"java\">@Test public void testArcaneAdaptationGiveType() {     addCard(Zone.HAND, playerA, &quot;Arcane Adaptation&quot;, 1);     addCard(Zone.BATTLEFIELD, playerA, &quot;Island&quot;, 3);      addCard(Zone.HAND, playerA, &quot;Silvercoat Lion&quot;);     addCard(Zone.BATTLEFIELD, playerA, &quot;Silvercoat Lion&quot;);     addCard(Zone.GRAVEYARD, playerA, &quot;Silvercoat Lion&quot;);   \/\/ &lt;=      addCard(Zone.HAND, playerB, &quot;Silvercoat Lion&quot;);     addCard(Zone.BATTLEFIELD, playerB, &quot;Silvercoat Lion&quot;);     addCard(Zone.GRAVEYARD, playerA, &quot;Silvercoat Lion&quot;);   \/\/ &lt;=      ....      for (Card card : playerB.getGraveyard().getCards(currentGame)) {         if (card.isCreature()) {             Assert.assertEquals(card.getName() + &quot; should not have ORC type&quot;,                     false, card.getSubtype(currentGame).contains(SubType.ORC));             Assert.assertEquals(card.getName() + &quot; should have CAT type&quot;,                     true, card.getSubtype(currentGame).contains(SubType.CAT));         }     } }<\/code><\/pre>\n<p>  \u0412 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443, \u043a\u0430\u043a \u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c (<a href=\"https:\/\/www.viva64.com\/ru\/b\/0699\/\">\u0422\u043e\u043f 10 \u043e\u0448\u0438\u0431\u043e\u043a \u0437\u0430 2019<\/a>), \u043a\u043b\u0430\u0441\u0441\u043d\u0430\u044f copy-paste \u043e\u0448\u0438\u0431\u043a\u0430 \u043e\u0442 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430 V6072 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0435.<\/p>\n<p>  \u0425\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u043e\u0448\u0438\u0431\u043a\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0445\u043e\u0436\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u0442\u043e \u043e\u043d \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0434\u043e\u0431\u0440\u043e\u0441\u043e\u0432\u0435\u0441\u0442\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u043d\u0435\u0435 \u043a\u043e\u0434 \u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u041d\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u043e\u0431\u0440\u043e\u0441\u043e\u0432\u0435\u0441\u0442\u043d\u043e \u0438 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442 \u0434\u043e\u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435. <\/p>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043a\u043e\u0434\u0430 \u0442\u0430\u043a \u0438 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e. \u0410\u0432\u0442\u043e\u0440 \u0442\u0435\u0441\u0442\u0430 \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0438\u0433\u0440\u0443 \u043c\u0435\u0436\u0434\u0443 \u0438\u0433\u0440\u043e\u043a\u0430\u043c\u0438, \u0440\u0430\u0441\u043a\u0438\u0434\u044b\u0432\u0430\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435 \u043a\u0430\u0440\u0442\u044b \u043f\u043e \u0438\u0433\u0440\u043e\u0432\u044b\u043c \u0437\u043e\u043d\u0430\u043c, \u043d\u043e \u0438\u0437-\u0437\u0430 copy-paste \u0438\u0433\u0440\u043e\u043a\u0443 <i>playerA<\/i> \u0434\u0432\u0430\u0436\u0434\u044b \u0434\u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u043a\u0430\u0440\u0442\u0430. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u0432\u0430\u044f \u0437\u043e\u043d\u0430 <i>Zone.GRAVEYARD<\/i> \u0438\u0433\u0440\u043e\u043a\u0430 <i>playerB<\/i> \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0431\u0435\u0437 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u0441\u0430\u043c\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<h2>\u041f\u044f\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: &quot;\u041d\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435&quot;<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0781\/\">Big\/Bug Data: \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 Apache Flink<\/a><\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6048\/\">V6048<\/a> This expression can be simplified. Operand &#39;index&#39; in the operation equals 0. CollectionUtil.java(76)<\/p>\n<pre><code class=\"java\">public static &lt;T&gt;  Collection&lt;List&lt;T&gt;&gt; partition(Collection&lt;T&gt; elements, int numBuckets)  {   Map&lt;Integer, List&lt;T&gt;&gt; buckets = new HashMap&lt;&gt;(numBuckets);      int initialCapacity = elements.size() \/ numBuckets;    int index = 0;   for (T element : elements)    {     int bucket = index % numBuckets;                                 \/\/ &lt;=     buckets.computeIfAbsent(bucket,                              key -&gt; new ArrayList&lt;&gt;(initialCapacity))             .add(element);    }    return buckets.values(); }<\/code><\/pre>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u0432 \u0443\u0442\u0438\u043b\u0438\u0442\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 <i>partition<\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e <i>elements <\/i>\u043d\u0430 <i>numBuckets<\/i> \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439. \u0421\u0443\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 <i>bucket<\/i>, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0445\u043e\u0442\u044f\u0442 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u0438\u043c\u0435\u0435\u0442 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 (0). \u041f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u044d\u0442\u043e\u043c\u0443 \u0441\u043b\u0443\u0436\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0437\u0430\u0431\u044b\u043b \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <i>index<\/i> \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0446\u0438\u043a\u043b\u0430.<\/p>\n<p>  \u0412\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0447\u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434 <i>partition<\/i> \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e <i>elements<\/i>, \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u0443\u044e \u0432 \u0434\u0440\u0443\u0433\u0443\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e. \u0410 \u044d\u0442\u043e \u2013 \u0432\u0440\u044f\u0434 \u043b\u0438 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435.<\/p>\n<h2>\u0427\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: &quot;\u0411\u043e\u043c\u0431\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f&quot;<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0738\/\">\u0410\u041d\u0411, Ghidra \u0438 \u0435\u0434\u0438\u043d\u043e\u0440\u043e\u0433\u0438<\/a>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6008\/\">V6008<\/a> Null dereference of &#39;selectedNode&#39; in function &#39;setViewPanel&#39;. OptionsPanel.java(266)<\/p>\n<pre><code class=\"java\"> private void processSelection(OptionsTreeNode selectedNode) {   if (selectedNode == null) {     setViewPanel(defaultPanel, selectedNode); \/\/ &lt;=     return;   }   .... } private void setViewPanel(JComponent component, OptionsTreeNode selectedNode) {   ....   setHelpLocation(component, selectedNode);   .... } private void setHelpLocation(JComponent component, OptionsTreeNode node) {   Options options = node.getOptions();   .... }<\/code><\/pre>\n<p>  \u0412 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043a\u043e\u0434\u0430 \u044f\u0432\u043d\u043e \u043d\u0430\u043f\u043e\u0440\u0442\u0430\u0447\u0438\u043b\u0438. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 <i>selectedNode<\/i> \u0438\u0437 <i>processSelection()<\/i>, \u043a\u043e\u0433\u0434\u0430<i> selectedNode == null<\/i>, \u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u0435, \u0447\u0442\u043e \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0438\u0441\u0445\u043e\u0434\u0435 \u043d\u0430\u0441 \u0436\u0434\u0435\u0442 \u043d\u0435\u043c\u0438\u043d\u0443\u0435\u043c\u044b\u0439 <i>NullPointerException<\/i>. \u041e \u0447\u0435\u043c \u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043d\u0430\u0441 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440. <\/p>\n<p>  \u041d\u043e, \u0438\u0437\u0443\u0447\u0438\u0432 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u043e\u0434, \u0430\u0432\u0442\u043e\u0440 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u0438\u0448\u0435\u043b \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u0441\u044f \u0441 <i>NullPointerException,<\/i> \u0442\u0430\u043a \u043a\u0430\u043a <i>processSelection<\/i>() \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u043e \u0432 \u0434\u0432\u0443\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u044b\u0445 <i>selectedNode<\/i> \u044f\u0432\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u043d\u0430 <i>null.<\/i><\/p>\n<p>  \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u044d\u0442\u043e, \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u2013 \u0431\u043e\u043c\u0431\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 \u044f\u0432\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0439 <i>selectedNode == null<\/i>, \u0438 \u0440\u0435\u0448\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u043b\u044c\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<h2>\u0422\u0440\u0435\u0442\u044c\u0435 \u043c\u0435\u0441\u0442\u043e: &quot;\u0412\u0441\u0435\u0433\u0434\u0430 false&quot;<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0758\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u0434\u0430 XMage \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0434\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 Dragon&#39;s Maze<\/a>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6007\/\">V6007<\/a> Expression &#39;filter.getMessage().toLowerCase(Locale.ENGLISH).startsWith(&quot;Each &quot;)&#39; is always false. SetPowerToughnessAllEffect.java(107)<\/p>\n<pre><code class=\"java\">@Override public String getText(Mode mode) {   StringBuilder sb = new StringBuilder();   ....   if (filter.getMessage().toLowerCase(Locale.ENGLISH).startsWith(&quot;Each &quot;)) {     sb.append(&quot; has base power and toughness &quot;);   } else {     sb.append(&quot; have base power and toughness &quot;);   }   ....   return sb.toString(); }<\/code><\/pre>\n<p>  \u041a\u0442\u043e \u0436\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u0443\u044e \u0432 \u043d\u0438\u0436\u043d\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440, \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b? \u041e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043b\u043e\u0436\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u0435\u0444\u0435\u043a\u0442\u0430 \u043d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439, \u043d\u043e \u0442\u043e\u0436\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0439: \u0433\u0434\u0435-\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442.<\/p>\n<h2>\u0412\u0442\u043e\u0440\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: &quot;2-\u0432-1&quot;<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0738\/\">\u0410\u041d\u0411, Ghidra \u0438 \u0435\u0434\u0438\u043d\u043e\u0440\u043e\u0433\u0438<\/a>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6007\/\">V6007<\/a> Expression &#39;index &gt;= 0&#39; is always true. ExternalNamesTableModel.java(105)<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6019\/\">V6019<\/a> Unreachable code detected. It is possible that an error is present. ExternalNamesTableModel.java(109)<\/p>\n<pre><code class=\"java\">public void setValueAt(Object aValue, int row, int column) {   ....   int index = indexOf(newName);   if (index &gt;= 0) {                  \/\/ &lt;=     Window window = tool.getActiveWindow();     Msg.showInfo(getClass(), window, &quot;Duplicate Name&quot;,                  &quot;Name already exists: &quot; + newName);     return;   }    ExternalPath path = paths.get(row); \/\/ &lt;=   .... }  private int indexOf(String name) {   for (int i = 0; i &lt; paths.size(); i++) {     ExternalPath path = paths.get(i);     if (path.getName().equals(name)) {       return i;     }   }   return 0; }<\/code><\/pre>\n<p>  \u041c\u0435\u0442\u043e\u0434 <i>indexOf<\/i> \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. \u0410 \u0432\u0441\u0451 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0438\u0441\u043a\u043e\u043c\u043e\u0433\u043e <i>newName<\/i> \u043f\u043e \u043e\u0448\u0438\u0431\u043a\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 0, \u0430 \u043d\u0435 -1. \u0422\u0430\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0432 then-\u0432\u0435\u0442\u043a\u0443 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <i>if (index &gt;= 0)<\/i>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c <i>newName<\/i> \u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430, \u0434\u0430\u0436\u0435 \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 <i>newName <\/i>\u043d\u0435 \u0431\u044b\u043b \u043d\u0430\u0439\u0434\u0435\u043d.<\/p>\n<p>  \u041d\u043e \u0438 \u044d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451. \u0422\u0430\u043a \u043a\u0430\u043a then-\u0432\u0435\u0442\u043a\u0430 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u0430, \u0442\u043e \u0434\u043e \u043a\u043e\u0434\u0430 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0434\u0435\u043b\u043e \u0442\u0430\u043a \u0438 \u043d\u0435 \u0434\u043e\u0439\u0434\u0435\u0442.<\/p>\n<p>  \u041e\u0431 \u044d\u0442\u043e\u043c \u0438 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442 \u043d\u0430\u0441 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440. <\/p>\n<h2>\u041f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e: &quot;\u0410 \u0442\u043e \u043b\u0438 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438?&quot;<\/h2>\n<p>  \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a href=\"https:\/\/www.viva64.com\/ru\/b\/0752\/\">\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c PVS-Studio \u0434\u043b\u044f Java: \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a<\/a>.<\/p>\n<p>  <a href=\"https:\/\/www.viva64.com\/ru\/w\/v6080\/\">V6080<\/a> Consider checking for misprints. It&#39;s possible that an assigned variable should be checked in the next condition. Menu.java(40)<\/p>\n<pre><code class=\"java\">public class Menu {   private Map&lt;String, List&lt;String&gt;&gt; menus = new HashMap&lt;String, List&lt;String&gt;&gt;();    public void putMenuItem(String menu, String item)   {     List&lt;String&gt; items = menus.get(menu);     if (item == null)                      \/\/ &lt;=     {       items = new ArrayList&lt;String&gt;();       menus.put(menu, items);     }     items.add(item);   }   .... }<\/code><\/pre>\n<p>  \u041f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043f\u043e \u043a\u043b\u044e\u0447\u0443 <i>menu<\/i>, \u0435\u0441\u043b\u0438 \u0442\u0430\u043a\u043e\u0432\u043e\u0439 \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435 \u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0443\u0448\u0438\u043b\u0430 \u0432\u0441\u044e \u0437\u0430\u0434\u0443\u043c\u043a\u0443, \u043f\u0440\u043e\u0440\u0443\u0431\u0438\u0432 \u043b\u0430\u0437\u0435\u0435\u0447\u043a\u0443 \u0434\u043b\u044f <i>NullPointerException.<\/i> \u041c\u0435\u0442\u043e\u0434 \u0432\u044b\u0431\u0440\u043e\u0441\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u0435 \u043a\u043b\u044e\u0447 <i>menu<\/i> \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c, \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <i>item<\/i>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0445\u043e\u0442\u0435\u043b\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 <i>null<\/i>.<\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 open-source \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio \u0438\u0437 \u0433\u043e\u0434\u0430 \u0432 \u0433\u043e\u0434 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0439 \u0440\u0443\u0431\u0435\u0436 \u0437\u0430\u0449\u0438\u0442\u044b, \u043a\u0430\u043a \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043a\u043e\u0434\u0430, \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u041a\u0430\u043a\u0438\u043c \u0431\u044b \u0432\u044b \u043c\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u0435\u043b\u0430 \u043d\u0438 \u0431\u044b\u043b\u0438, \u043e\u0448\u0438\u0431\u043a\u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u0439\u0434\u0443\u0442 \u043b\u0430\u0437\u0435\u0435\u0447\u043a\u0443 \u0432 \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442, \u0438 \u043f\u0440\u0438\u0447\u0438\u043d \u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e: \u0443\u0441\u0442\u0430\u043b\u0438, \u0437\u0430\u0432\u0430\u043b \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0435 \u0438\u043b\u0438 \u0432\u043e\u0432\u0441\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u043b\u0438\u0441\u044c \u043d\u0430 \u043a\u043e\u0442\u0438\u043a\u043e\u0432. \u0410 \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0430\u043c \u0432 \u043a\u043e\u0434 \u0432\u044b\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043a\u043e\u043b\u043b\u0435\u0433.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u043d\u0430\u0448 \u043e\u0431\u0437\u043e\u0440, \u0442\u043e \u043d\u0435 \u0436\u0434\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043d\u0446\u0430 \u0433\u043e\u0434\u0430. \u0421\u0442\u0430\u0442\u044c\u0438 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 \u043d\u0430\u0447\u043d\u0443\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0435\u0441\u044f\u0446\u0430 2021, \u0430 \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435 \u0442\u0435\u0440\u043f\u0438\u0442\u0441\u044f \u2013 \u0441\u043c\u0435\u043b\u0435\u0435 <a href=\"https:\/\/www.viva64.com\/ru\/pvs-studio-download\/\">\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0439\u0442\u0435<\/a> \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435 open-source \u043f\u0440\u043e\u0435\u043a\u0442\u044b. <\/p>\n<p>  <a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/535376\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/d5\/1k\/2e\/d51k2edrgxyrg5voswox_46pg3o.png\"><\/div>\n<p><\/a><br \/>  \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: Maxim Stefanov. <a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/535376\/\">Top-10 Bugs in Java Projects in 2020<\/a>.<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/535380\/\"> https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/535380\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/dab\/8b6\/1f2\/dab8b61f2cee36142ce1af5b5a56121e.png\" alt=\"image1.png\"><\/div>\n<p>  \u041d\u043e\u0432\u044b\u0439 \u0433\u043e\u0434 \u043d\u0435\u0443\u043c\u043e\u043b\u0438\u043c\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0435\u0442\u0441\u044f \u2014 \u0430, \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0432\u043e\u0434\u0438\u0442\u044c \u0438\u0442\u043e\u0433\u0438. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044f \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u044e, \u043c\u044b \u043f\u0440\u043e\u0448\u043b\u0438\u0441\u044c \u043f\u043e \u043d\u0430\u0448\u0438\u043c \u0441\u0442\u0430\u0442\u044c\u044f\u043c \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 Java-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438\u0437 \u043c\u0438\u0440\u0430 open-source \u0437\u0430 \u044d\u0442\u043e\u0442 \u0433\u043e\u0434 \u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0440\u0435\u0439\u0442\u0438\u043d\u0433 10 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a.   <\/p>\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-315664","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/315664","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=315664"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/315664\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=315664"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=315664"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=315664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}