{"id":374114,"date":"2024-05-21T05:52:26","date_gmt":"2024-05-21T05:52:26","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=374114"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=374114","title":{"rendered":"<span>21 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 21-\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 Apache NetBeans<\/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>Apache NetBeans \u2014 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 IDE \u0434\u043b\u044f Java, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u0447\u0442\u0438 30 \u043b\u0435\u0442. \u0421\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u043b\u0430 21-\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a\u043e\u0433\u043e \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0442\u0435\u043b\u044f \u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/26f\/2b4\/518\/26f2b45186d5b0d258a48728e9ff449f.png\" width=\"1600\" height=\"902\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/26f\/2b4\/518\/26f2b45186d5b0d258a48728e9ff449f.png\"\/><\/figure>\n<h3>\u041a\u0430\u043a \u0438 \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c?<\/h3>\n<p>\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0444\u0430\u0439\u043b\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0432\u044b\u0434\u0430\u0451\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u2014 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0445 \u043a\u043e\u0434\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f PVS-Studio, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0441 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e code review. \u041a \u0442\u0430\u043a\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c, \u043d\u0435\u0441\u043e\u043c\u043d\u0435\u043d\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 open-source IDE Apache NetBeans \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 Java, \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0432 \u0434\u0430\u043b\u0451\u043a\u043e\u043c 1997 \u0433\u043e\u0434\u0443. \u0410 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u043b\u0430 21-\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u044d\u0442\u043e\u0439 IDE.<\/p>\n<p>\u0412 \u0447\u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 <a href=\"https:\/\/github.com\/apache\/netbeans\/tree\/21?tab=readme-ov-file\">Apache NetBeans<\/a> \u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c 21 \u043e\u0448\u0438\u0431\u043a\u0443, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u0432 \u0435\u0451 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio. \u0412\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043a\u043e\u0434\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0435 \u0442\u0430\u043a.<\/p>\n<h3>\u041a\u043e\u043f\u0438\u0440\u0443\u0439, \u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439<\/h3>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043e\u0448\u0438\u0431\u043e\u043a copy-paste. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043e\u043d \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<pre><code class=\"java\">private void refresh(Node[] newSelection) {   ....   if(entry1 != null &amp;&amp; entry2 != null &amp;&amp; file1 != null &amp;&amp; file2 != null) {     if(entry1.getDateTime().getTime() > entry1.getDateTime().getTime()) {       refreshRevisionDiffPanel(entry1, entry2, file1, file2);     } else {       refreshRevisionDiffPanel(entry2, entry1, file2, file1);     }     return;   }   .... }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e <em>if<\/em>, \u0432 \u043d\u0435\u043c \u0438\u0434\u0451\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439:<\/p>\n<pre><code class=\"java\">entry1.getDateTime().getTime() > entry1.getDateTime().getTime().<\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\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 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;entry1.getDateTime().getTime()&#8217; to the left and to the right of the &#8216;>&#8217; operator. HistoryDiffView.java(130)<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u043e\u0445\u043e\u0436\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430:<\/p>\n<pre><code class=\"java\">private RevisionInterval getResortedRevisionInterval(SVNRevision revision1,                                                       SVNRevision revision2) {   RevisionInterval ret;    if(revision1.equals(SVNRevision.HEAD) &amp;&amp;       revision1.equals(SVNRevision.HEAD)) {     ....   }   return ret; }<\/code><\/pre>\n<p>\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0437\u0434\u0435\u0441\u044c \u043c\u0435\u0442\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 SVN \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0440\u0435\u0432\u0438\u0437\u0438\u044f\u043c\u0438: <em>revision1<\/em> \u0438 <em>revision2<\/em>. \u041f\u0440\u0438\u0447\u0451\u043c \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0435\u0432\u0438\u0437\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 (<em>SVNRevision.HEAD<\/em>). \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043b \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u043e\u0438\u0445 \u0440\u0435\u0432\u0438\u0437\u0438\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0443\u044e.<\/p>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;revision1.equals(SVNRevision.HEAD)&#8217; to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. RevertModifications.java(387), RevertModifications.java(387)<\/p>\n<p>\u0418\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<pre><code class=\"java\">public boolean paintDragFeedback(....) {   ....   if (x1 >= x2) {     x1 = contInsets.left;     x2 = contSize.width - contInsets.right;     if (x1 >= x2) return true; \/\/ container is too small   }   if (y1 >= y2) {     y1 = contInsets.top;     x2 = contSize.height - contInsets.bottom;                \/\/ &lt;=     if (y1 >= y2) return true; \/\/ container is too small   }   .... }<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043f\u043e\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u043d\u0430 \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 <em>if<\/em>: \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 <em>x<\/em>, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 <em>y<\/em>. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c <em>x2<\/em> \u043d\u0430 <em>y2<\/em>. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043d\u0435\u0432\u0435\u0440\u043d\u043e. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\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:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6080\/\">V6080<\/a> Consider checking for misprints. It&#8217;s possible that an assigned variable should be checked in the next condition. BorderLayoutSupport.java(264), BorderLayoutSupport.java(263)<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u0435.<\/p>\n<pre><code class=\"java\">public void preferenceChange(PreferenceChangeEvent evt) {   String k = evt == null ? null : evt.getKey();     ....   try {     if (k == null || k.equals(FoldUtilitiesImpl.PREF_OVERRIDE_DEFAULTS)) {      ....     }     if (k == null || k.equals(SimpleValueNames.CODE_FOLDING_ENABLE)) {      ....     }      if (k == null || FoldUtilitiesImpl.PREF_CONTENT_PREVIEW.equals                               (FoldUtilitiesImpl.PREF_CONTENT_PREVIEW)) {       ....     }     if (k == null || FoldUtilitiesImpl.PREF_CONTENT_SUMMARY.equals                               (FoldUtilitiesImpl.PREF_CONTENT_SUMMARY)) {       ....     }      ....   }    .... }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043a\u043e\u0434\u0430 \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0430\u0445 <em>if<\/em> \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 <em>FoldUtilitiesImpl.PREF_CONTENT_PREVIEW<\/em> \u0438 <em>FoldUtilitiesImpl<\/em>.<em>PREF_CONTENT_SUMMARY<\/em> \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442 \u0441 \u0441\u0430\u043c\u0438\u043c\u0438 \u0441\u043e\u0431\u043e\u0439, \u0430 \u043d\u0435 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 <em>k<\/em>. \u0417\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u044d\u0442\u0438\u0445 \u0431\u043b\u043e\u043a\u0430\u0445, \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430, \u0434\u0430\u0436\u0435 \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u044d\u0442\u0438 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \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\/v6007\/\">V6007<\/a> Expression &#8216;FoldUtilitiesImpl.PREF_CONTENT_PREVIEW.equals(FoldUtilitiesImpl.PREF_CONTENT_PREVIEW)&#8217; is always true. FoldOptionsPanel.java(177)<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;FoldUtilitiesImpl.PREF_CONTENT_SUMMARY.equals(FoldUtilitiesImpl.PREF_CONTENT_SUMMARY)&#8217; is always true. FoldOptionsPanel.java(180)<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u0435.<\/p>\n<pre><code class=\"java\">static void createJfxExtension(Project p, FileObject dirFO,                                 WizardType type) throws IOException {   FileObject templateFO = FileUtil.getConfigFile(\"Templates\/JFX\/jfx-impl.xml\");    if (templateFO != null) {     ....     if (type == JavaFXProjectWizardIterator.WizardType.SWING) {       ....       FileObject swingTemplateFO1 = FileUtil.getConfigFile(....);        if (swingTemplateFO1 != null) {         FileUtil.copyFile(swingTemplateFO1,                            templatesFO, \"FXSwingTemplate\");        }       FileObjectswingTemplateFO2=FileUtil.getConfigFile(....);        if (swingTemplateFO1 != null) {         FileUtil.copyFile(swingTemplateFO2,                            templatesFO, \"FXSwingTemplateApplet\");        }       FileObject swingTemplateFO3 = FileUtil.getConfigFile(....); \/\/ NOI18N       if (swingTemplateFO1 != null) {         FileUtil.copyFile(swingTemplateFO3,                            templatesFO,\"FXSwingTemplateApplication\");        }     }     JFXProjectUtils.addExtension(p);   } }<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0442\u0440\u0451\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441 \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u043e\u0434\u0438\u043d. \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0441\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e: \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043e\u0442\u043a\u0440\u044b\u0442. \u041d\u043e \u0432\u043e\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0442\u043e\u043b\u044c\u043a\u043e <em>swingTemplateF01<\/em>. \u041e\u0448\u0438\u0431\u043a\u0430 \u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438, \u0435\u0441\u043b\u0438 <em>swingTemplateF02<\/em> \u0438\u043b\u0438 <em>swingTemplateF03<\/em> \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c.<\/p>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6080\/\">V6080<\/a> Consider checking for misprints. It&#8217;s possible that an assigned variable should be checked in the next condition. JFXProjectUtils.java(768), JFXProjectUtils.java(769)<\/p>\n<p>\u042d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451.<\/p>\n<pre><code class=\"java\">public Object getElementAt(int index) {   ....   int myMinIndex = getExternal (minIndex) + 1;    \/\/ one after the index of the first non-1 index   int myMaxIndex = getExternal (maxIndex);    assert myMaxIndex >= myMaxIndex : \"Must be greater\"; \/\/ NOI18N   .... }<\/code><\/pre>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u044b \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u043e \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u0432 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <em>myMaxIndex >= myMaxIndex<\/em>, \u0445\u043e\u0442\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c <em>myMaxIndex >= myMinIndex<\/em>.<\/p>\n<p>\u042d\u0442\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0422\u0430\u043a \u043a\u0430\u043a \u0432 <em>assert<\/em> \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0431\u043b\u0430\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043b\u043e\u0433\u0438\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 <em>myMaxIndex \u043c\u0435\u043d\u044c\u0448\u0435 myMinIndex.<\/em> \u0415\u0441\u043b\u0438 \u0431\u044b \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u044d\u0442\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0431\u044b \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;myMaxIndex&#8217; to the left and to the right of the &#8216;>=&#8217; operator. FilteredListModel.java(319)<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0443.<\/p>\n<pre><code class=\"java\">private void mergeParallelInclusions(List&lt;IncludeDesc> inclusions,                                       IncludeDesc original,                                      boolean preserveOriginal) {   IncludeDesc best = null;    ....   \/\/ 2nd remove incompatible inclusions, move compatible ones to same level   for (Iterator it=inclusions.iterator(); it.hasNext(); ) {     IncludeDesc iDesc = (IncludeDesc) it.next();     if (iDesc != best) {       if (!compatibleInclusions(iDesc, best, dimension)) {         it.remove();       } else if (iDesc.parent == best.parent &amp;&amp;                   iDesc.neighbor == best.neighbor &amp;&amp;                  (iDesc.neighbor != null || iDesc.index == iDesc.index)) {  \/\/ &lt;=         it.remove(); \/\/ same inclusion twice (detect for better robustness)       }       ....     }     ....   }   ....   if (unifyGaps != null) {     \/\/ unify resizability of the border gaps collected for individual inclusions     for (LayoutInterval[] gaps : unifyGaps) {       int preferredFixedSide =                           fixedSideGaps[LEADING] >= fixedSideGaps[TRAILING] ?                                                     LEADING : TRAILING;       for (int i=LEADING; i &lt;= TRAILING; i++) {         if (LayoutInterval.canResize(gaps[i]) &amp;&amp; !anyResizingNeighbor[i]             &amp;&amp; (anyResizingNeighbor[i^1] || preferredFixedSide == i)) {           operations.setIntervalResizing(gaps[i], false);           if (!LayoutInterval.canResize(gaps[i^1])) {             operations.setIntervalResizing(gaps[i^i], true);       \/\/ &lt;=           }           break;         }       }     }   } }<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043f\u043e\u0447\u0442\u0438 \u0432 1500 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0442\u0430\u043a\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0449\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u044b \u0441\u0440\u0430\u0437\u0443.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0412\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u043b\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <em>iDesk<\/em> \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c <em>best<\/em>. \u0412 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043e\u0448\u0438\u0431\u0441\u044f \u0438 \u0432\u043c\u0435\u0441\u0442\u043e <em>iDesc.index == best.index<\/em> \u043d\u0430\u043f\u0438\u0441\u0430\u043b <em>iDesc.index == iDesc.index<\/em>.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0438\u0437 \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 <em>if (!LayoutInterval.canResize(gaps[i^1]))<\/em>. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 <em>gaps<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0418\u041b\u0418 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c <em>i<\/em>. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0439 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0430: <em>operations.setIntervalResizing(gaps[<\/em><strong><em>i^i<\/em><\/strong><em>], true)<\/em>. \u0417\u0434\u0435\u0441\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0435\u0435 \u0418\u041b\u0418 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c: \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u0435\u043d \u043d\u0443\u043b\u044e. \u041b\u043e\u0433\u0438\u0447\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u043e\u043b\u044c, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e.<\/p>\n<p>\u0421\u043e\u043e\u0431\u0449\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\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;iDesc.index&#8217; to the left and to the right of the &#8216;==&#8217; operator. LayoutFeeder.java(3660)<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;i&#8217; to the left and to the right of the &#8216;^&#8217; operator. LayoutFeeder.java(3897)<\/p>\n<h3>\u041a\u043e\u0433\u0434\u0430 \u043b\u0435\u043d\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b \u0441 \u043d\u0443\u043b\u044f<\/h3>\n<p>\u0412\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0431\u044b\u043b\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 copy-paste \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0436\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0445 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0443\u0436\u0435 \u0446\u0435\u043b\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b!<\/p>\n<pre><code class=\"java\">public final class EditorMimeTypesImpl               implements EditorMimeTypesImplementation {    private final PropertyChangeSupport listeners;    @Override   public void addPropertyChangeListener(@NonNull final                                      PropertyChangeListener listener) {     Parameters.notNull(\"listener\", listener);   \/\/NOI18N     listeners.addPropertyChangeListener(listener);   }    @Override   public void removePropertyChangeListener(@NonNull final                                      PropertyChangeListener listener) {     Parameters.notNull(\"listener\", listener);   \/\/NOI18N     listeners.addPropertyChangeListener(listener);   } }<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0438 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430. \u041e\u043d\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c <em>listeners<\/em>, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f. \u041f\u0435\u0440\u0432\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f. \u041d\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 <em>removePropertyChangeListener<\/em> \u0442\u0435\u043b\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u043c\u0435\u0442\u043e\u0434 <em>addPropertyChangeListener<\/em>. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 \u044d\u0442\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6032\/\">V6032<\/a> It is odd that the body of method &#8216;addPropertyChangeListener&#8217; is fully equivalent to the body of another method &#8216;removePropertyChangeListener&#8217;. EditorMimeTypesImpl.java(63), EditorMimeTypesImpl.java(69)<\/p>\n<p>\u0418 \u044d\u0442\u043e \u043d\u0435 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439:<\/p>\n<pre><code class=\"java\">public class MethodParamsTipPaintComponent extends JToolTip {   protected int getWidth(String s, Font font) {     if (font == null) return fontMetrics.stringWidth(s);       return getFontMetrics(font).stringWidth(s);   }    protected int getHeight(String s, Font font) {     if (font == null) return fontMetrics.stringWidth(s);       return getFontMetrics(font).stringWidth(s);   } }<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430, \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0412 \u043c\u0435\u0442\u043e\u0434\u0435 <em>getHeight<\/em> \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e \u0436\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0447\u0442\u043e \u0438 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <em>getWeight<\/em>.<\/p>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6032\/\">V6032<\/a> It is odd that the body of method &#8216;getWidth&#8217; is fully equivalent to the body of another method &#8216;getHeight&#8217;. MethodParamsTipPaintComponent.java(121), MethodParamsTipPaintComponent.java(126)<\/p>\n<h3>\u0421\u0442\u0440\u0435\u043b\u044f\u0435\u043c \u0432 \u043d\u043e\u0433\u0443 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439<\/h3>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u044b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u044b \u0438 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0442\u0438\u043f\u0443 \u043e\u0448\u0438\u0431\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438.<\/p>\n<p>\u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0441\u0441\u044b\u043b\u043a\u0435 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442 \u0435\u0451 \u043d\u0430 <em>null<\/em>. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f:<\/p>\n<pre><code class=\"java\">public void setAllData(String key, String[] data) {   ....   \/\/ remove superfluous data   if (getEntryCount() > data.length\/3) {     for (int j=0; j &lt; getEntryCount(); j++) {       PropertiesFileEntry pfe = getNthEntry(j);       PropertiesStructure ps = pfe.getHandler().getStructure();       if (pfe == null || ps == null) continue;       ....     }   } }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u043e\u0431\u044a\u0435\u043a\u0442 <em>pfe<\/em>, \u0432\u044b\u0437\u0432\u0430\u043d \u0435\u0433\u043e \u043c\u0435\u0442\u043e\u0434, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 <em>null<\/em>.<\/p>\n<p>\u0412\u043e\u0442 \u0447\u0442\u043e \u0432\u044b\u0434\u0430\u043b \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6060\/\">V6060<\/a> The &#8216;pfe&#8217; reference was utilized before it was verified against null. BundleStructure.java(423), BundleStructure.java(424)<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u0435.<\/p>\n<pre><code class=\"java\">public void run() {   for (SourceJavadocAttacherImplementation.Definer d : plugins) {     ....     List&lt;? extends URL> s = source ?       d.getSources(root, this) : d.getJavadoc(root, this);     if (s != null || s.isEmpty()) {     ....     }   } }<\/code><\/pre>\n<p>\u0410 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432 <em>||<\/em> \u0432\u043c\u0435\u0441\u0442\u043e <em>&amp;&amp;<\/em>. \u0421\u043f\u0438\u0441\u043e\u043a <em>s<\/em> \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432 \u043d\u0451\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0435\u0442. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u043a\u0430\u043a:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6008\/\">V6008<\/a> Null dereference of &#8216;s&#8217;. SourceJavadocAttacherUtil.java(141).<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u043e\u0445\u043e\u0436\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043b\u043e\u0433\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438:<\/p>\n<pre><code class=\"java\">public void propertyChange(PropertyChangeEvent evt) {   ....   synchronized (this) {     artifacts = null;     if (listeners == null &amp;&amp; listeners.isEmpty()) {       return;     }     ....   } }<\/code><\/pre>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a <em>listeners<\/em> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043d\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432 \u043d\u0451\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0435\u0441\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 <em>listeners<\/em> \u043d\u0443\u043b\u0435\u0432\u0430\u044f.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6008\/\">V6008<\/a> Null dereference of &#8216;listeners&#8217;. MavenArtifactsImplementation.java(613)<\/p>\n<p>\u0418\u0434\u0451\u043c \u0434\u0430\u043b\u0435\u0435:<\/p>\n<pre><code class=\"java\">private SourcesModel getModel () {   SourcesModel tm = model.get ();   if (tm == null) {     tm.sourcePath.removePropertyChangeListener (this);     tm.debugger.getSmartSteppingFilter ().     removePropertyChangeListener (this);   }   return tm; }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043a\u043e\u0434\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u043d\u043e\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0420\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0430 \u0442\u043e\u0447\u043d\u043e \u043d\u0443\u043b\u0435\u0432\u0430\u044f. \u041f\u0440\u0438\u0447\u0451\u043c \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 136 \u043c\u0435\u0441\u0442\u0430\u0445! \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0415\u0441\u043b\u0438 \u0442\u0430\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0435 \u0431\u044b\u043b\u0430 \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u0430 \u0441\u0440\u0430\u0437\u0443, \u0437\u043d\u0430\u0447\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0430 <em>tm<\/em> \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0443\u043b\u0435\u0432\u043e\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u043e\u0433\u043e \u0444\u0430\u043a\u0442\u0430, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6008\/\">V6008<\/a> Null dereference of &#8216;tm&#8217;. SourcesModel.java(713)<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0430\u0448\u043b\u0430\u0441\u044c \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0442\u043e\u0447\u043d\u043e \u0442\u0430\u043a\u0430\u044f \u0436\u0435 \u043e\u0448\u0438\u0431\u043a\u0430:<\/p>\n<pre><code class=\"java\">void unsetStepSuspendedByBpIn(JPDAThreadImpl thread) {   JPDABreakpoint oldBp;   synchronized (stepBreakpointLock) {   ....     if (this.suspendedSteppingThreads == null) {       this.suspendedSteppingThreads.remove(thread);       ....     }   }   .... }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u043e\u0442\u043e\u043a <em>thread<\/em> \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u043a\u0430\u043a:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6008\/\">V6008<\/a> Null dereference of &#8216;this.suspendedSteppingThreads&#8217;. JPDAThreadImpl.java(2329)<\/p>\n<p>\u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438, \u043c\u043d\u043e\u0433\u043e. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e.<\/p>\n<pre><code class=\"java\">public @Override Element getElement() {   if (view != null) {     return view.getElement();   } else {     return view.getDocument().getDefaultRootElement();   } }<\/code><\/pre>\n<p>\u0418 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435: \u0441\u0441\u044b\u043b\u043a\u0430 <em>view<\/em> \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0430 \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0443\u043b\u0435\u0432\u0430\u044f \u043e\u043d\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6008\/\">V6008<\/a> Null dereference of &#8216;view&#8217;. CollapsedView.java(627)<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435. \u041d\u0430 <em>null<\/em> \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0435 \u0437\u0430\u0431\u044b\u043b\u0438, \u043d\u043e \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0438\u0441\u044c:<\/p>\n<pre><code class=\"java\">public ModulePathsProblemsProvider(@NonNull final Lookup baseLkp) {   this.project = baseLkp.lookup(J2SEProject.class);   if (this.project == null) {     throw new IllegalArgumentException(String.format(        \"Unsupported project: %s of type: %s\",  \/\/NOI18N         project,         project.getClass()        ));   }   this.moduleInfoListeners = new HashSet&lt;>();   this.listeners = new PropertyChangeSupport(this); }<\/code><\/pre>\n<p>\u0420\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 <em>project<\/em> \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0430 <em>project<\/em> \u043d\u0443\u043b\u0435\u0432\u0430\u044f*.* \u0425\u043e\u0442\u0435\u043b\u0438 \u043a\u0430\u043a \u043b\u0443\u0447\u0448\u0435, \u043d\u043e \u043d\u0435 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6008\/\">V6008<\/a> Null dereference of &#8216;project&#8217;. ModulePathsProblemsProvider.java(93)<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430, \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0438\u0435 \u043a <em>NullPointerException<\/em>, \u043d\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f.<\/p>\n<pre><code class=\"java\">public static void main(String args[]) throws Exception {   ....   Bridge lex = null; \/\/new XMLSyntaxTokenManager(input);   int i = 25; \/\/token count   int id;   int toks = 0;   long time = System.currentTimeMillis();   while (i\/*--*\/>0) {      lex.next();     ....   } }<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0443\u043b\u0435\u0432\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u043a\u043b\u0430\u0441\u0441\u0430 <em>Bridge<\/em>, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435. \u0421\u0430\u043c\u043e\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u2014 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u0443 \u0441\u0441\u044b\u043b\u043a\u0443, \u0431\u044b\u043b \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d. \u0421\u0443\u0434\u044f \u043f\u043e \u043e\u0431\u0438\u043b\u0438\u044e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432, \u043c\u0435\u0442\u043e\u0434 \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u0430\u0434\u0430\u043b \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0430\u0432\u043e\u043a.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0435\u0433\u043e\u0434\u0443\u0435\u0442 \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6008\/\">V6008<\/a> Null dereference of &#8216;lex&#8217;. XMLSyntaxTokenManager.java(216)<\/p>\n<h3>\u041e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430\u043c.<\/p>\n<pre><code class=\"java\">private void changeIgnoreStatus (File f) throws IOException {   File parent = f;   boolean isDirectory = f.isDirectory() &amp;&amp; (! Files.isSymbolicLink(f.toPath()));   StringBuilder sb = new StringBuilder('\/');   if (isDirectory) {     sb.append('\/');   }   boolean cont = true;   while (cont) {     sb.insert(0, parent.getName()).insert(0, '\/');     parent = parent.getParentFile();     String path = sb.toString();     if (parent.equals(getRepository().getWorkTree())) {       if (addStatement(new File(parent, Constants.DOT_GIT_IGNORE),            path, isDirectory, false) &amp;&amp;           handleAdditionalIgnores(path, isDirectory)) {         addStatement(new File(parent, Constants.DOT_GIT_IGNORE),                               path, isDirectory, true);       }       cont = false;     } else {       cont = addStatement(new File(parent, Constants.DOT_GIT_IGNORE),                                     path, isDirectory, false);    } }<\/code><\/pre>\n<p>\u0412 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <em>StringBuilder<\/em> \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b &#8216;<em>\/&#8217;<\/em>. \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u043d\u0435\u0442: \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 <em>StringBuilder<\/em> \u0438 \u0441\u0440\u0430\u0437\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442 \u0432 \u043d\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b. \u041e\u0434\u043d\u0430\u043a\u043e Java \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b \u043a\u0430\u043a \u0447\u0438\u0441\u043b\u043e, \u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 <em>sb<\/em> \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043b\u0435\u0448\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u0443\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434 47 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432: \u0447\u0438\u0441\u043b\u043e 47 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u0443 &#8216;<em>\/&#8217;<\/em> \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 ASCII.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u0412 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0434\u043e \u0444\u0430\u0439\u043b\u0430 <em>f<\/em>. \u0415\u0441\u043b\u0438 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 <em>sb<\/em> \u0441\u043b\u0435\u0448 \u0431\u044b\u043b \u0431\u044b \u0443\u043a\u0430\u0437\u0430\u043d \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0430, \u0442\u043e \u043e\u043d \u0441\u0442\u0430\u043b \u0431\u044b \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c. \u0414\u0430\u043b\u0435\u0435 \u043f\u0443\u0442\u044c \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u0442\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0441\u043b\u0435\u0448 \u0432 \u043a\u043e\u043d\u0446\u0435. \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u043c\u044b \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0443\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>&#171;<em>\/folder1\/folder2\/f\/<\/em>&#187; \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430;<\/p>\n<\/li>\n<li>\n<p>&#171;<em>\/folder1\/folder2\/f\/\/<\/em>&#187; \u0434\u043b\u044f \u043f\u0430\u043f\u043a\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0435\u0442\u0440\u0443\u0434\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043e\u0431\u043e\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0438\u043c\u0435\u043b\u0441\u044f \u0431\u044b \u043b\u0438\u0448\u043d\u0438\u0439 \u0441\u043b\u0435\u0448. \u041d\u043e \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435 <em>StringBuilder<\/em>-a \u0441\u043b\u0435\u0448 \u043d\u0438 \u043d\u0430 \u0447\u0442\u043e \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442. \u0412\u044b\u0445\u043e\u0434\u0438\u0442, \u0447\u0442\u043e \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0440\u043e\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e! \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 PVS-Studio \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6009\/\">V6009<\/a> Buffer capacity is set to &#8217;47&#8217; using a char value. Most likely, the &#8216;\/&#8217; symbol was supposed to be placed in the buffer. IgnoreUnignoreCommand.java(107)<\/p>\n<h3>\u041e\u043f\u0430\u0441\u043d\u044b\u0439 \u043a\u043e\u0434: \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e<\/h3>\n<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 &#171;\u043d\u0435\u0443\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u0439&#187; \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c:<\/p>\n<pre><code class=\"java\">private class BrowserOutlineView extends OutlineView {   ....   public void startEditingAtPath(TreePath path) {     startEditingAtPath(path);   }   .... }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u0430\u0434\u0430\u043b\u0430, \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044e \u0431\u0435\u0437 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432\u044b\u0445\u043e\u0434\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:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6062\/\">V6062<\/a> Possible infinite recursion inside the &#8216;startEditingAtPath&#8217; method. BrowserPanel.java(165), BrowserPanel.java(166)<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435:<\/p>\n<pre><code class=\"java\">public class SchemaReferenceProxy extends SchemaReference                                    implements AXIComponentProxy {   ....   private SchemaReference getShared() {     return (SchemaReference)getShared();   }   .... }<\/code><\/pre>\n<p>\u0418\u0437\u0443\u0447\u0438\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435, \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f <em>getShared<\/em> \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u043c\u0435\u0442\u043e\u0434\u0430\u0445 \u043a\u043b\u0430\u0441\u0441\u0430 <em>SchemaReferenceProxy<\/em>. \u0410 \u0441\u0430\u043c \u043a\u043b\u0430\u0441\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 XML-\u0444\u0430\u0439\u043b\u0430\u043c\u0438. \u0422\u0430\u043a \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0432 Apache NetBeans \u0441 XML-\u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0438 \u0443 \u0432\u0430\u0441 \u0432\u0434\u0440\u0443\u0433 \u0443\u043f\u0430\u0434\u0451\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430, \u0442\u043e \u0432\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u043f\u043e \u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0451\u0442 \u0442\u043e \u0436\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6062\/\">V6062<\/a> Possible infinite recursion inside the &#8216;getShared&#8217; method. SchemaReferenceProxy.java(40), SchemaReferenceProxy.java(41)<\/p>\n<h3>\u041f\u043e\u0434\u0432\u0435\u0434\u0451\u043c \u0438\u0442\u043e\u0433<\/h3>\n<p>\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 21 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 Apache NetBeans. \u0418 \u0445\u043e\u0442\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f, \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0435\u0449\u0451 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0431\u0435\u0437 \u0434\u043e\u043b\u0436\u043d\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f. \u0411\u044b\u043b\u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043d\u043e\u0433\u043e \u0433\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u0442\u0440\u043e\u0439\u043d\u043e\u0435 \u043e\u0442\u0440\u0438\u0446\u0430\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u0430\u043a \u0437\u0434\u0435\u0441\u044c: <em>!!!it.hasNext()<\/em>. \u0417\u0430\u0447\u0435\u043c \u0442\u0430\u043a \u0434\u0435\u043b\u0430\u0442\u044c \u0432 Java, \u043f\u043e\u043d\u044f\u0442\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \ud83d\ude42<\/p>\n<p>\u041d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u0447\u0442\u043e Apache NetBeans \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0439\u0442\u0438 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0412\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430\u0445 \u0442\u0430\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u043a, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 IDE, \u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c\u0438 \u0441\u0442\u0430\u0442\u044c\u044f\u043c\u0438:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/java\/1089\/\">\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f &#171;K&#187;. \u0418\u0449\u0435\u043c \u0431\u0430\u0433\u0438 \u0432 \u043a\u043e\u0434\u0435 IntelliJ IDEA<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/1099\/\">Qt Creator* \u0438\u0449\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 Qt Creator<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/cpp\/1065\/\">PVS-Studio vs CodeLite: \u0431\u0438\u0442\u0432\u0430 \u0437\u0430 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/blog\/posts\/csharp\/0966\/\">\u0415\u0441\u0442\u044c \u043b\u0438 \u0432 \u0432\u0430\u0448\u0435\u0439 IDE \u0431\u0430\u0433\u0438? \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 AvalonStudio \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0435 PVS-Studio \u0438 \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u044b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0441 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0435\u0451 \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/pvs-studio.ru\/ru\/pvs-studio\/try-free\/?utm_source=website&amp;utm_medium=habr&amp;utm_campaign=article&amp;utm_content=1117\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Daniil Liakhov. <a href=\"https:\/\/pvs-studio.com\/en\/blog\/posts\/java\/1117\/\">21 bugs in 21st version of Apache NetBeans<\/a>.<\/p>\n<\/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\/808939\/\"> https:\/\/habr.com\/ru\/articles\/808939\/<\/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>Apache NetBeans \u2014 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0435\u0440\u0432\u044b\u0445 IDE \u0434\u043b\u044f Java, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u0447\u0442\u0438 30 \u043b\u0435\u0442. \u0421\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u043b\u0430 21-\u044f \u0432\u0435\u0440\u0441\u0438\u044f. \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0442\u0430\u043a\u043e\u0433\u043e \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0442\u0435\u043b\u044f \u0438 \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h3>\u041a\u0430\u043a \u0438 \u0447\u0442\u043e \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c?<\/h3>\n<p>\u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u042d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434 \u0444\u0430\u0439\u043b\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0432\u044b\u0434\u0430\u0451\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u2014 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0445 \u043a\u043e\u0434\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u0418\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f PVS-Studio, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0441 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0439 \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e code review. \u041a \u0442\u0430\u043a\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c, \u043d\u0435\u0441\u043e\u043c\u043d\u0435\u043d\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 open-source IDE Apache NetBeans \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u0430 Java, \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0441\u044f \u0432 \u0434\u0430\u043b\u0451\u043a\u043e\u043c 1997 \u0433\u043e\u0434\u0443. \u0410 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u044b\u0448\u043b\u0430 21-\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u044d\u0442\u043e\u0439 IDE.<\/p>\n<p>\u0412 \u0447\u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 <a href=\"https:\/\/github.com\/apache\/netbeans\/tree\/21?tab=readme-ov-file\">Apache NetBeans<\/a> \u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c 21 \u043e\u0448\u0438\u0431\u043a\u0443, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u0432 \u0435\u0451 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio. \u0412\u0441\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043a\u043e\u0434\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0435 \u0442\u0430\u043a.<\/p>\n<h3>\u041a\u043e\u043f\u0438\u0440\u0443\u0439, \u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439<\/h3>\n<p>\u041d\u0430\u0447\u043d\u0451\u043c \u0441 \u043e\u0448\u0438\u0431\u043e\u043a copy-paste. \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043a\u043e\u0434\u0430, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043e\u043d \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\n<pre><code class=\"java\">private void refresh(Node[] newSelection) {   ....   if(entry1 != null &amp;&amp; entry2 != null &amp;&amp; file1 != null &amp;&amp; file2 != null) {     if(entry1.getDateTime().getTime() > entry1.getDateTime().getTime()) {       refreshRevisionDiffPanel(entry1, entry2, file1, file2);     } else {       refreshRevisionDiffPanel(entry2, entry1, file2, file1);     }     return;   }   .... }<\/code><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e <em>if<\/em>, \u0432 \u043d\u0435\u043c \u0438\u0434\u0451\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439:<\/p>\n<pre><code class=\"java\">entry1.getDateTime().getTime() > entry1.getDateTime().getTime().<\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\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 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;entry1.getDateTime().getTime()&#8217; to the left and to the right of the &#8216;>&#8217; operator. HistoryDiffView.java(130)<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u043e\u0445\u043e\u0436\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430:<\/p>\n<pre><code class=\"java\">private RevisionInterval getResortedRevisionInterval(SVNRevision revision1,                                                       SVNRevision revision2) {   RevisionInterval ret;    if(revision1.equals(SVNRevision.HEAD) &amp;&amp;       revision1.equals(SVNRevision.HEAD)) {     ....   }   return ret; }<\/code><\/pre>\n<p>\u0423\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0437\u0434\u0435\u0441\u044c \u043c\u0435\u0442\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0439 SVN \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0440\u0435\u0432\u0438\u0437\u0438\u044f\u043c\u0438: <em>revision1<\/em> \u0438 <em>revision2<\/em>. \u041f\u0440\u0438\u0447\u0451\u043c \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0435\u0432\u0438\u0437\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 (<em>SVNRevision.HEAD<\/em>). \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043b \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u043e\u0438\u0445 \u0440\u0435\u0432\u0438\u0437\u0438\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u0443\u044e.<\/p>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;revision1.equals(SVNRevision.HEAD)&#8217; to the left and to the right of the &#8216;&amp;&amp;&#8217; operator. RevertModifications.java(387), RevertModifications.java(387)<\/p>\n<p>\u0418\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<pre><code class=\"java\">public boolean paintDragFeedback(....) {   ....   if (x1 >= x2) {     x1 = contInsets.left;     x2 = contSize.width - contInsets.right;     if (x1 >= x2) return true; \/\/ container is too small   }   if (y1 >= y2) {     y1 = contInsets.top;     x2 = contSize.height - contInsets.bottom;                \/\/ &lt;=     if (y1 >= y2) return true; \/\/ container is too small   }   .... }<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043f\u043e\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u043d\u0430 \u0434\u0432\u0430 \u0431\u043b\u043e\u043a\u0430 <em>if<\/em>: \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0443 <em>x<\/em>, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 <em>y<\/em>. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c <em>x2<\/em> \u043d\u0430 <em>y2<\/em>. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043d\u0435\u0432\u0435\u0440\u043d\u043e. \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\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:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6080\/\">V6080<\/a> Consider checking for misprints. It&#8217;s possible that an assigned variable should be checked in the next condition. BorderLayoutSupport.java(264), BorderLayoutSupport.java(263)<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u0435.<\/p>\n<pre><code class=\"java\">public void preferenceChange(PreferenceChangeEvent evt) {   String k = evt == null ? null : evt.getKey();     ....   try {     if (k == null || k.equals(FoldUtilitiesImpl.PREF_OVERRIDE_DEFAULTS)) {      ....     }     if (k == null || k.equals(SimpleValueNames.CODE_FOLDING_ENABLE)) {      ....     }      if (k == null || FoldUtilitiesImpl.PREF_CONTENT_PREVIEW.equals                               (FoldUtilitiesImpl.PREF_CONTENT_PREVIEW)) {       ....     }     if (k == null || FoldUtilitiesImpl.PREF_CONTENT_SUMMARY.equals                               (FoldUtilitiesImpl.PREF_CONTENT_SUMMARY)) {       ....     }      ....   }    .... }<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043a\u043e\u0434\u0430 \u0432 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0438 \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0430\u0445 <em>if<\/em> \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0441\u0442\u0440\u043e\u043a\u0438 <em>FoldUtilitiesImpl.PREF_CONTENT_PREVIEW<\/em> \u0438 <em>FoldUtilitiesImpl<\/em>.<em>PREF_CONTENT_SUMMARY<\/em> \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442 \u0441 \u0441\u0430\u043c\u0438\u043c\u0438 \u0441\u043e\u0431\u043e\u0439, \u0430 \u043d\u0435 \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 <em>k<\/em>. \u0417\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u044d\u0442\u0438\u0445 \u0431\u043b\u043e\u043a\u0430\u0445, \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430, \u0434\u0430\u0436\u0435 \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f. \u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 \u044d\u0442\u0438 \u0434\u0432\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \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\/v6007\/\">V6007<\/a> Expression &#8216;FoldUtilitiesImpl.PREF_CONTENT_PREVIEW.equals(FoldUtilitiesImpl.PREF_CONTENT_PREVIEW)&#8217; is always true. FoldOptionsPanel.java(177)<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6007\/\">V6007<\/a> Expression &#8216;FoldUtilitiesImpl.PREF_CONTENT_SUMMARY.equals(FoldUtilitiesImpl.PREF_CONTENT_SUMMARY)&#8217; is always true. FoldOptionsPanel.java(180)<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043e\u0448\u0438\u0431\u043a\u0435.<\/p>\n<pre><code class=\"java\">static void createJfxExtension(Project p, FileObject dirFO,                                 WizardType type) throws IOException {   FileObject templateFO = FileUtil.getConfigFile(\"Templates\/JFX\/jfx-impl.xml\");    if (templateFO != null) {     ....     if (type == JavaFXProjectWizardIterator.WizardType.SWING) {       ....       FileObject swingTemplateFO1 = FileUtil.getConfigFile(....);        if (swingTemplateFO1 != null) {         FileUtil.copyFile(swingTemplateFO1,                            templatesFO, \"FXSwingTemplate\");        }       FileObjectswingTemplateFO2=FileUtil.getConfigFile(....);        if (swingTemplateFO1 != null) {         FileUtil.copyFile(swingTemplateFO2,                            templatesFO, \"FXSwingTemplateApplet\");        }       FileObject swingTemplateFO3 = FileUtil.getConfigFile(....); \/\/ NOI18N       if (swingTemplateFO1 != null) {         FileUtil.copyFile(swingTemplateFO3,                            templatesFO,\"FXSwingTemplateApplication\");        }     }     JFXProjectUtils.addExtension(p);   } }<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0442\u0440\u0451\u0445 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0441 \u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 \u043e\u0434\u0438\u043d. \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0441\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e: \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u044b\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043e\u0442\u043a\u0440\u044b\u0442. \u041d\u043e \u0432\u043e\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0442\u043e\u043b\u044c\u043a\u043e <em>swingTemplateF01<\/em>. \u041e\u0448\u0438\u0431\u043a\u0430 \u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438, \u0435\u0441\u043b\u0438 <em>swingTemplateF02<\/em> \u0438\u043b\u0438 <em>swingTemplateF03<\/em> \u043d\u0435 \u0443\u0434\u0430\u0441\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c.<\/p>\n<p>\u0421\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6080\/\">V6080<\/a> Consider checking for misprints. It&#8217;s possible that an assigned variable should be checked in the next condition. JFXProjectUtils.java(768), JFXProjectUtils.java(769)<\/p>\n<p>\u042d\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451.<\/p>\n<pre><code class=\"java\">public Object getElementAt(int index) {   ....   int myMinIndex = getExternal (minIndex) + 1;    \/\/ one after the index of the first non-1 index   int myMaxIndex = getExternal (maxIndex);    assert myMaxIndex >= myMaxIndex : \"Must be greater\"; \/\/ NOI18N   .... }<\/code><\/pre>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u044b \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043c\u0435\u0448\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u043e \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430 \u0432 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <em>myMaxIndex >= myMaxIndex<\/em>, \u0445\u043e\u0442\u044f \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c <em>myMaxIndex >= myMinIndex<\/em>.<\/p>\n<p>\u042d\u0442\u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c. \u0422\u0430\u043a \u043a\u0430\u043a \u0432 <em>assert<\/em> \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0431\u043b\u0430\u0433\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432 \u043b\u043e\u0433\u0438\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 <em>myMaxIndex \u043c\u0435\u043d\u044c\u0448\u0435 myMinIndex.<\/em> \u0415\u0441\u043b\u0438 \u0431\u044b \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e, \u0442\u043e \u044d\u0442\u043e \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u043e \u0431\u044b \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio:<\/p>\n<p><a href=\"https:\/\/pvs-studio.ru\/ru\/docs\/warnings\/v6001\/\">V6001<\/a> There are identical sub-expressions &#8216;myMaxIndex&#8217; to the left and to the right of the &#8216;>=&#8217; operator. FilteredListModel.java(319)<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0443.<\/p>\n<pre><code class=\"java\">private void mergeParallelInclusions(List&lt;IncludeDesc> inclusions,                                       IncludeDesc original,                                      boolean preserveOriginal) {   IncludeDesc best = null;    ....   \/\/ 2nd remove incompatible inclusions, move compatible ones to same level   for (Iterator it=inclusions.iterator(); it.hasNext(); ) {     IncludeDesc iDesc = (IncludeDesc) it.next();     if (iDesc != best) {       if (!compatibleInclusions(iDesc, best, dimension)) {         it.remove();       } else if (iDesc.parent == best.parent &amp;&amp;                   iDesc.neighbor == best.neighbor &amp;&amp;                  (iDesc.neighbor != null || iDesc.index == iDesc.index)) {  \/\/ &lt;=         it.remove(); \/\/ same inclusion twice (detect for better robustness)       }       ....     }     ....   }   ....   if (unifyGaps != null) {     \/\/ unify resizability of the border gaps collected for individual inclusions     for (LayoutInterval[] gaps : unifyGaps) {       int preferredFixedSide =                           fixedSideGaps[LEADING] >= fixedSideGaps[TRAILING] ?                                                     LEADING : TRAILING;       for (int i=LEADING; i &lt;= TRAILING; i++) {         if (LayoutInterval.canResize(gaps[i]) &amp;&amp; !anyResizingNeighbor[i]             &amp;&amp; (anyResizingNeighbor[i^1] || preferredFixedSide == i)) {           operations.setIntervalResizing(gaps[i], false);           if (!LayoutInterval.canResize(gaps[i^1])) {             operations.setIntervalResizing(gaps[i^i], true);       \/\/ &lt;=           }           break;         }       }     }   } }<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043f\u043e\u0447\u0442\u0438 \u0432 1500 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0442\u0430\u043a\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0435\u0449\u0438 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u044b \u0441\u0440\u0430\u0437\u0443.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u043f\u043e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0412\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u043b\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <em>iDesk<\/em> \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c <em>best<\/em>. \u0412 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u043f\u043e\u043b\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043e\u0448\u0438\u0431\u0441\u044f \u0438 \u0432\u043c\u0435\u0441\u0442\u043e <em>iDesc.index == best.index<\/em> \u043d\u0430\u043f\u0438\u0441\u0430\u043b <em>iDesc.index == iDesc.index<\/em>.<\/p>\n<p>\u0422<\/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-374114","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/374114","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=374114"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/374114\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=374114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=374114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=374114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}