{"id":252669,"date":"2015-03-09T17:50:02","date_gmt":"2015-03-09T13:50:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=252669"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=252669","title":{"rendered":"\u0412\u044b\u0448\u0435\u043b FindBugs 3.0.1"},"content":{"rendered":"<p>     \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/825\/895\/c92\/825895c9203cf34e9017a5576651ae2b.png\" align=\"right\"\/><br \/>  \u041d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f FindBugs <a href=\"https:\/\/sourceforge.net\/projects\/findbugs\/\">\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f<\/a> \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e \u0447\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0435\u0442\u044c\u044f \u0446\u0438\u0444\u0440\u0430 \u0432 \u043d\u043e\u043c\u0435\u0440\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432\u0430\u0441 \u0436\u0434\u0451\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u043e\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u044b\u0445. \u0415\u0441\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0438\u0447\u0430 3.0.0 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 Java 8 \u0438 \u043d\u043e\u0432\u044b\u0445 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0442\u043e \u0432 3.0.1 \u0443\u043f\u043e\u0440 \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u0417\u0434\u0435\u0441\u044c \u044f \u0445\u043e\u0447\u0443 \u0432\u043a\u0440\u0430\u0442\u0446\u0435 \u043e\u0441\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u043e\u0432\u044b\u0435 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u044b, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u043b\u0438\u0447\u043d\u043e \u043c\u043d\u043e\u0439.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c\u0441\u044f \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u044b: \u043e\u043d\u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0449\u0443\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c), \u0430 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430. \u041f\u043e\u0440\u043e\u0439 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h3>UC_USELESS_CONDITION<\/h3>\n<p>  \u041f\u0440\u043e \u044d\u0442\u043e\u0442 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u044f \u043f\u0438\u0441\u0430\u043b <a href=\"http:\/\/habrahabr.ru\/post\/240121\/\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e<\/a>, \u043d\u043e \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u043d \u0431\u044b\u043b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430, \u043f\u0435\u0440\u0435\u0431\u0440\u043e\u0441 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0432 \u0434\u0440\u0443\u0433\u0443\u044e, \u0432\u044b\u0437\u043e\u0432\u044b String.length(), unboxing, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043b\u0438\u043d \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u043b\u044f. \u0414\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b. \u042d\u0442\u043e\u0442 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0431\u0430\u0433\u0438 \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u00ab\u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043c\u044b \u0433\u043e\u0434\u0430\u043c\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043b\u0438?\u00bb \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 <a href=\"http:\/\/grepcode.com\/file\/repo1.maven.org\/maven2\/net.sourceforge.pmd\/pmd-java\/5.2.3\/net\/sourceforge\/pmd\/lang\/java\/rule\/basic\/AvoidUsingHardCodedIPRule.java#86\">\u043d\u0430\u0448\u0451\u043b\u0441\u044f<\/a> \u0432 PMD 5.2.3 (\u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430!):  <\/p>\n<pre><code class=\"java\">protected boolean isHexCharacter(char c) {     return isLatinDigit(c) || ('A' &lt;= c || c &lt;= 'F') || ('a' &lt;= c || c &lt;= 'f'); }<\/code><\/pre>\n<p>  \u0418\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f || \u0432\u043c\u0435\u0441\u0442\u043e &#038;&#038; \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0438\u0441\u0442\u0438\u043d\u043d\u043e \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 (\u043c\u0435\u0442\u043e\u0434 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u0451\u0442 true). \u0411\u0430\u0433 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 5.0.0 (\u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0435 \u043a\u043e\u043f\u0430\u043b) \u2014 \u043f\u043e\u0447\u0442\u0438 \u0442\u0440\u0438 \u0433\u043e\u0434\u0430.<\/p>\n<p>  \u0417\u0430\u043c\u0435\u0447\u0443, \u043a\u0441\u0442\u0430\u0442\u0438, \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0432\u0438\u0434\u044f\u0442, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u043d\u0438\u0445. \u0412\u043e\u0442 <a href=\"https:\/\/sourceforge.net\/p\/findbugs\/bugs\/1360\/\">\u0442\u0443\u0442<\/a> \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a FindBugs \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u043d\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 <code>c != '\\n' || c != '\\r'<\/code> \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u043b\u043e\u0436\u043d\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u0445\u0438\u0442\u0440\u0443\u044e \u0442\u0435\u043e\u0440\u0438\u044e \u043f\u0440\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0438 \u043d\u043e\u043c\u0435\u0440\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430 \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439. \u0410 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u0435 \u043b\u043e\u0436\u043d\u043e\u0435, \u043a\u043e\u0434 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.<\/p>\n<p>  \u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u0430\u044f \u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"http:\/\/grepcode.com\/file\/repo1.maven.org\/maven2\/org.apache.lucene\/lucene-core\/4.10.3\/org\/apache\/lucene\/codecs\/compressing\/CompressingStoredFieldsReader.java#283\">\u0442\u0430\u043a\u043e\u0435<\/a> \u043d\u0430\u0448\u043b\u043e\u0441\u044c \u0432 Lucene 4.10.3:  <\/p>\n<pre><code class=\"java\">final int bitsPerStoredFields = fieldsStream.readVInt(); if (bitsPerStoredFields == 0) { ... }  else if (bitsPerStoredFields &gt; 31) {   throw new CorruptIndexException(&quot;bitsPerStoredFields=&quot; + bitsPerStoredFields + &quot; (resource=&quot; + fieldsStream + &quot;)&quot;); } else { ... }  final int bitsPerLength = fieldsStream.readVInt(); if (bitsPerLength == 0) { ... } else if (bitsPerStoredFields &gt; 31) { \/\/ \u0417\u0434\u0435\u0441\u044c UC_USELESS_CONDITION   throw new CorruptIndexException(&quot;bitsPerLength=&quot; + bitsPerLength + &quot; (resource=&quot; + fieldsStream + &quot;)&quot;); } else { ... }<\/code><\/pre>\n<p>  FindBugs \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 bitsPerStoredFields &gt; 31 \u043c\u044b \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u043b\u0438 \u0432\u044b\u0432\u0430\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437 \u0442\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u0430. \u0412\u0438\u0434\u0438\u043c\u043e, \u0430\u0432\u0442\u043e\u0440\u044b \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u043a\u0443\u0441\u043e\u043a \u043a\u043e\u0434\u0430 \u0438 \u0437\u0430\u0431\u044b\u043b\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 bitsPerLength.<\/p>\n<h3>UC_USELESS_OBJECT<\/h3>\n<p>  \u042d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432 \u0438 \u0441 \u043d\u0438\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u0430\u044e\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432, \u043a\u0440\u043e\u043c\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0435\u0441\u0442\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0435 <a href=\"http:\/\/fb-contrib.sourceforge.net\/bugdescriptions.html\">FB-contrib<\/a> (WOC_WRITE_ONLY_COLLECTION_LOCAL) \u2014 \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u044c. \u041d\u0430\u0448 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0445\u0438\u0442\u0440\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b. \u041e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u0443\u0434\u0430\u043b\u0451\u043d. \u041d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e \u043a\u0430\u043a\u0438\u0445-\u0442\u043e \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435. \u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 <a href=\"http:\/\/grepcode.com\/file\/repository.grepcode.com\/java\/ext\/com.jetbrains\/intellij-idea\/13.0.0\/com\/intellij\/uiDesigner\/designSurface\/DesignDropTargetListener.java#282\">\u043c\u0430\u0441\u0441\u0438\u0432\u0430\u043c\u0438<\/a> \u0438\u0437 IDEA:  <\/p>\n<pre><code class=\"java\">final int[] dx = new int[componentCount]; final int[] dy = new int[componentCount]; for (int i = 0; i &lt; componentCount; i++) {   final RadComponent component = myDraggedComponentsCopy.get(i);   dx[i] = component.getX() - dropX;   dy[i] = component.getY() - dropY; }<\/code><\/pre>\n<p>  \u041c\u0430\u0441\u0441\u0438\u0432\u044b dx \u0438 dy \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f, \u043d\u043e \u043d\u0438\u0433\u0434\u0435 \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f (\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u043d\u044c\u0448\u0435). \u0412\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u0446\u0438\u043a\u043b \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 <a href=\"http:\/\/grepcode.com\/file\/repository.grepcode.com\/java\/eclipse.org\/4.4.1\/org.eclipse.jdt\/ui\/3.10.1\/org\/eclipse\/jdt\/internal\/ui\/javadocexport\/RecentSettingsStore.java#145\">\u0442\u0443\u0442<\/a> \u0432 Eclipse \u0443\u0436\u0435 \u0441\u043a\u043e\u0440\u0435\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430:  <\/p>\n<pre><code class=\"java\">public void setProjectSettings(IJavaProject project, String destination, String antpath, String[] hrefs) {     ProjectData data= fPerProjectSettings.get(project);     if (data == null) {         data= new ProjectData(); \/\/ UC_USELESS_OBJECT     }     data.setDestination(destination);     data.setAntpath(antpath);      StringBuffer refs= new StringBuffer();     ...     data.setHRefs(refs.toString()); }<\/code><\/pre>\n<p>  ProjectData \u2014 POJO-\u043a\u043b\u0430\u0441\u0441, \u0438 FindBugs \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0435\u0433\u043e \u0441\u0435\u0442\u0442\u0435\u0440\u044b \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (\u0431\u0435\u0437 \u0437\u0430\u0445\u043e\u0434\u0430 \u0432 if) \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442. \u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u0448\u043b\u0438 \u0432 if, \u0442\u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f. \u0412\u0438\u0434\u0438\u043c\u043e, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0432 Map fPerProjectSettings.<\/p>\n<h3>RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT<\/h3>\n<p>  \u0422\u0440\u0435\u0442\u044c\u044f \u0438\u0437 \u043c\u043e\u0438\u0445 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0432 \u044d\u0442\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u043e \u043d\u0435\u0451 \u043d\u0430\u043f\u0438\u0448\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u044b\u0434\u0430\u0451\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0438 \u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f. \u0417\u0434\u0435\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u0445\u043e\u0442\u044f \u043e\u043d\u0438 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u043a\u0438 \u0438 \u043d\u0435 \u0441\u043d\u0438\u0436\u0430\u044e\u0442 \u043e\u0431\u0449\u0443\u044e \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u0412\u043e\u0442 <a href=\"http:\/\/grepcode.com\/file\/repository.grepcode.com\/java\/ext\/com.jetbrains\/intellij-idea\/13.0.0\/com\/intellij\/lang\/ant\/dom\/AntDomDirSet.java#64\">\u043f\u0440\u0438\u043c\u0435\u0440<\/a> \u0438\u0437 IDEA:  <\/p>\n<pre><code class=\"java\">protected List&lt;File&gt; getFiles(@Nullable AntDomPattern pattern, Set&lt;AntFilesProvider&gt; processed) {   ...   if (singleFile != null && singleFile.isDirectory()) {     Collections.singletonList(singleFile); \/\/ RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT   }   return Collections.emptyList(); }<\/code><\/pre>\n<p>  \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0432\u043d\u0443\u0442\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0437\u0430\u0431\u044b\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c return. \u0415\u0441\u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0442\u0438\u043f \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c \u0441 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u043c \u0442\u0438\u043f\u043e\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e, \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0415\u0449\u0451 <a href=\"http:\/\/grepcode.com\/file\/repository.grepcode.com\/java\/ext\/com.jetbrains\/intellij-idea\/13.0.0\/org\/jetbrains\/idea\/maven\/navigator\/SelectMavenProjectDialog.java#56\">\u043f\u0440\u0438\u043c\u0435\u0440<\/a> \u0438\u0437 IDEA (\u043d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0430\u043c \u043c\u043d\u043e\u0433\u043e \u043e\u0448\u0438\u0431\u043e\u043a, \u0430 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0438 JetBrains \u0447\u0438\u0442\u0430\u044e\u0442 \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442):  <\/p>\n<pre><code class=\"java\">protected void doOKAction() {   SimpleNode node = getSelectedNode();   if (node instanceof NullNode) node = null;    if (node != null) {     if (!(node instanceof MavenProjectsStructure.ProjectNode)) {       \/\/ RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT       ((MavenProjectsStructure.MavenSimpleNode)node).findParent(MavenProjectsStructure.ProjectNode.class);     }   }   myResult = node != null ? ((MavenProjectsStructure.ProjectNode)node).getMavenProject() : null;    super.doOKAction(); }<\/code><\/pre>\n<p>  \u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c <code>node =<\/code> \u0441\u043b\u0435\u0432\u0430.<\/p>\n<p>  \u0417\u0430\u0431\u044b\u0442\u044b\u0439 return \u0438\u043b\u0438 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u044b\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044b \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0415\u0449\u0451 \u0431\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434, \u0434\u0443\u043c\u0430\u044f, \u0447\u0442\u043e \u043e\u043d \u0447\u0442\u043e-\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442, \u0430 \u043e\u043d \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 Apache POI <a href=\"http:\/\/grepcode.com\/file\/repo1.maven.org\/maven2\/org.apache.poi\/poi\/3.11\/org\/apache\/poi\/hssf\/record\/common\/FeatFormulaErr2.java#97\">\u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442<\/a> \u043c\u0435\u0442\u043e\u0434 setBoolean, \u0440\u0430\u0437\u0443\u043c\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044f, \u0447\u0442\u043e \u043e\u043d \u0447\u0442\u043e-\u0442\u043e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442. \u0410 \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e (\u0438 \u043a\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a \u043c\u0435\u0442\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043b!).<\/p>\n<p>  \u0421\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0432\u044b\u0437\u0432\u0430\u043b \u043d\u0435 \u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0442\u0435\u043b. \u0422\u0430\u043a \u0432 \u0441\u0430\u043c\u043e\u043c FindBugs \u043c\u044b \u043d\u0430\u0448\u043b\u0438 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438 <a href=\"https:\/\/code.google.com\/p\/findbugs\/source\/browse\/findbugs\/src\/java\/edu\/umd\/cs\/findbugs\/ba\/npe\/DerefFinder.java?r=11189b911ff3edc66cea0263d278cf56d6531c6d#155\">\u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435<\/a> BitSet.intersects() (\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u043b\u0438 \u0434\u0432\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430) \u0432\u043c\u0435\u0441\u0442\u043e BitSet.and() (\u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u0435\u0442 \u0434\u0432\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u043f\u0435\u0440\u0432\u043e\u0435).<\/p>\n<h3>UC_USELESS_VOID_METHOD<\/h3>\n<p>  \u042d\u0442\u043e \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430: \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u043e \u043d\u0435\u043f\u0443\u0441\u0442\u044b\u0445 void-\u043c\u0435\u0442\u043e\u0434\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0438\u0445 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0435\u0434\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441 TODO \u043f\u043e\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435, \u043d\u043e \u0443\u0434\u0430\u0451\u0442\u0441\u044f \u043d\u0430\u0439\u0442\u0438 \u0438 \u043f\u043e\u0438\u0441\u0442\u0438\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0449\u0438. \u0412\u043e\u0442, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, <a href=\"http:\/\/grepcode.com\/file\/repository.grepcode.com\/java\/eclipse.org\/4.4.1\/org.eclipse.ui\/cheatsheets\/3.4.200\/org\/eclipse\/ui\/internal\/cheatsheets\/registry\/CheatSheetRegistryReader.java#537\">\u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439<\/a> \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 Eclipse:  <\/p>\n<pre><code class=\"java\">private void pruneEmptyCategories(CheatSheetCollectionElement parent) {     Object[] children = parent.getChildren();     for (int nX = 0; nX &lt; children.length; nX++) {         CheatSheetCollectionElement child = (CheatSheetCollectionElement) children[nX];         pruneEmptyCategories(child);     } }<\/code><\/pre>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u043e\u0431\u0445\u043e\u0434 \u0434\u0440\u0435\u0432\u043e\u0432\u0438\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e.<\/p>\n<p>  \u0410 \u0432\u043e\u0442 \u0435\u0449\u0451 \u043c\u0435\u0442\u043e\u0434 <a href=\"http:\/\/grepcode.com\/file\/repository.grepcode.com\/java\/eclipse.org\/4.4.1\/org.eclipse.ant\/ui\/3.5.500\/org\/eclipse\/ant\/internal\/ui\/dtd\/util\/SortedSet.java?av=f#184\">merge<\/a> \u043a\u043b\u0430\u0441\u0441\u0430 SortedSet \u0432 Eclipse:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">public void merge(SortedSet other)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"java\">public void merge(SortedSet other) {     Object[] array = fKeyHolder.getKeys();     Object[] otherarray = other.fKeyHolder.getKeys();     if (otherarray == null)         return;     if (array == null) {         array = otherarray;         return;     }     int ithis = 0, iother = 0, i = 0;     int mthis = array.length, mother = otherarray.length;     Object[] tmp = new Object[mthis + mother];     while (ithis &lt; mthis && iother &lt; mother) {         int comp = fComp.compare(array[ithis], otherarray[iother]);         if (comp &lt;= 0) {             tmp[i++] = array[ithis++];         } else {             tmp[i++] = otherarray[iother++];         }     }     while (ithis &lt; mthis) {         tmp[i++] = array[ithis++];     }     while (iother &lt; mother) {         tmp[i++] = otherarray[iother++];     } }<\/code><\/pre>\n<\/div>\n<\/div>\n<p>  \u041c\u043e\u0436\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 26 \u0441\u0442\u0440\u043e\u043a \u0441 \u0442\u0440\u0435\u043c\u044f \u0446\u0438\u043a\u043b\u0430\u043c\u0438 \u0438 \u0442\u0440\u0435\u043c\u044f if&#8217;\u0430\u043c\u0438 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043d\u0435 \u043d\u0435\u0441\u0451\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u044b? FindBugs \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u0442.<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0439\u0442\u0435 FindBugs, \u0438 \u0432\u044b, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u043d\u044c\u0448\u0435 \u043d\u0435 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u0432\u0430\u043b\u0438. \u041f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f Eclipse <a href=\"http:\/\/findbugs.sourceforge.net\/downloads.html\">\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d<\/a> \u0443 \u043d\u0430\u0441 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435. <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/3847?pr=idea\">\u041f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f IDEA<\/a> \u0442\u043e\u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d. \u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 <a href=\"https:\/\/sourceforge.net\/p\/findbugs\/bugs\/\">\u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c<\/a> \u043d\u0430\u043c \u043e \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f\u0445 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Disclaimer<\/b><\/p>\n<div class=\"spoiler_text\">\u041d\u0435\u0442, \u044f \u043d\u0435 \u0441\u043e\u043e\u0431\u0449\u0438\u043b \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 FindBugs \u044f \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e \u043e\u043a\u043e\u043b\u043e 50 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 \u043d\u0430\u0445\u043e\u0436\u0443 \u0432 \u043d\u0438\u0445 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e \u0442\u044b\u0441\u044f\u0447\u0438 \u043d\u043e\u0432\u044b\u0445 \u0431\u0430\u0433\u043e\u0432 (\u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 FindBugs). \u0412\u0440\u0435\u043c\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u043c\u043e\u0433 \u0431\u044b \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0430\u0433-\u0440\u0435\u043f\u043e\u0440\u0442\u043e\u0432, \u044f \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u0442\u0440\u0430\u0447\u0443 \u043d\u0430 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 FindBugs. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 FindBugs \u0442\u043e\u0447\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0430\u043c\u0438 \u0443\u0432\u0438\u0434\u044f\u0442 \u043d\u043e\u0432\u044b\u0435 \u0431\u0430\u0433\u0438, \u043a\u043e\u0433\u0434\u0430 \u043e\u0431\u043d\u043e\u0432\u044f\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043f\u043e\u043c\u043e\u0447\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0443, \u0432\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e FindBugs \u0438 \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0431\u0430\u0433\u0430\u0445.<\/div>\n<\/div>\n<div class=\"polling\">\n<form action=\"\/json\/polling\/\" class=\"poll\" method=\"post\">\n<div class=\"poll_title\">\u041a\u0430\u043a\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e FindBugs \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435?<\/div>\n<p>  \t\t<input type=\"hidden\" name=\"post_id\" value=\"251749\"\/> \t\t<input type=\"hidden\" name=\"polling_question_id\" value=\"13265\"\/>  \t\t<\/p>\n<table class=\"answer\">\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv65609\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"65609\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv65609\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e 3.0.1<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv65611\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"65611\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv65611\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e 3.0.0 (\u043d\u043e \u0441\u043a\u043e\u0440\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044e)<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv65613\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"65613\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv65613\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e 3.0.0 (\u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e)<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv65615\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"65615\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv65615\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv65617\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"65617\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv65617\">FindBugs \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e, \u0443 \u043c\u0435\u043d\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 Java-\u043a\u043e\u0434\u0430<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv65619\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"65619\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv65619\">FindBugs \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e, \u043d\u043e \u0434\u0443\u043c\u0430\u044e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv65621\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"65621\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv65621\">FindBugs \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e, \u043b\u0435\u043d\u044c \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv65623\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"65623\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv65623\">FindBugs \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e, \u0432 \u043c\u043e\u0451\u043c Java-\u043a\u043e\u0434\u0435 \u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u043a<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"radio\" id=\"vv65625\" \t\t\t\t\t\tclass=\"radio js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"65625\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv65625\">FindBugs \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e, \u043d\u0430 Java \u043d\u0435 \u043f\u0438\u0448\u0443<\/label> \t\t\t\t<\/td>\n<\/tr>\n<\/table>\n<p class=\"total\">\u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b 31 \u0447\u0435\u043b\u043e\u0432\u0435\u043a. \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u043e\u0441\u044c 8 \u0447\u0435\u043b\u043e\u0432\u0435\u043a.<\/p>\n<\/p><\/form>\n<p class=\"for_users_only_msg\">\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a href=\"https:\/\/habrahabr.ru\/auth\/login\/\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/p>\n<\/p><\/div>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/251749\/\"> http:\/\/habrahabr.ru\/post\/251749\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>     \t<img decoding=\"async\" src=\"http:\/\/habr.habrastorage.org\/post_images\/825\/895\/c92\/825895c9203cf34e9017a5576651ae2b.png\" align=\"right\"\/><br \/>  \u041d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f FindBugs <a href=\"https:\/\/sourceforge.net\/projects\/findbugs\/\">\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f<\/a> \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e \u0447\u0442\u043e \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0430\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0440\u0435\u0442\u044c\u044f \u0446\u0438\u0444\u0440\u0430 \u0432 \u043d\u043e\u043c\u0435\u0440\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0432\u0430\u0441 \u0436\u0434\u0451\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u043e\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u044b\u0445. \u0415\u0441\u043b\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0438\u0447\u0430 3.0.0 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 Java 8 \u0438 \u043d\u043e\u0432\u044b\u0445 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u0431\u044b\u043b\u043e, \u0442\u043e \u0432 3.0.1 \u0443\u043f\u043e\u0440 \u0431\u044b\u043b \u0441\u0434\u0435\u043b\u0430\u043d \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b. \u0417\u0434\u0435\u0441\u044c \u044f \u0445\u043e\u0447\u0443 \u0432\u043a\u0440\u0430\u0442\u0446\u0435 \u043e\u0441\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u043e\u0432\u044b\u0435 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u044b, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u043b\u0438\u0447\u043d\u043e \u043c\u043d\u043e\u0439.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c\u0441\u044f \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0434\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u044b: \u043e\u043d\u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0449\u0443\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 \u0441 \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c), \u0430 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043a\u043e\u0434\u0430. \u041f\u043e\u0440\u043e\u0439 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-252669","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/252669","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=252669"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/252669\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=252669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=252669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=252669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}