{"id":294760,"date":"2019-11-18T09:00:16","date_gmt":"2019-11-18T09:00:16","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=294760"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=294760","title":{"rendered":"\u041e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0438 \u0441\u043e \u0441\u0442\u0435\u043d\u0434\u0430 PVS-Studio \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f\u0445 2018-2019"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/701\/9e4\/589\/7019e458975e9931a108882b6fd126a8.png\" alt=\"Picture 2\" align=\"left\"><\/p>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442! \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0441\u0435\u0437\u043e\u043d \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0439 2019 \u0433\u043e\u0434\u0430 \u0435\u0449\u0451 \u0432 \u0441\u0430\u043c\u043e\u043c \u0440\u0430\u0437\u0433\u0430\u0440\u0435, \u043c\u044b \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u0438 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u044f\u043c \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430. \u041e\u0441\u0435\u043d\u044c 2019 \u0433\u043e\u0434\u0430 \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0441 \u043d\u043e\u0432\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0437\u0430\u0434\u0430\u0447, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u043e\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u0435\u043a \u0437\u0430 2018 \u0433\u043e\u0434, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 2019. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0431\u044b\u043b\u0438 \u0432\u0437\u044f\u0442\u044b \u0438\u0437 \u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u0430 \u043b\u0438\u0441\u0442\u043e\u0432\u043a\u0438 \u0441 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u0438\u043b\u0438 QR-\u043a\u043e\u0434 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0441\u0442\u0430\u0442\u044c\u0435.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0431\u044b\u0432\u0430\u043b\u0438 \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f\u0445, \u0433\u0434\u0435 \u043c\u044b \u0441\u0442\u043e\u044f\u043b\u0438 \u0441\u043e \u0441\u0442\u0435\u043d\u0434\u043e\u043c, \u0442\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u0438\u0434\u0435\u043b\u0438 \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0440\u0435\u0448\u0430\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u0437\u0430\u0434\u0430\u0447. \u042d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0434\u0430 \u0438\u0437 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f C, C++, C# \u0438\u043b\u0438 Java. \u0412 \u043a\u043e\u0434\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u044f\u043c. \u0417\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 (\u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438) \u043c\u044b \u0432\u044b\u0434\u0430\u0435\u043c \u043f\u0440\u0438\u0437\u044b \u2014 \u0441\u0442\u0430\u0442\u0443\u0441\u044b \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0441\u0442\u043e\u043b, \u0431\u0440\u0435\u043b\u043e\u043a\u0438 \u0438 \u0442.\u043f.:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2d9\/aff\/240\/2d9aff24000a4a61dd4eac65fef38083.jpg\" alt=\"Picture 4\"><\/div>\n<p>  \u0425\u043e\u0442\u0438\u0442\u0435 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435? \u041f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0435 \u043d\u0430 \u043d\u0430\u0448 \u0441\u0442\u0435\u043d\u0434 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f\u0445.<\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u0432 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0608\/\">\u0412\u0440\u0435\u043c\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0439! \u041f\u043e\u0434\u0432\u043e\u0434\u0438\u043c \u0438\u0442\u043e\u0433\u0438 2018 \u0433\u043e\u0434\u0430<\/a>&#187; \u0438 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0648\/\">\u041a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438. \u041f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0438\u0442\u043e\u0433\u0438 \u043f\u043e \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u043f\u043e\u043b\u0443\u0433\u043e\u0434\u0438\u044e 2019<\/a>&#187; \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f\u0445 \u0432 \u044d\u0442\u043e\u043c \u0438 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0433\u043e\u0434\u0443.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043d\u0430\u0447\u043d\u0451\u043c \u0438\u0433\u0440\u0443 \u00ab\u041d\u0430\u0439\u0434\u0438 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043a\u043e\u0434\u0435\u00bb. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u043a\u0438 \u0437\u0430 2018 \u0433\u043e\u0434, \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u043e \u044f\u0437\u044b\u043a\u0430\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<h2>2018<\/h2>\n<p>  <\/p>\n<h3>\u0421++<\/h3>\n<p>  <b>Chromium bug<\/b><\/p>\n<pre><code class=\"cpp\">static const int kDaysInMonth[13] = {   0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; bool ValidateDateTime(const DateTime&amp; time) {   if (time.year &lt; 1 || time.year &gt; 9999 ||       time.month &lt; 1 || time.month &gt; 12 ||       time.day &lt; 1 || time.day &gt; 31 ||       time.hour &lt; 0 || time.hour &gt; 23 ||       time.minute &lt; 0 || time.minute &gt; 59 ||       time.second &lt; 0 || time.second &gt; 59) {     return false;   }   if (time.month == 2 &amp;&amp; IsLeapYear(time.year)) {     return time.month &lt;= kDaysInMonth[time.month] + 1;   } else {     return time.month &lt;= kDaysInMonth[time.month];   } }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0430\u043c\u0430\u044f \u00ab\u0434\u043e\u043b\u0433\u043e\u0438\u0433\u0440\u0430\u044e\u0449\u0430\u044f\u00bb \u0437\u0430\u0434\u0430\u0447\u043a\u0430 \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430. \u042d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Chromium \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u044f\u043c \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430 \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e 2018 \u0433\u043e\u0434\u0430. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 \u0445\u043e\u0434\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0434\u043e\u043a\u043b\u0430\u0434\u043e\u0432.<\/p>\n<pre><code class=\"cpp\">if (time.month == 2 &amp;&amp; IsLeapYear(time.year)) {   return time.month &lt;= kDaysInMonth[time.month] + 1;  \/\/ &lt;= day } else {   return time.month &lt;= kDaysInMonth[time.month];      \/\/ &lt;= day }<\/code><\/pre>\n<p>  \u0412 \u0442\u0435\u043b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u043b\u043e\u043a\u0430 <i>If-else<\/i> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0432 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438. \u0412\u043c\u0435\u0441\u0442\u043e <i>time.day <\/i> \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0434\u0432\u0430\u0436\u0434\u044b \u043f\u043e \u043e\u0448\u0438\u0431\u043a\u0435 \u0443\u043a\u0430\u0437\u0430\u043b <i>time.month<\/i>. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <i>true<\/i>. \u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0550\/\">31 \u0444\u0435\u0432\u0440\u0430\u043b\u044f<\/a>&#171;. \u041e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u043d\u0430 code review. \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.  <\/div>\n<\/div>\n<p>  <b>Unreal Engine bug<\/b><\/p>\n<pre><code class=\"cpp\">bool VertInfluencedByActiveBone(   FParticleEmitterInstance* Owner,   USkeletalMeshComponent* InSkelMeshComponent,   int32 InVertexIndex,   int32* OutBoneIndex = NULL);  void UParticleModuleLocationSkelVertSurface::Spawn(....) {   ....   int32 BoneIndex1, BoneIndex2, BoneIndex3;   BoneIndex1 = BoneIndex2 = BoneIndex3 = INDEX_NONE;    if(!VertInfluencedByActiveBone(         Owner, SourceComponent, VertIndex[0], &amp;BoneIndex1) &amp;&amp;      !VertInfluencedByActiveBone(         Owner, SourceComponent, VertIndex[1], &amp;BoneIndex2) &amp;&amp;       !VertInfluencedByActiveBone(         Owner, SourceComponent, VertIndex[2]) &amp;BoneIndex3)   {   .... }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>VertInfluencedByActiveBone()<\/i> \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u0431\u043b\u043e\u043a <i>if<\/i>. \u0423\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">if (!foo(....) &amp;&amp; !foo(....) &amp;&amp; !foo(....) &amp; arg)<\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u0418\u0437-\u0437\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u0442\u0440\u0435\u0442\u0438\u0439 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>VertInfluencedByActiveBone()<\/i> \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441 \u0442\u0440\u0435\u043c\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0447\u0435\u0442\u044b\u0440\u0435\u0445, \u0430 \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443 \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <i>&amp; <\/i> (\u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0435 \u0418, \u0441\u043b\u0435\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <i>VertInfluencedByActiveBone()<\/i> \u0442\u0438\u043f\u0430 <i>bool<\/i>, \u0441\u043f\u0440\u0430\u0432\u0430 \u2013 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>BoneIndex3<\/i>). \u041a\u043e\u0434 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u0434\u0430 (\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0437\u0430\u043f\u044f\u0442\u0430\u044f, \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u0441\u0442\u043e):<\/p>\n<pre><code class=\"cpp\">if(!VertInfluencedByActiveBone(       Owner, SourceComponent, VertIndex[0], &amp;BoneIndex1) &amp;&amp;    !VertInfluencedByActiveBone(       Owner, SourceComponent, VertIndex[1], &amp;BoneIndex2) &amp;&amp;     !VertInfluencedByActiveBone(       Owner, SourceComponent, VertIndex[2], &amp;BoneIndex3))<\/code><\/pre>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u043b\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0249\/\">\u0414\u043e\u043b\u0433\u043e\u0436\u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Unreal Engine 4<\/a>&#171;. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e\u0448\u0438\u0431\u043a\u0430 \u043e\u0437\u0430\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0430 \u043a\u0430\u043a \u00ab\u0421\u0430\u043c\u0430\u044f \u043a\u0440\u0430\u0441\u0438\u0432\u0430\u044f \u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a\u00bb. \u042f \u0441\u043e\u0433\u043b\u0430\u0441\u0435\u043d \u0441 \u0434\u0430\u043d\u043d\u044b\u043c \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435\u043c.  <\/div>\n<\/div>\n<p>  <b>Android bugs<\/b><\/p>\n<pre><code class=\"cpp\">void TagMonitor::parseTagsToMonitor(String8 tagNames) {   std::lock_guard&lt;std::mutex&gt; lock(mMonitorMutex);    \/\/ Expand shorthands   if (ssize_t idx = tagNames.find(\"3a\") != -1) {     ssize_t end = tagNames.find(\",\", idx);     char* start = tagNames.lockBuffer(tagNames.size());     start[idx] = '\\0';     ....   }   .... }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u0412 \u0443\u0441\u043b\u043e\u0432\u0438\u0438 \u0431\u043b\u043e\u043a\u0430 <i>if <\/i> \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043d \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439. \u041a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u0430\u043a, \u043a\u0430\u043a \u0437\u0430\u0434\u0443\u043c\u0430\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442:<\/p>\n<pre><code class=\"cpp\">if (ssize_t idx = (tagNames.find(\"3a\") != -1))<\/code><\/pre>\n<p>  \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>idx <\/i> \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0 \u0438\u043b\u0438 1, \u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u043e\u0439. \u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u0434\u0430:<\/p>\n<pre><code class=\"cpp\">ssize_t idx = tagNames.find(\"3a\"); if (idx != -1)<\/code><\/pre>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0579\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b Android, \u0438\u043b\u0438 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u0435\u043d<\/a>&#171;.  <\/div>\n<\/div>\n<p>  \u0418 \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u043a\u0430 \u043d\u0430 \u043f\u043e\u0438\u0441\u043a \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 Android:<\/p>\n<pre><code class=\"cpp\">typedef int32_t  GGLfixed; GGLfixed gglFastDivx(GGLfixed n, GGLfixed d) {   if ((d&gt;&gt;24) &amp;&amp; ((d&gt;&gt;24)+1)) {     n &gt;&gt;= 8;     d &gt;&gt;= 8;   }   return gglMulx(n, gglRecip(d)); }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 <i>(d &gt;&gt; 24) + 1<\/i>. <\/p>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0445\u043e\u0442\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e 8 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>d<\/i> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0435\u0434\u0438\u043d\u0438\u0446\u044b, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0432\u0441\u0435 \u0431\u0438\u0442\u044b \u0441\u0440\u0430\u0437\u0443. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0445\u043e\u0442\u0435\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0441\u0442\u0430\u0440\u0448\u0435\u043c \u0431\u0430\u0439\u0442\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u044e\u0431\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u043e\u0442 0x00 \u0438 0xFF. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b, \u0447\u0442\u043e \u0441\u0442\u0430\u0440\u0448\u0438\u0435 \u0431\u0438\u0442\u044b \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u044b\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (d&gt;&gt;24). \u0414\u0430\u043b\u0435\u0435 \u043e\u043d \u0441\u0434\u0432\u0438\u0433\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u0448\u0438\u0435 \u0432\u043e\u0441\u0435\u043c\u044c \u0431\u0438\u0442 \u0432 \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0430\u0439\u0442. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0431\u0438\u0442 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u0438\u0442\u0430\u0445. \u0422\u043e \u0435\u0441\u0442\u044c \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f d \u0440\u0430\u0432\u043d\u0430 0b11111111&#8217;00000000&#8217;00000000&#8217;00000000, \u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u0434\u0432\u0438\u0433\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0b11111111&#8217;11111111&#8217;11111111&#8217;11111111. \u041f\u0440\u0438\u0431\u0430\u0432\u0438\u0432 1 \u043a \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e 0xFFFFFFFF \u0442\u0438\u043f\u0430 <i>int<\/i>, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c 0 (-1+1=0). \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c <i>((d&gt;&gt;24)+1)<\/i> \u043e\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u043d\u0435 \u0432\u0441\u0435 \u0441\u0442\u0430\u0440\u0448\u0438\u0435 \u0432\u043e\u0441\u0435\u043c\u044c \u0431\u0438\u0442 \u0440\u0430\u0432\u043d\u044b 1.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u0441\u0434\u0432\u0438\u0433\u0435 \u0441\u0442\u0430\u0440\u0448\u0438\u0439 \u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0431\u0438\u0442 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u00ab\u0440\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00bb. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0433\u043e\u0432\u043e\u0440\u0438\u0442: \u00abThe value of E1 &gt;&gt; E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type or if E1 has a signed type and a non-negative value, the value of the result is the integral part of the quotient of E1\/2^E2. <i>If E1 has a signed type and a negative value, the resulting value is implementation-defined<\/i>\u00bb.<\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0437\u0430\u0432\u0438\u0441\u044f\u0449\u0435\u0433\u043e \u043e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (implementation-defined behavior). \u041a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u2014 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430. \u041f\u043e\u0441\u043b\u0435 \u0441\u0434\u0432\u0438\u0433\u0430 \u0432 \u0441\u0442\u0430\u0440\u0448\u0438\u0445 \u0431\u0438\u0442\u0430\u0445 \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0443\u043b\u0438, \u0438 \u0442\u043e\u0433\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f <i>((d&gt;&gt;24)+1)<\/i> \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043b\u0438\u0447\u0435\u043d \u043e\u0442 0, \u0442\u043e \u0435\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c.<\/p>\n<p>  \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u043a\u0430. \u042d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u0430\u043a \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f, \u0431\u044b\u043b\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0579\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b Android, \u0438\u043b\u0438 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0438\u0434\u0435\u0430\u043b\u0435\u043d<\/a>&#171;.  <\/div>\n<\/div>\n<p>  <\/p>\n<h2>2019<\/h2>\n<p>  <\/p>\n<h3>\u0421++<\/h3>\n<p>  <b>\u00ab\u0412\u043e \u0432\u0441\u0451\u043c \u0432\u0438\u043d\u043e\u0432\u0430\u0442 GCC\u00bb<\/b><\/p>\n<pre><code class=\"cpp\">int foo(const unsigned char *s) {   int r = 0;   while(*s) {     r += ((r * 20891 + *s *200) | *s ^ 4 | *s ^ 3) ^ (r &gt;&gt; 1);     s++;   }   return r &amp; 0x7fffffff; }<\/code><\/pre>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u043f\u043e \u0432\u0438\u043d\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 GCC 8. \u0422\u0430\u043a \u043b\u0438 \u044d\u0442\u043e?<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434 \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0431\u0438\u0442\u043e\u0432\u043e\u0433\u043e \u0418 (&amp;). \u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>r<\/i> \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0443\u043c\u043c\u0430. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430. \u041f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>r<\/i> \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e, \u0438\u043d\u0430\u0447\u0435 \u044d\u0442\u043e \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c. \u0418\u0442\u0430\u043a, \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0430\u0437 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>r<\/i> \u043f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u0446\u0438\u043a\u043b\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f <i>r &amp; 0x7fffffff<\/i> \u0434\u043b\u044f \u0441\u0431\u0440\u043e\u0441\u0430 \u0437\u043d\u0430\u043a\u043e\u0432\u043e\u0433\u043e \u0431\u0438\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u043d\u0435\u0439 \u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>r<\/i>.<\/p>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0585\/\">\u0420\u0435\u043b\u0438\u0437 PVS-Studio 6.26<\/a>&#171;.  <\/div>\n<\/div>\n<p>  <b>QT bug<\/b><\/p>\n<pre><code class=\"cpp\">static inline const QMetaObjectPrivate *priv(const uint* data) { return reinterpret_cast&lt;const QMetaObjectPrivate*&gt;(data); }  bool QMetaEnum::isFlag() const {   const int offset = priv(mobj-&gt;d.data)-&gt;revision &gt;= 8 ? 2 : 1;   return mobj &amp;&amp; mobj-&gt;d.data[handle + offset] &amp; EnumIsFlag; }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u0421 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c <i>mobj <\/i> \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043d \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0430 \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f. \u041a\u043b\u0430\u0441\u0441\u0438\u043a\u0430.<\/p>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0584\/\">\u0422\u0440\u0435\u0442\u044c\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Qt 5 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio<\/a>&#171;.  <\/div>\n<\/div>\n<p>  <\/p>\n<h3>C#<\/h3>\n<p>  <b>Infer.NET bug<\/b><\/p>\n<pre><code class=\"cpp\">public static void    WriteAttribute(TextWriter writer,                  string name,                  object defaultValue,                   object value,                   Func&lt;object, string&gt; converter = null) {   if (   defaultValue == null &amp;&amp; value == null        || value.Equals(defaultValue))   {     return;   }   string stringValue = converter == null ? value.ToString() :                                             converter(value);   writer.Write($\"{name}=\\\"{stringValue}\\\" \"); }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u0412 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 <i>value.Equals(defaultValue)<\/i> \u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 <i>value<\/i>. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442 \u043f\u0440\u0438 \u0442\u0430\u043a\u0438\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043a\u043e\u0433\u0434\u0430 <i>defaultValue != null<\/i>, \u0430 <i>value == null<\/i>.<\/p>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0590\/\">\u041a\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u0440\u044f\u0447\u0443\u0442\u0441\u044f \u0432 \u043a\u043e\u0434\u0435 Infer.NET?<\/a>&#171;  <\/div>\n<\/div>\n<p>  <b>FastReport bug<\/b><\/p>\n<pre><code class=\"cpp\">public class FastString {   private const int initCapacity = 32;   private void Init(int iniCapacity)   { sb = new StringBuilder(iniCapacity); .... }   public FastString() { Init(initCapacity); }   public FastString(int iniCapacity) { Init(initCapacity); }   public StringBuilder StringBuilder =&gt; sb; } .... Console.WriteLine(new FastString(256).StringBuilder.Capacity);<\/code><\/pre>\n<p>  \u0427\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c? \u0427\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u0441 \u043a\u043b\u0430\u0441\u0441\u043e\u043c <i>FastString<\/i>?<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u041d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043e 32. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u0432 \u0438\u043c\u0435\u043d\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0432 \u043c\u0435\u0442\u043e\u0434 <i>Init <\/i>\u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435:<\/p>\n<pre><code class=\"cpp\">public FastString(int iniCapacity){ Init(initCapacity); }<\/code><\/pre>\n<p>  \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 <i>iniCapacity<\/i> \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432 \u043c\u0435\u0442\u043e\u0434 <i>Init<\/i> \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0443 <i>initCapacity<\/i>.<\/p>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0595\/\">\u0421\u0430\u043c\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043d\u0430 \u0434\u0438\u043a\u043e\u043c \u0437\u0430\u043f\u0430\u0434\u0435. \u0418 \u0433\u043e\u0440\u0441\u0442\u043a\u0430 \u0431\u0430\u0433\u043e\u0432 \u0432 \u043f\u0440\u0438\u0434\u0430\u0447\u0443&#8230;<\/a>&#171;  <\/div>\n<\/div>\n<p>  <b>Roslyn bug<\/b><\/p>\n<pre><code class=\"cpp\">private SyntaxNode GetNode(SyntaxNode root) {   var current = root;   ....   while (current.FullSpan.Contains(....))   {     ....     var nodeOrToken = current.ChildThatContainsPosition(....);     ....     current = nodeOrToken.AsNode();   }   .... }  public SyntaxNode AsNode() {   if (_token != null)   {     return null;   }      return _nodeOrParent; }<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u0412\u043e\u0437\u043c\u043e\u0436\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 <i>current <\/i> \u0432 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 <i>current.FullSpan.Contains(&#8230;.)<\/i>. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <i>current <\/i> \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u0430 <i>nodeOrToken.AsNode()<\/i>.<\/p>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0622\/\">\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 Roslyn<\/a>&#171;.  <\/div>\n<\/div>\n<p>  <b>Unity bug<\/b><\/p>\n<pre><code class=\"cpp\">.... staticFields = packedSnapshot.typeDescriptions                .Where(t =&gt;                        t.staticFieldBytes != null &amp;                        t.staticFieldBytes.Length &gt; 0)                .Select(t =&gt; UnpackStaticFields(t))                .ToArray() ....<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u0414\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430: \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <i>&amp;&amp; <\/i> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <i>&amp;<\/i>. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <i>t.staticFieldBytes.Length &gt; 0<\/i> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430, \u0434\u0430\u0436\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 <i>null<\/i> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <i>t.staticFieldBytes<\/i>, \u0447\u0442\u043e, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u043f\u043e \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435.<\/p>\n<p>  \u0412\u043f\u0435\u0440\u0432\u044b\u0435 \u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0431\u044b\u043b\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0423\/\">\u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445 Unity3D<\/a>&#171;.  <\/div>\n<\/div>\n<p>  <\/p>\n<h3>Java<\/h3>\n<p>  <b>IntelliJ IDEA bug<\/b><\/p>\n<pre><code class=\"cpp\">private static boolean checkSentenceCapitalization(@NotNull String value) {   List&lt;String&gt; words = StringUtil.split(value, \" \");   ....   int capitalized = 1;   ....   return capitalized \/ words.size() &lt; 0.2; \/\/ allow reasonable amount of                                            \/\/ capitalized words }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u043d\u043e \u0447\u0438\u0441\u043b\u043e \u0441\u043b\u043e\u0432 \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u043c\u0438 \u0431\u0443\u043a\u0432\u0430\u043c\u0438.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0441\u0442\u0438\u043d\u0443, \u0435\u0441\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 20% \u0441\u043b\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b. \u041d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f 0 \u0438\u043b\u0438 1. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0451\u0442 \u043b\u043e\u0436\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u0441\u043b\u043e\u0432\u0430 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b. \u0412 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u0440\u0438 \u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c\u0441\u044f 0, \u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0438\u0441\u0442\u0438\u043d\u0443.<\/p>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0603\/\">PVS-Studio \u0434\u043b\u044f Java<\/a>&#171;.  <\/div>\n<\/div>\n<p>  <b>SpotBugs bug<\/b><\/p>\n<pre><code class=\"cpp\">public static String getXMLType(@WillNotClose InputStream in) throws IOException {   ....   String s;   int count = 0;   while (count &lt; 4) {     s = r.readLine();     if (s == null) {       break;     }     Matcher m = tag.matcher(s);     if (m.find()) {       return m.group(1);     }   }   throw new IOException(\"Didn't find xml tag\");   .... }<\/code><\/pre>\n<p>  \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0432 \u0447\u0451\u043c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0438\u0441\u043a\u0430 xml-\u0442\u0435\u0433\u0430.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041e\u0442\u0432\u0435\u0442<\/b><\/p>\n<div class=\"spoiler_text\">\u0423\u0441\u043b\u043e\u0432\u0438\u0435 <i>count &lt; 4<\/i> \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0432\u0441\u0435\u0433\u0434\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <i>count<\/i> \u043d\u0435 \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0446\u0438\u043a\u043b\u0430. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043f\u043e\u0438\u0441\u043a xml-\u0442\u0435\u0433\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0435\u0440\u0432\u044b\u0445 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0441\u0442\u0440\u043e\u043a\u0430\u0445 \u0444\u0430\u0439\u043b\u0430, \u043d\u043e \u0438\u0437-\u0437\u0430 \u043e\u0448\u0438\u0431\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d \u0432\u0435\u0441\u044c \u0444\u0430\u0439\u043b.<\/p>\n<p>  \u042d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u043a\u0430\u043a \u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f, \u0431\u044b\u043b\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/www.viva64.com\/ru\/b\/0603\/\">PVS-Studio \u0434\u043b\u044f Java<\/a>&#171;.  <\/div>\n<\/div>\n<p>  \u041d\u0430 \u044d\u0442\u043e\u043c \u2013 \u0432\u0441\u0451. \u0416\u0434\u0451\u043c \u0432\u0430\u0441 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f\u0445. \u0418\u0449\u0438\u0442\u0435 \u0441\u0442\u0435\u043d\u0434 \u0441 \u0435\u0434\u0438\u043d\u043e\u0440\u043e\u0433\u043e\u043c. \u0412\u044b\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u043a\u0438 \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0437\u0430\u0434\u0430\u0440\u0438\u043c \u043f\u0440\u0438\u0437\u044b. \u0414\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0438!<\/p>\n<p><a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/476268\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c78\/30f\/70c\/c7830f70c5577c3d6704f254d7cad6a3.png\" align=\"left\"><\/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: Sergey Khrenov. <a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/476268\/\">Solutions to Bug-Finding Challenges Offered by the PVS-Studio Team at Conferences in 2018-2019<\/a>.<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d() } } }t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>      <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\/company\/pvs-studio\/blog\/476272\/\"> https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/476272\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/701\/9e4\/589\/7019e458975e9931a108882b6fd126a8.png\" alt=\"Picture 2\" align=\"left\"><\/p>\n<p>  \u041f\u0440\u0438\u0432\u0435\u0442! \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0441\u0435\u0437\u043e\u043d \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0439 2019 \u0433\u043e\u0434\u0430 \u0435\u0449\u0451 \u0432 \u0441\u0430\u043c\u043e\u043c \u0440\u0430\u0437\u0433\u0430\u0440\u0435, \u043c\u044b \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b\u0438 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u044f\u043c \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0442\u0435\u043d\u0434\u0430. \u041e\u0441\u0435\u043d\u044c 2019 \u0433\u043e\u0434\u0430 \u043c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0441 \u043d\u043e\u0432\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0437\u0430\u0434\u0430\u0447, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u043e\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u0435\u043a \u0437\u0430 2018 \u0433\u043e\u0434, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 2019. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0431\u044b\u043b\u0438 \u0432\u0437\u044f\u0442\u044b \u0438\u0437 \u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u0430 \u043b\u0438\u0441\u0442\u043e\u0432\u043a\u0438 \u0441 \u0437\u0430\u0434\u0430\u0447\u0430\u043c\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043b\u0438 \u0441\u0441\u044b\u043b\u043a\u0443 \u0438\u043b\u0438 QR-\u043a\u043e\u0434 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0441\u0442\u0430\u0442\u044c\u0435.  <\/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-294760","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/294760","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=294760"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/294760\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=294760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=294760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=294760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}