{"id":327193,"date":"2022-01-10T08:47:50","date_gmt":"2022-01-10T08:47:50","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=327193"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=327193","title":{"rendered":"<span>\u0422\u043e\u043f-10 \u043e\u0448\u0438\u0431\u043e\u043a, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 C#-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 \u0437\u0430 2021 \u0433\u043e\u0434<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0417\u0430 2021 \u0433\u043e\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 PVS-Studio \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0440\u044f\u0434 \u0441\u0442\u0430\u0442\u0435\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u0432 Open Source \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0413\u043e\u0434 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043a \u043a\u043e\u043d\u0446\u0443, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 10 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a. \u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430!<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"440\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3fb\/395\/151\/3fb39515175ba116c861afdf5d3b7c99.png\" data-width=\"780\"\/><figcaption><\/figcaption><\/figure>\n<h3>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041a\u0430\u043a \u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/534834\/\">\u0441\u0442\u0430\u0442\u044c\u0435 2020 \u0433\u043e\u0434\u0430<\/a>, \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u0438\u0441\u044c \u043f\u043e \u043c\u0435\u0441\u0442\u0430\u043c \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043a\u043e\u0434\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>\u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439, \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0438 \u0440\u0435\u0434\u043a\u043e\u0439;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c\u0438 (\u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438?).<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 C# \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0431\u044b\u043b\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u0435 \u0447\u0430\u0441\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043e\u0434\u043d\u0438\u043c\u0438 \u0438 \u0442\u0435\u043c\u0438 \u0436\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438. \u041a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a \u0432\u044b\u0448\u043b\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u044f \u0432\u0437\u044f\u043b \u0438\u0437 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0890\/\">DNN<\/a> \u0438 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0855\/\">PeachPie<\/a>.<\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043f\u043e\u0445\u043e\u0436\u0438 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u2013 \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u044b\u0434\u0430\u043d\u044b \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430\u043c\u0438!<\/p>\n<p>\u0421 \u0442\u044f\u0436\u0451\u043b\u044b\u043c \u0441\u0435\u0440\u0434\u0446\u0435\u043c \u044f \u0432\u044b\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u0438, \u043d\u043e \u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b, \u0447\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0435. \u0418\u043d\u043e\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u0442\u043e\u043f\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u044f\u0442\u0441\u044f \u043e\u0431\u0437\u043e\u0440\u044b \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/\">\u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438<\/a>. \u041a\u0442\u043e \u0437\u043d\u0430\u0435\u0442, \u043c\u043e\u0436\u0435\u0442, \u0432\u0430\u0441 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0438\u0442 \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435, \u043e \u0447\u0451\u043c \u044f \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b. \u0421\u043a\u0438\u0434\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u0442\u043e\u043f\u044b \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u2013 \u043c\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c :).<\/p>\n<h3>10-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0412\u0440\u0435\u043c\u044f \u0442\u0430\u043a \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c<\/h3>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0855\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 PeachPie<\/a>:<\/p>\n<pre><code class=\"cs\">using System_DateTime = System.DateTime;  internal static System_DateTime MakeDateTime(....) { .... }  public static long mktime(....) {   var zone = PhpTimeZone.GetCurrentTimeZone(ctx);   var local = MakeDateTime(hour, minute, second, month, day, year);    switch (daylightSaving)   {     case -1:       if (zone.IsDaylightSavingTime(local))         local.AddHours(-1);                   \/\/ &lt;=       break;     case 0:       break;     case 1:       local.AddHours(-1);                     \/\/ &lt;=       break;     default:       PhpException.ArgumentValueNotSupported(\"daylightSaving\", daylightSaving);       break;   }   return DateTimeUtils.UtcToUnixTimeStamp(TimeZoneInfo.ConvertTime(local,                                                                     ....)); } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f PVS-Studio:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3010\/\">V3010<\/a> The return value of function &#8216;AddHours&#8217; is required to be utilized. DateTimeFunctions.cs 1232<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3010\/\">V3010<\/a> The return value of function &#8216;AddHours&#8217; is required to be utilized. DateTimeFunctions.cs 1239<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u043f\u043e \u0441\u0443\u0442\u0438, \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0438 \u0440\u0435\u0448\u0438\u043b \u0438\u0445 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u0443\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u2013 \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0438 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u0440\u043e\u0434\u0435 AddHours \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u2013 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0421\u043b\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430 \u044d\u0442\u0430 \u043e\u043f\u043b\u043e\u0448\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/examples\/v3010\/\">\u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<\/a> \u0447\u0430\u0449\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u043d\u043e \u043f\u043e\u0440\u043e\u0439 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b &#171;\u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0445&#187; \u043c\u0435\u0442\u043e\u0434\u043e\u0432.<\/p>\n<h3>9-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0427\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0435\u0441\u0442\u044c, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041d\u0430 9-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043f\u0430\u043b\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0840\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 Ryujinx<\/a>:<\/p>\n<pre><code class=\"cs\">public uint this[int index] {   get   {     if (index == 0)     {       return element0;     }     else if (index == 1)     {       return element1;     }     else if (index == 2)     {       return element2;     }     else if (index == 2)   \/\/ &lt;=     {       return element3;     }      throw new IndexOutOfRangeException();   } } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430: <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3003\/\">V3003<\/a> The use of &#8216;if (A) {&#8230;} else if (A) {&#8230;}&#8217; pattern was detected. There is a probability of logical error presence. Check lines: 26, 30. ZbcSetTableArguments.cs 26<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0442\u0443\u0442 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043b\u0438\u0448\u044c \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0435 \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c &#8216;3&#8217;. \u041d\u0443 \u0430 \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0447\u0435\u0442, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0412\u0441\u0451 \u0431\u044b \u043d\u0438\u0447\u0435\u0433\u043e, \u043d\u043e \u0437\u0430\u0447\u0435\u043c \u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u0435\u043d \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u0431\u043b\u043e\u043a \u0441 <em>element3<\/em>?<\/p>\n<p>\u0423\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u043c\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0447\u0438\u0441\u0435\u043b 0, 1, 2 \u2013 \u0447\u0430\u0441\u0442\u044b\u0435 \u0433\u043e\u0441\u0442\u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u041f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u0434\u0430\u0436\u0435 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0446\u0435\u043b\u0430\u044f <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/cpp\/0713\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u2013 \u0432\u0441\u0435\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043a \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044e. \u041d\u0443 \u0430 \u043c\u044b \u0438\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h3>8-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 Debug.WriteLine<\/h3>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u044f \u0432\u0437\u044f\u043b \u0438\u0437 \u0440\u0430\u043d\u0435\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0855\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e PeachPie<\/a>. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043d\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u043a\u043e\u0434, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u0439:<\/p>\n<pre><code class=\"cs\">public static bool mail(....) {   \/\/ to and subject cannot contain newlines, replace with spaces   to = (to != null) ? to.Replace(\"\\r\\n\", \" \").Replace('\\n', ' ') : \"\";   subject = (subject != null) ? subject.Replace(\"\\r\\n\", \" \").Replace('\\n', ' ')                               : \"\";    Debug.WriteLine(\"MAILER\",                   \"mail('{0}','{1}','{2}','{3}')\",                   to,                   subject,                   message,                    additional_headers);    var config = ctx.Configuration.Core;      .... } <\/code><\/pre>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0430 \u0447\u0442\u043e \u0436\u0435 \u0442\u0443\u0442 \u043d\u0435 \u0442\u0430\u043a? \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0441\u0451 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u0441\u044f\u043a\u0438\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 <em>Debug.WriteLine<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442&#8230; \u041c\u0438\u043d\u0443\u0442\u043e\u0447\u043a\u0443! \u0410 \u043a\u0430\u043a\u0438\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442?<\/p>\n<p>\u0427\u0442\u043e \u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 Debug.WriteLine:<\/p>\n<pre><code class=\"cs\">public static void WriteLine(string format, params object[] args);<\/code><\/pre>\n<p>\u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c. \u0412 \u043a\u043e\u0434\u0435 \u0436\u0435 \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f &#171;MAILER&#187;, \u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0443\u0436\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 <em>args<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438 \u043d\u0430 \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442.<\/p>\n<p>PVS-Studio \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b: <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3025\/\">V3025<\/a>: Incorrect format. A different number of format items is expected while calling &#8216;WriteLine&#8217; function. Arguments not used: 1st, 2nd, 3rd, 4th, 5th. Mail.cs 25<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e &#171;MAILER&#187; \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f\u0432\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c :(.<\/p>\n<h3>7-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0412\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0432\u043e\u043f\u0440\u043e\u0441<\/h3>\n<p>\u041d\u0430 7-\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0432\u043d\u043e\u0432\u044c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0855\/\">PeachPie<\/a>.<\/p>\n<p>\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0443\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 <em>null<\/em>. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438, \u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c (\u0433\u0434\u0435 \u043e\u043d\u0430 \u0432\u0441\u0451 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c <em>null<\/em>) \u2013 \u0437\u0430\u0431\u044b\u043b\u0438 \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u043c. \u0418 \u0442\u0443\u0442 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0433\u0430\u0434\u0430\u0442\u044c, \u0431\u044b\u043b\u0430 \u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043b\u0438\u0448\u043d\u0435\u0439 \u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 \u2013 \u043a\u043e\u0435-\u0433\u0434\u0435 \u0435\u0451 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 <em>null<\/em> \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u043e\u0434\u0435 \u043d\u0438\u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/csharp\/language-reference\/operators\/member-access-operators\">null-conditional \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440<\/a>:<\/p>\n<pre><code class=\"cs\">public static string get_parent_class(....) {   if (caller.Equals(default))   {     return null;   }    var tinfo = Type.GetTypeFromHandle(caller)?.GetPhpTypeInfo();   return tinfo.BaseType?.Name; } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3105\/\">V3105<\/a>: The &#8216;tinfo&#8217; variable was used after it was assigned through null-conditional operator. NullReferenceException is possible. Objects.cs 189<\/p>\n<p>\u041f\u043e \u043c\u043d\u0435\u043d\u0438\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0432\u044b\u0437\u043e\u0432 <em>Type.GetTypeFromHandle(caller)<\/em> \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c <em>null<\/em> \u2013 \u043e\u0442\u0442\u043e\u0433\u043e \u043e\u043d \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b &#171;?.&#187; \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 <em>GetPhpTypeInfo<\/em>. \u0421\u0443\u0434\u044f \u043f\u043e <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/api\/system.type.gettypefromhandle?view=net-5.0\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>, \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0414\u0430, &#171;?.&#187; \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b\u0437\u043e\u0432 <em>GetTypeFromHandle<\/em> \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0435\u0440\u043d\u0451\u0442 <em>null<\/em>, \u0442\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <em>tinfo<\/em> \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d <em>null<\/em>. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 BaseType \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044f \u043a\u043e\u0434, \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u0433\u043e &#171;?&#187;: <em>return tinfo<\/em><strong>?<\/strong>.BaseType?.Name;<\/p>\n<p>\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u043e\u0433\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043e\u043d\u0438 \u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043e\u0442\u043f\u0438\u0441\u0430\u043b\u0438 \u0438\u043c \u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445. \u0412\u043c\u0435\u0441\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 <em>null<\/em> \u043e\u043d\u0438 \u0440\u0435\u0448\u0438\u043b\u0438 \u044f\u0432\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 <em>GetTypeFromHandle<\/em> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <em>null<\/em>:<\/p>\n<pre><code class=\"cs\">public static string get_parent_class(....) {   if (caller.Equals(default))   {     return null;   }      \/\/ cannot be null; caller is either default or an invalid handle   var t =    Type.GetTypeFromHandle(caller)            ?? throw new ArgumentException(\"\", nameof(caller));    var tinfo = t.GetPhpTypeInfo();   return tinfo.BaseType?.Name; } <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u043a\u043e\u0434 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e <a href=\"https:\/\/github.com\/peachpiecompiler\/peachpie\/blob\/184db15f049af5b8ce132581f96d47a5290f5467\/src\/Peachpie.Library\/Objects.cs\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<h3>6-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041d\u0435\u0434\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043b\u0438\u043b\u0430\u0441\u044c \u0446\u0435\u043b\u044b\u0439 \u0434\u0435\u043d\u044c<\/h3>\n<p>\u041f\u043e\u0440\u043e\u0439 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0431\u0443\u0434\u0442\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f. \u0418\u043d\u043e\u0439 \u0440\u0430\u0437 \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0448\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0448\u043b\u0430 \u0446\u0435\u043b\u0430\u044f \u043d\u0435\u0434\u0435\u043b\u044f, \u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435  \u2013 \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0434\u0435\u043d\u044c. \u0427\u0442\u043e \u0436, \u043d\u0430 6-\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0443 \u043d\u0430\u0441 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0890\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e DotNetNuke<\/a>, \u0432\u044b\u0434\u0430\u043d\u043d\u043e\u0435 \u043d\u0430 \u043a\u043e\u0434, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0434\u0435\u043d\u044c:<\/p>\n<pre><code class=\"cs\">private static DateTime CalculateTime(int lapse, string measurement) {   var nextTime = new DateTime();   switch (measurement)   {     case \"s\":       nextTime = DateTime.Now.AddSeconds(lapse);       break;     case \"m\":       nextTime = DateTime.Now.AddMinutes(lapse);       break;     case \"h\":       nextTime = DateTime.Now.AddHours(lapse);       break;     case \"d\":       nextTime = DateTime.Now.AddDays(lapse);   \/\/ &lt;=       break;     case \"w\":        nextTime = DateTime.Now.AddDays(lapse);   \/\/ &lt;=       break;     case \"mo\":       nextTime = DateTime.Now.AddMonths(lapse);       break;     case \"y\":       nextTime = DateTime.Now.AddYears(lapse);       break;   }   return nextTime; } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3139\/\">V3139<\/a> Two or more case-branches perform the same actions. DotNetNuke.Tests.Core PropertyAccessTests.cs 118<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <em>DateTime<\/em>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0441\u043b\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e. \u041d\u043e \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0431\u0443\u043a\u0432\u0430 &#8216;w&#8217;, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u043a \u0431\u044b \u043d\u0430\u043c\u0435\u043a\u0430\u0435\u0442 \u043d\u0430 \u0441\u043b\u043e\u0432\u043e &#8216;week&#8217;, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 &#8216;d&#8217;. \u041f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u0442\u0443 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0437\u0430\u0432\u0442\u0440\u0430\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c!<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c, \u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0418 \u0432\u0441\u0451 \u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u0434 \u0432\u0435\u0442\u0432\u0435\u0439 \u0434\u043b\u044f &#171;d&#187; \u0438 &#171;w&#187; \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 <em>AddWeeks<\/em> \u0432 \u0442\u0438\u043f\u0435 <em>DateTime<\/em> \u043d\u0435\u0442, \u043d\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c 7 \u0434\u043d\u0435\u0439 :).<\/p>\n<h3>5-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438 null<\/h3>\n<p>\u041d\u0430 5-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0435\u0449\u0451 \u043e\u0434\u043d\u043e \u0438\u0437 \u043c\u043e\u0438\u0445 \u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0855\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 PeachPie<\/a>. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u043c \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438 \u043f\u0440\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u0442\u0443\u0442 \u043e\u0448\u0438\u0431\u043a\u0430.<\/p>\n<pre><code class=\"cs\">public static bool IsAutoloadDeprecated(Version langVersion) {   \/\/ >= 7.2   return    langVersion != null           &amp;&amp;    langVersion.Major > 7              || (langVersion.Major == 7 &amp;&amp; langVersion.Minor >= 2); } <\/code><\/pre>\n<p>\u0412 \u0447\u0451\u043c \u0436\u0435 \u0442\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430?<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/18d\/14b\/57b\/18d14b57ba145ad3410ffc4739698a8a.png\" data-width=\"412\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0432\u0430\u043c \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u043e \u0442\u0440\u0443\u0434\u0430 \u043d\u0430\u0439\u0442\u0438 \u0432 \u0442\u043e\u043c \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u043e\u0448\u0438\u0431\u043a\u0443. \u042d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0442\u0430\u043c \u0435\u0441\u0442\u044c :). \u0414\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0432\u0430\u0441 \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044e, \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u0430\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432:<\/p>\n<pre><code class=\"cs\">public static bool IsAutoloadDeprecated(Version langVersion) {   \/\/ >= 7.2   return    langVersion != null &amp;&amp; langVersion.Major > 7           || (langVersion.Major == 7 &amp;&amp; langVersion.Minor >= 2); } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3080\/\">V3080<\/a>: Possible null dereference. Consider inspecting &#8216;langVersion&#8217;. AnalysisFacts.cs 20<\/p>\n<p>\u041a\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <em>langVersion<\/em> \u043d\u0435 \u0440\u0430\u0432\u0435\u043d <em>null<\/em>. \u0421\u0442\u0430\u043b\u043e \u0431\u044b\u0442\u044c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u043b, \u0447\u0442\u043e <em>null<\/em> \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u043d \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435. \u0421\u043f\u0430\u0441\u0430\u0435\u0442 \u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430?<\/p>\n<p>\u0423\u0432\u044b, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f langVersion \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u0430 <em>null<\/em>, \u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u043e <em>false<\/em>. \u041f\u0440\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u0436\u0435 \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u043f\u0443\u0442\u0430\u043b\u0438 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u043b\u0438\u0431\u043e \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0441\u043a\u043e\u0431\u043a\u0443 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u041a\u0441\u0442\u0430\u0442\u0438, \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u0430\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 (\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0438\u0442\u044c), \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0442 \u2013 \u043c\u044b <a href=\"https:\/\/github.com\/peachpiecompiler\/peachpie\/issues\/977\">\u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438<\/a> \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445, \u0438 \u043e\u043d\u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0432\u043d\u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u041d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <em>IsAutoloadDeprecated<\/em> \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c <a href=\"https:\/\/github.com\/peachpiecompiler\/peachpie\/blob\/17cbde79f7d7367da8277f36a4203ace34fae16f\/src\/Peachpie.CodeAnalysis\/FlowAnalysis\/AnalysisFacts.cs\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<h3>4-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b<\/h3>\n<p>\u041c\u044b \u043f\u043e\u0447\u0442\u0438 \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u043a \u0444\u0438\u043d\u0430\u043b\u0438\u0441\u0442\u0430\u043c, \u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c\u0438 \u2013 4-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0898\/\">\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Umbraco<\/a>. \u0427\u0442\u043e \u0436\u0435 \u0442\u0443\u0442 \u0443 \u043d\u0430\u0441?<\/p>\n<pre><code class=\"cs\">public ActionResult&lt;PagedResult&lt;EntityBasic>> GetPagedChildren(....                                                                int pageNumber,                                                                ....) {   if (pageNumber &lt;= 0)   {     return NotFound();   }   ....   if (objectType.HasValue)   {     if (id == Constants.System.Root &amp;&amp;         startNodes.Length > 0 &amp;&amp;         startNodes.Contains(Constants.System.Root) == false &amp;&amp;         !ignoreUserStartNodes)     {       if (pageNumber > 0)  \/\/ &lt;=       {         return new PagedResult&lt;EntityBasic>(0, 0, 0);       }       IEntitySlim[] nodes = _entityService.GetAll(objectType.Value,                                                    startNodes).ToArray();       if (nodes.Length == 0)       {         return new PagedResult&lt;EntityBasic>(0, 0, 0);       }        if (pageSize &lt; nodes.Length)       {         pageSize = nodes.Length; \/\/ bah       }        var pr = new PagedResult&lt;EntityBasic>(nodes.Length, pageNumber, pageSize)       {         Items = nodes.Select(_umbracoMapper.Map&lt;EntityBasic>)       };       return pr;     }   } } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3022\/\">V3022<\/a> Expression &#8216;pageNumber > 0&#8217; is always true. EntityController.cs 625<\/p>\n<p>\u0418\u0442\u0430\u043a, <em>pageNumber<\/em> \u2013 \u044d\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430. \u0415\u0441\u043b\u0438 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e 0, \u0442\u043e \u043c\u044b \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e <em>pageNumber<\/em> \u0431\u043e\u043b\u044c\u0448\u0435 0.<\/p>\n<p>\u0412\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u2013 \u0430 \u043a\u0430\u043a\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 <em>pageNumber<\/em>, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f <em>pageNumber &lt;= 0<\/em> \u0438 <em>pageNumber > 0<\/em> \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043b\u043e\u0436\u043d\u044b\u043c\u0438?<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"459\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/91c\/211\/d07\/91c211d07b7fc64c9c488e2dabb4e64b.png\" data-width=\"304\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 <em>pageNumber &lt;= 0<\/em> \u0432\u044b\u0434\u0430\u043b\u0430 <em>false<\/em>, \u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <em>pageNumber > 0<\/em> \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u043e. \u0421\u0442\u0440\u0430\u0448\u043d\u043e \u043b\u0438 \u044d\u0442\u043e? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0434\u0451\u0442 \u043f\u043e\u0441\u043b\u0435 always-true \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438:<\/p>\n<pre><code class=\"cs\">if (pageNumber > 0) {   return new PagedResult&lt;EntityBasic>(0, 0, 0); }  IEntitySlim[] nodes = _entityService.GetAll(objectType.Value,                                              startNodes).ToArray(); if (nodes.Length == 0) {   return new PagedResult&lt;EntityBasic>(0, 0, 0); }  if (pageSize &lt; nodes.Length) {   pageSize = nodes.Length; \/\/ bah }  var pr = new PagedResult&lt;EntityBasic>(nodes.Length, pageNumber, pageSize) {   Items = nodes.Select(_umbracoMapper.Map&lt;EntityBasic>) }; return pr; <\/code><\/pre>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0434\u0430\u0451\u0442 <em>true<\/em>, \u0442\u043e \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0451\u043d \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430. \u0410 \u0447\u0442\u043e \u0436\u0435 \u0441 \u043a\u043e\u0434\u043e\u043c \u043d\u0438\u0436\u0435? \u0412\u0440\u043e\u0434\u0435 \u043a\u0430\u043a \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u0443\u0447\u0443 \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430!<\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u041b\u043e\u0433\u0438\u0447\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 <em>pageNumber \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u0435\u043d 0<\/em>, \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2013 <em>NotFound()<\/em>. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0435\u0441\u043b\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0431\u043e\u043b\u044c\u0448\u0435 0, \u0442\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f&#8230; \u0414\u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0442\u043e\u0436\u0435 \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435, \u0447\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2013 <em>new PagedResult&lt;EntityBasic>(0, 0, 0)<\/em>. \u0410 \u043a\u0430\u043a \u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u0432\u044b\u0434\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442? \u041d\u0435\u044f\u0441\u043d\u043e :(.<\/p>\n<h3>3-\u044c\u0435 \u043c\u0435\u0441\u0442\u043e. \u0420\u0435\u0434\u0447\u0430\u0439\u0448\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430<\/h3>\n<p>\u0418\u0442\u0430\u043a, \u043c\u044b \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u043a \u0444\u0438\u043d\u0430\u043b\u0438\u0441\u0442\u0430\u043c. \u041d\u0430 3-\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3122\/\">V3122<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u043b\u0430 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 Open Source \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0418 \u0432\u043e\u0442, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432 2021 \u0433\u043e\u0434\u0443 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0890\/\">DotNetNuke<\/a> \u0438 \u043d\u0430\u0448\u043b\u0438 \u0446\u0435\u043b\u044b\u0445 2 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3122\/\">V3122<\/a>!<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0432\u0430\u0448\u0435\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e 3-\u0435 \u043c\u0435\u0441\u0442\u043e:<\/p>\n<pre><code class=\"cs\">public static string LocalResourceDirectory {   get   {     return \"App_LocalResources\";   } } private static bool HasLocalResources(string path) {   var folderInfo = new DirectoryInfo(path);    if (path.ToLowerInvariant().EndsWith(Localization.LocalResourceDirectory))   {     return true;   }   .... } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3122\/\">V3122<\/a> The &#8216;path.ToLowerInvariant()&#8217; lowercase string is compared with the &#8216;Localization.LocalResourceDirectory&#8217; mixed case string. Dnn.PersonaBar.Extensions LanguagesController.cs 644<\/p>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f path \u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435, \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u043e \u043e\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443, \u0437\u0430\u0432\u0435\u0434\u043e\u043c\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 \u2013 &#171;App_LocalResources&#187; (\u043b\u0438\u0442\u0435\u0440\u0430\u043b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u0438\u0437 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 LocalResourceDirectory). \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0442\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <em>false,<\/em> \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0441\u0451 \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>\u042d\u0442\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043c\u043d\u0435, \u0447\u0442\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b \u043e\u0448\u0438\u0431\u043e\u043a \u043c\u044b \u043d\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438, \u0432\u0441\u0435\u0433\u0434\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438\u0441\u044c \u0447\u0442\u043e-\u0442\u043e, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u044c. \u0418\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435 :).<\/p>\n<h3>2-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0427\u044c\u044f \u0441\u043e\u0431\u0430\u043a\u0430 \u043f\u043e\u0442\u0435\u0440\u044f\u043b\u0430\u0441\u044c?<\/h3>\n<p>\u041d\u0430 \u0432\u0442\u043e\u0440\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0794\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0435 ILSpy<\/a>, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0439 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0433\u043e\u0434\u0430:<\/p>\n<pre><code class=\"cs\">private static void WriteSimpleValue(ITextOutput output,                                      object value, string typeName) {   switch (typeName)   {     case \"string\":       output.Write(  \"'\"                    + DisassemblerHelpers                       .EscapeString(value.ToString())                       .Replace(\"'\", \"\\'\")                   \/\/ &lt;=                    + \"'\");       break;     case \"type\":     ....   }   .... } <\/code><\/pre>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3038\/\">V3038<\/a> The &#8216;&#187;&#8216;&#187;&#8216; argument was passed to &#8216;Replace&#8217; method several times. It is possible that other argument should be passed instead. ICSharpCode.Decompiler ReflectionDisassembler.cs 772<\/p>\n<p>\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u0445\u043e\u0442\u0435\u043b \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0437\u0430\u043c\u0435\u043d\u0443 \u0432\u0441\u0435\u0445 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u0438\u0437 \u0434\u0432\u0443\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432: \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u043a\u043e\u0441\u043e\u0439 \u0447\u0435\u0440\u0442\u044b \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043a\u0430\u0432\u044b\u0447\u043a\u0438. \u0423\u0432\u044b, \u043d\u043e \u0438\u0437-\u0437\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043a\u0430\u0432\u044b\u0447\u043a\u043e\u0439, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b \u0442\u0443\u0442 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442.<\/p>\n<p>\u041d\u0430 \u0443\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 2 \u0438\u0434\u0435\u0438:<\/p>\n<ul>\n<li>\n<p>\u043f\u0435\u0440\u0435\u0434 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b &#8216;@&#8217;, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u0431\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c &#8216;\\&#8217; \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0435\u0440\u0435\u0434 &#8216;\\&#8217; \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0435 \u0441\u0442\u043e\u0438\u043b\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d &#8216;\\&#8217; \u2013 \u0442\u043e\u0433\u0434\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0431\u044b \u0432\u0442\u043e\u0440\u043e\u0439, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0432 \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0431\u044b \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d &#8216;\\&#8217;.<\/p>\n<\/li>\n<\/ul>\n<h3>1-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0421\u043a\u0440\u044b\u0442\u0430\u044f \u0443\u0433\u0440\u043e\u0437\u0430<\/h3>\n<p>\u0418\u0442\u0430\u043a, \u0432\u043e\u0442 \u043c\u044b \u0438 \u0434\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0434\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u044b\u043c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u043c \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c \u0437\u0430 \u0432\u0435\u0441\u044c 2021 \u0433\u043e\u0434. \u041e\u043d\u043e \u0438\u0437 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 \u0443\u0436\u0435 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0890\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 DotNetNuke<\/a>.<\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2013 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435, \u043d\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u0433\u043b\u0430\u0437 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435 \u0443\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0431\u0435\u0437 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437. \u0413\u0440\u043e\u043c\u043a\u0438\u0435 \u0441\u043b\u043e\u0432\u0430? \u041d\u0443 \u0447\u0442\u043e \u0436\u0435, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043e\u0442\u044b\u0441\u043a\u0430\u0442\u044c \u0442\u0443\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432\u043e\u043e\u0431\u0449\u0435 \u0435\u0441\u0442\u044c):<\/p>\n<pre><code class=\"cs\">private void ParseTemplateInternal(...., string templatePath, ....) {   ....   string path = Path.Combine(templatePath, \"admin.template\");   if (!File.Exists(path))   {     \/\/ if the template is a merged copy of a localized templte the     \/\/ admin.template may be one director up     path = Path.Combine(templatePath, \"..\\admin.template\");   }   .... } <\/code><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/3a5\/951\/7b6\/3a59517b6694f7cdfe109e287ec5563a.png\" data-width=\"370\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0443, \u043a\u0430\u043a \u0443\u0441\u043f\u0435\u0445\u0438? \u041d\u0435 \u0443\u0434\u0438\u0432\u043b\u044e\u0441\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0439\u0434\u0451\u0442\u0435 \u043e\u0448\u0438\u0431\u043a\u0443, \u043d\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u0439\u0442\u0435\u0441\u044c \u2013 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0430 \u0442\u0430\u043c \u0435\u0441\u0442\u044c, \u0442\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u0435\u0451 \u0442\u0430\u043c \u043d\u0435 \u0443\u0432\u0438\u0434\u0438\u0448\u044c. \u0410 \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0448\u043b\u0438 \u2013 \u0447\u0442\u043e \u0436, \u0442\u043e\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e. \u041d\u0435 \u0442\u0430\u043a-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a \u043a\u043e\u0434\u0443 \u0432\u043c\u0435\u0441\u0442\u043e &#8216;template&#8217; \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e &#8216;templte&#8217; :).<\/p>\n<p>\u0414\u0430 \u0448\u0443\u0447\u0443 \u044f, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u0432\u043b\u0438\u044f\u044e\u0449\u0430\u044f \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043a\u043e\u0434 \u0435\u0449\u0451 \u0440\u0430\u0437:<\/p>\n<pre><code class=\"cs\">private void ParseTemplateInternal(...., string templatePath, ....) {   ....   string path = Path.Combine(templatePath, \"admin.template\");   if (!File.Exists(path))   {     \/\/ if the template is a merged copy of a localized templte the     \/\/ admin.template may be one director up     path = Path.Combine(templatePath, \"..\\admin.template\");   }   .... } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3057\/\">V3057<\/a> The &#8216;Combine&#8217; function is expected to receive a valid path string. Inspect the second argument. DotNetNuke.Library PortalController.cs 3538<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0434\u0432\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0443\u0442\u0438 (\u0432\u044b\u0437\u043e\u0432 <em>Path.Combine<\/em>). \u0421 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0441\u0451 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0430 \u0432\u043e\u0442 \u0432\u0442\u043e\u0440\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0445\u043e\u0442\u0435\u043b\u0438 \u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b &#8216;admin.template&#8217; \u043d\u0435 \u0438\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <em>templatePath<\/em>, \u0430 \u0438\u0437 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439. \u041d\u043e \u0432\u043e\u0442 \u043d\u0435\u0437\u0430\u0434\u0430\u0447\u0430! \u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 &#8216;<em>..\\&#8217;<\/em>, \u043f\u0443\u0442\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c escape-\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c: ..<strong><em>\\a<\/em><\/strong>dmin.template.<\/p>\n<p>\u041d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435, \u043d\u0435 \u043f\u0440\u0430\u0432\u0434\u0430 \u043b\u0438? \u0418 \u0432\u0441\u0451 \u0436\u0435, \u043e\u043d\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0435. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0442\u0443\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u2013 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0435\u0440\u0435\u0434 \u0441\u0442\u0440\u043e\u043a\u043e\u0439 &#8216;@&#8217; \u0438\u043b\u0438 \u0441\u0442\u0430\u0432\u0438\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 &#8216;\\&#8217;.<\/p>\n<h3>0-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. &#171;lol&#187; versus Visual Studio<\/h3>\n<p>\u041d\u0443, \u0440\u0430\u0437 \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438\u043c\u0435\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 0, \u0442\u043e \u0438 \u0432 \u0442\u043e\u043f\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e!<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u0430\u044f, \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e \u0442\u043e\u043f\u0430. \u0418 \u0432\u0441\u0451 \u0436\u0435 \u043e\u043d\u0430 \u0441\u0442\u043e\u0438\u0442 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f, \u0432\u0435\u0434\u044c \u043e\u043d\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0430\u0441\u044c \u0432 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u043c \u0432\u0441\u0435\u043c \u043d\u0430\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u2013 Visual Studio 2022. \u0410 \u043f\u0440\u0438\u0447\u0451\u043c \u0442\u0443\u0442 \u0442\u043e\u0433\u0434\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437? \u0427\u0442\u043e \u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043c\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u0433\u0430 <a href=\"https:\/\/twitter.com\/_SergVasiliev_\">\u0421\u0435\u0440\u0433\u0435\u0439 \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432<\/a> \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043e \u043d\u0435\u0439 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 &#171;<a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0865\/\">\u041a\u0430\u043a Visual Studio 2022 \u0441\u044a\u0435\u043b\u0430 100 \u0413\u0431 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u0440\u0438 \u0447\u0451\u043c \u0437\u0434\u0435\u0441\u044c XML \u0431\u043e\u043c\u0431\u044b?<\/a>&#171;. \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u044f \u043b\u0438\u0448\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u043e \u043f\u0440\u043e\u0439\u0434\u0443 \u043f\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043c.<\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0432 Visual Studio 2022 Preview 3.1 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 XML-\u0444\u0430\u0439\u043b \u0438 IDE \u043d\u0430\u0447\u043d\u0451\u0442 \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044c, \u0430 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u0434\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0438 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435. \u041f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043d\u0438\u0436\u0435:<\/p>\n<pre><code class=\"cs\">&lt;?xml version=\"1.0\"?> &lt;!DOCTYPE lolz [  &lt;!ENTITY lol \"lol\">  &lt;!ELEMENT lolz (#PCDATA)>  &lt;!ENTITY lol1 \"&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;&amp;lol;\">  &lt;!ENTITY lol2 \"&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;&amp;lol1;\">  &lt;!ENTITY lol3 \"&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;&amp;lol2;\">  &lt;!ENTITY lol4 \"&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;&amp;lol3;\">  &lt;!ENTITY lol5 \"&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;&amp;lol4;\">  &lt;!ENTITY lol6 \"&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;&amp;lol5;\">  &lt;!ENTITY lol7 \"&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;&amp;lol6;\">  &lt;!ENTITY lol8 \"&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;&amp;lol7;\">  &lt;!ENTITY lol9 \"&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;&amp;lol8;\">  &lt;!ENTITY lol10 \"&amp;lol9;&amp;lol9;&amp;lol9;&amp;lol9;&amp;lol9;&amp;lol9;&amp;lol9;&amp;lol9;&amp;lol9;&amp;lol9;\">  &lt;!ENTITY lol11     \"&amp;lol10;&amp;lol10;&amp;lol10;&amp;lol10;&amp;lol10;&amp;lol10;&amp;lol10;&amp;lol10;&amp;lol10;&amp;lol10;\">  &lt;!ENTITY lol12     \"&amp;lol11;&amp;lol11;&amp;lol11;&amp;lol11;&amp;lol11;&amp;lol11;&amp;lol11;&amp;lol11;&amp;lol11;&amp;lol11;\">  &lt;!ENTITY lol13     \"&amp;lol12;&amp;lol12;&amp;lol12;&amp;lol12;&amp;lol12;&amp;lol12;&amp;lol12;&amp;lol12;&amp;lol12;&amp;lol12;\">  &lt;!ENTITY lol14     \"&amp;lol13;&amp;lol13;&amp;lol13;&amp;lol13;&amp;lol13;&amp;lol13;&amp;lol13;&amp;lol13;&amp;lol13;&amp;lol13;\">  &lt;!ENTITY lol15     \"&amp;lol14;&amp;lol14;&amp;lol14;&amp;lol14;&amp;lol14;&amp;lol14;&amp;lol14;&amp;lol14;&amp;lol14;&amp;lol14;\"> ]> &lt;lolz>&amp;lol15;&lt;\/lolz> <\/code><\/pre>\n<p>Visual Studio, \u043f\u043e \u0441\u0443\u0442\u0438, \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0443\u044f\u0437\u0432\u0438\u043c\u0430 \u043a <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/terms\/6545\/\">XEE<\/a>. \u041f\u044b\u0442\u0430\u044f\u0441\u044c \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u0438 lol-\u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438, IDE \u0437\u0430\u0432\u0438\u0441\u0430\u043b\u0430 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0430 \u043f\u043e\u0436\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u0438\u0433\u0430\u043d\u0442\u0441\u043a\u0438\u0435 \u043e\u0431\u044a\u0451\u043c\u044b \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043e\u043d\u0430 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u0437\u0430\u0431\u0438\u0440\u0430\u043b\u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0451, \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e :(.<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0440\u043e\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0438\u0437-\u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0441\u0435\u0440\u0430 XML. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0432 \u0442\u0430\u043a\u043e\u043c \u043f\u0430\u0440\u0441\u0435\u0440\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 DTD \u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u043b\u0438\u043c\u0438\u0442\u044b \u0434\u043b\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u043c \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u043c \u0444\u0430\u0439\u043b\u044b, \u043f\u0440\u0438\u0448\u0435\u0434\u0448\u0438\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043e\u0442\u043a\u0443\u0434\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a <a href=\"https:\/\/owasp.org\/www-community\/attacks\/Denial_of_Service\">DoS<\/a>.<\/p>\n<p>\u041e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0436\u0435 \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u043a\u043e\u0434\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437. \u041a\u0441\u0442\u0430\u0442\u0438, \u0432 PVS-Studio \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 XEE \u2013 <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v5615\/\">V5615<\/a>.<\/p>\n<p>\u041f\u0440\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u0443\u044e \u0432 Visual Studio \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 <a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Visual-Studio-2022-Preview-is-vulnurable\/1521704\">\u0431\u0430\u0433-\u0440\u0435\u043f\u043e\u0440\u0442<\/a>, \u0438 \u0432 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0443\u0436\u0435 \u043d\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442. \u041e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430, Microsoft! \ud83d\ude42<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0412 2021 \u0433\u043e\u0434\u0443 \u043c\u044b, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u043e\u0432 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0431\u044b\u043b\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439, \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 C#. \u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043f\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043a\u0440\u0430\u0439\u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u041a\u0443\u0434\u0430 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c 10 \u043b\u0443\u0447\u0448\u0438\u0445, \u0442\u0430\u043a \u043a\u0430\u043a \u043a\u043b\u0430\u0441\u0441\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p>\u0420\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0441\u0442 \u0442\u043e\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u0439 \u0435\u0449\u0451 \u0437\u0430\u0434\u0430\u0447\u043a\u043e\u0439 \u2013 \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043e\u0447\u0435\u043d\u044c \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u0441\u044c \u043a \u043d\u043e\u043c\u0435\u0440\u0430\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0432 \u0442\u043e\u043f\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e :). \u0422\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435, \u0432\u0441\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u043c\u043d\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u043d\u0435 \u0437\u0440\u044f \u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0432\u043e\u0451 \u0434\u0435\u043b\u043e.<\/p>\n<p>\u0410 \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u043b\u0438 \u0432\u044b, \u0447\u0442\u043e \u0432 \u043a\u043e\u0434\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0435\u0442 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c? \u0427\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0443\u0433\u0440\u043e\u0437\u044b \u043d\u0435 \u043f\u0440\u0438\u0442\u0430\u0438\u043b\u0438\u0441\u044c \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u043e\u043a? \u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0432 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u0434\u0430\u0436\u0435 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u043c\u0435\u043b\u043a\u0438\u0435 (\u0438 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c) \u043e\u0448\u0438\u0431\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0432\u0430\u043c <a href=\"https:\/\/pvs-studio.com\/pvs-studio\/try-free\/?utm_source=habr&amp;utm_medium=articles&amp;utm_content=top10_csharp&amp;utm_term=link_try-free\">\u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c PVS-Studio<\/a> \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<p>\u041d\u0443 \u0430 \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451, \u0441\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u043e\u0433\u043e \u0432\u0430\u043c \u041d\u043e\u0432\u043e\u0433\u043e \u0413\u043e\u0434\u0430 \u0438 \u0434\u043e \u043d\u043e\u0432\u044b\u0445 \u0432\u0441\u0442\u0440\u0435\u0447!<\/p>\n<h3>\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u0437\u0430 2021<\/h3>\n<p>\u041d\u0438\u0436\u0435 \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u043c\u0438 \u0437\u0438\u043c\u043d\u0438\u043c\u0438 \u0432\u0435\u0447\u0435\u0440\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u044b \u0447\u0442\u043e-\u0442\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 :).<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0885\/\">\u0421\u043b\u0430\u0432\u0430 \u0431\u0430\u0433-\u0440\u0435\u043f\u043e\u0440\u0442\u0430\u043c, \u0438\u043b\u0438 \u043a\u0430\u043a \u043c\u044b \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 80 \u0434\u043e 4 \u0447\u0430\u0441\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0876\/\">OWASP Top Ten \u0438 Software Composition Analysis (SCA)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0875\/\">\u041e\u0431\u0437\u043e\u0440 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0432 C# 10<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0860\/\">\u041e\u0431\u0437\u043e\u0440 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439 \u0432 C# 9<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0857\/\">XSS: \u0430\u0442\u0430\u043a\u0430 \u0438 \u0437\u0430\u0449\u0438\u0442\u0430 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f C# \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0844\/\">\u041f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 enum \u0432 C#<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0837\/\">\u041a\u0430\u043a WCF \u0441\u0430\u043c \u0441\u0435\u0431\u0435 \u0432 \u043d\u043e\u0433\u0443 \u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c TraceSource<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0832\/\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 ?. \u0432 foreach: \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 NullReferenceException, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0820\/\">\u041f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438 \u0432 \u0431\u0430\u0441\u0441\u0435\u0439\u043d\u0435 \u0441\u0442\u0440\u043e\u043a, \u0438\u043b\u0438 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u043f\u043e\u0432\u043e\u0434 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u0438\u043d\u0442\u0435\u0440\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 \u043a\u043b\u0430\u0441\u0441\u0430 String \u0432 C#<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0800\/\">\u0414\u043e\u043b\u0436\u0435\u043d \u043b\u0438 out-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430?<\/a><\/p>\n<\/li>\n<\/ul>\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: Nikita Lipilin. <a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/598209\/\">Top 10 bugs found in C# projects in 2021<\/a>.<\/p>\n<\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/598217\/\"> https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/598217\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0417\u0430 2021 \u0433\u043e\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 PVS-Studio \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0440\u044f\u0434 \u0441\u0442\u0430\u0442\u0435\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0441\u0442\u0438, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u0432 Open Source \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445. \u0413\u043e\u0434 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043a \u043a\u043e\u043d\u0446\u0443, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 10 \u0441\u0430\u043c\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a. \u041f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430!<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h3>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041a\u0430\u043a \u0438 \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/534834\/\">\u0441\u0442\u0430\u0442\u044c\u0435 2020 \u0433\u043e\u0434\u0430<\/a>, \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u0438\u0441\u044c \u043f\u043e \u043c\u0435\u0441\u0442\u0430\u043c \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043a\u043e\u0434\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430;<\/p>\n<\/li>\n<li>\n<p>\u044d\u0442\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0439, \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0438 \u0440\u0435\u0434\u043a\u043e\u0439;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c\u0438 (\u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438?).<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u0445 C# \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0431\u044b\u043b\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u043c\u0441\u044f \u0441\u043f\u0438\u0441\u043a\u0435 \u0447\u0430\u0441\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043e\u0434\u043d\u0438\u043c\u0438 \u0438 \u0442\u0435\u043c\u0438 \u0436\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438. \u041a\u0430\u043a-\u0442\u043e \u0442\u0430\u043a \u0432\u044b\u0448\u043b\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u044f \u0432\u0437\u044f\u043b \u0438\u0437 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0890\/\">DNN<\/a> \u0438 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0855\/\">PeachPie<\/a>.<\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043f\u043e\u0445\u043e\u0436\u0438 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430 \u2013 \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u044b\u0434\u0430\u043d\u044b \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430\u043c\u0438!<\/p>\n<p>\u0421 \u0442\u044f\u0436\u0451\u043b\u044b\u043c \u0441\u0435\u0440\u0434\u0446\u0435\u043c \u044f \u0432\u044b\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043e\u0447\u0435\u043d\u044c \u0434\u0430\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u0438, \u043d\u043e \u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b, \u0447\u0435\u043c \u0434\u0440\u0443\u0433\u0438\u0435. \u0418\u043d\u043e\u0439 \u0440\u0430\u0437 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0443\u0431\u0438\u0440\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u0442\u043e\u043f\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0440\u0430\u0432\u044f\u0442\u0441\u044f \u043e\u0431\u0437\u043e\u0440\u044b \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/\">\u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438<\/a>. \u041a\u0442\u043e \u0437\u043d\u0430\u0435\u0442, \u043c\u043e\u0436\u0435\u0442, \u0432\u0430\u0441 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0438\u0442 \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435, \u043e \u0447\u0451\u043c \u044f \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b. \u0421\u043a\u0438\u0434\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u0442\u043e\u043f\u044b \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u2013 \u043c\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c :).<\/p>\n<h3>10-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0412\u0440\u0435\u043c\u044f \u0442\u0430\u043a \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c<\/h3>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0855\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 PeachPie<\/a>:<\/p>\n<pre><code class=\"cs\">using System_DateTime = System.DateTime;  internal static System_DateTime MakeDateTime(....) { .... }  public static long mktime(....) {   var zone = PhpTimeZone.GetCurrentTimeZone(ctx);   var local = MakeDateTime(hour, minute, second, month, day, year);    switch (daylightSaving)   {     case -1:       if (zone.IsDaylightSavingTime(local))         local.AddHours(-1);                   \/\/ &lt;=       break;     case 0:       break;     case 1:       local.AddHours(-1);                     \/\/ &lt;=       break;     default:       PhpException.ArgumentValueNotSupported(\"daylightSaving\", daylightSaving);       break;   }   return DateTimeUtils.UtcToUnixTimeStamp(TimeZoneInfo.ConvertTime(local,                                                                     ....)); } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f PVS-Studio:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3010\/\">V3010<\/a> The return value of function &#8216;AddHours&#8217; is required to be utilized. DateTimeFunctions.cs 1232<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3010\/\">V3010<\/a> The return value of function &#8216;AddHours&#8217; is required to be utilized. DateTimeFunctions.cs 1239<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u043f\u043e \u0441\u0443\u0442\u0438, \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0438 \u0440\u0435\u0448\u0438\u043b \u0438\u0445 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u043a\u0443\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u2013 \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d\u0438 \u043f\u043e\u043f\u0440\u043e\u0441\u0442\u0443 \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u0440\u043e\u0434\u0435 AddHours \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u2013 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u0421\u043b\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430 \u044d\u0442\u0430 \u043e\u043f\u043b\u043e\u0448\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p><a href=\"https:\/\/pvs-studio.com\/ru\/blog\/examples\/v3010\/\">\u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<\/a> \u0447\u0430\u0449\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438, \u043d\u043e \u043f\u043e\u0440\u043e\u0439 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0438 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438. \u0412\u0441\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b &#171;\u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u0445&#187; \u043c\u0435\u0442\u043e\u0434\u043e\u0432.<\/p>\n<h3>9-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0427\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0435\u0441\u0442\u044c, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041d\u0430 9-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043f\u0430\u043b\u043e \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0840\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 Ryujinx<\/a>:<\/p>\n<pre><code class=\"cs\">public uint this[int index] {   get   {     if (index == 0)     {       return element0;     }     else if (index == 1)     {       return element1;     }     else if (index == 2)     {       return element2;     }     else if (index == 2)   \/\/ &lt;=     {       return element3;     }      throw new IndexOutOfRangeException();   } } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430: <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3003\/\">V3003<\/a> The use of &#8216;if (A) {&#8230;} else if (A) {&#8230;}&#8217; pattern was detected. There is a probability of logical error presence. Check lines: 26, 30. ZbcSetTableArguments.cs 26<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0442\u0443\u0442 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043b\u0438\u0448\u044c \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0435 \u0437\u0430\u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c &#8216;3&#8217;. \u041d\u0443 \u0430 \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0447\u0435\u0442, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0412\u0441\u0451 \u0431\u044b \u043d\u0438\u0447\u0435\u0433\u043e, \u043d\u043e \u0437\u0430\u0447\u0435\u043c \u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u0435\u043d \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u0431\u043b\u043e\u043a \u0441 <em>element3<\/em>?<\/p>\n<p>\u0423\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u0432\u044b\u0437\u0432\u0430\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430\u043c\u0438 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0447\u0438\u0441\u0435\u043b 0, 1, 2 \u2013 \u0447\u0430\u0441\u0442\u044b\u0435 \u0433\u043e\u0441\u0442\u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u041f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u043e\u0434\u0443 \u0434\u0430\u0436\u0435 \u0431\u044b\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0446\u0435\u043b\u0430\u044f <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/cpp\/0713\/\">\u0441\u0442\u0430\u0442\u044c\u044f<\/a> \u2013 \u0432\u0441\u0435\u043c \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043a \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044e. \u041d\u0443 \u0430 \u043c\u044b \u0438\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h3>8-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 Debug.WriteLine<\/h3>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u044f \u0432\u0437\u044f\u043b \u0438\u0437 \u0440\u0430\u043d\u0435\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u043e\u0439 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0855\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e PeachPie<\/a>. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043d\u043e \u0442\u0435\u043c, \u0447\u0442\u043e \u043a\u043e\u0434, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u0439:<\/p>\n<pre><code class=\"cs\">public static bool mail(....) {   \/\/ to and subject cannot contain newlines, replace with spaces   to = (to != null) ? to.Replace(\"\\r\\n\", \" \").Replace('\\n', ' ') : \"\";   subject = (subject != null) ? subject.Replace(\"\\r\\n\", \" \").Replace('\\n', ' ')                               : \"\";    Debug.WriteLine(\"MAILER\",                   \"mail('{0}','{1}','{2}','{3}')\",                   to,                   subject,                   message,                    additional_headers);    var config = ctx.Configuration.Core;      .... } <\/code><\/pre>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0430 \u0447\u0442\u043e \u0436\u0435 \u0442\u0443\u0442 \u043d\u0435 \u0442\u0430\u043a? \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0432\u0441\u0451 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u043f\u043b\u043e\u0445\u043e. \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u0441\u044f\u043a\u0438\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u043d\u0438\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 <em>Debug.WriteLine<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442&#8230; \u041c\u0438\u043d\u0443\u0442\u043e\u0447\u043a\u0443! \u0410 \u043a\u0430\u043a\u0438\u043c \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442?<\/p>\n<p>\u0427\u0442\u043e \u0436, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0437\u0433\u043b\u044f\u043d\u0435\u043c \u043d\u0430 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 Debug.WriteLine:<\/p>\n<pre><code class=\"cs\">public static void WriteLine(string format, params object[] args);<\/code><\/pre>\n<p>\u0412 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0441\u0438\u0433\u043d\u0430\u0442\u0443\u0440\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c. \u0412 \u043a\u043e\u0434\u0435 \u0436\u0435 \u043f\u0435\u0440\u0432\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f &#171;MAILER&#187;, \u0430 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0443\u0436\u0435 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 <em>args<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438 \u043d\u0430 \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442.<\/p>\n<p>PVS-Studio \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0441\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u044b: <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3025\/\">V3025<\/a>: Incorrect format. A different number of format items is expected while calling &#8216;WriteLine&#8217; function. Arguments not used: 1st, 2nd, 3rd, 4th, 5th. Mail.cs 25<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e &#171;MAILER&#187; \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u044f\u0432\u043d\u043e \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c :(.<\/p>\n<h3>7-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u0412\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0432\u043e\u043f\u0440\u043e\u0441<\/h3>\n<p>\u041d\u0430 7-\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u043c\u0438 \u0432\u043d\u043e\u0432\u044c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0855\/\">PeachPie<\/a>.<\/p>\n<p>\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0443\u043f\u0443\u0441\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 <em>null<\/em>. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0438, \u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c (\u0433\u0434\u0435 \u043e\u043d\u0430 \u0432\u0441\u0451 \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c <em>null<\/em>) \u2013 \u0437\u0430\u0431\u044b\u043b\u0438 \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u043c. \u0418 \u0442\u0443\u0442 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u0433\u0430\u0434\u0430\u0442\u044c, \u0431\u044b\u043b\u0430 \u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043b\u0438\u0448\u043d\u0435\u0439 \u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 \u2013 \u043a\u043e\u0435-\u0433\u0434\u0435 \u0435\u0451 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 <em>null<\/em> \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u043e\u0434\u0435 \u043d\u0438\u0436\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/csharp\/language-reference\/operators\/member-access-operators\">null-conditional \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440<\/a>:<\/p>\n<pre><code class=\"cs\">public static string get_parent_class(....) {   if (caller.Equals(default))   {     return null;   }    var tinfo = Type.GetTypeFromHandle(caller)?.GetPhpTypeInfo();   return tinfo.BaseType?.Name; } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3105\/\">V3105<\/a>: The &#8216;tinfo&#8217; variable was used after it was assigned through null-conditional operator. NullReferenceException is possible. Objects.cs 189<\/p>\n<p>\u041f\u043e \u043c\u043d\u0435\u043d\u0438\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430, \u0432\u044b\u0437\u043e\u0432 <em>Type.GetTypeFromHandle(caller)<\/em> \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c <em>null<\/em> \u2013 \u043e\u0442\u0442\u043e\u0433\u043e \u043e\u043d \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b &#171;?.&#187; \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 <em>GetPhpTypeInfo<\/em>. \u0421\u0443\u0434\u044f \u043f\u043e <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/api\/system.type.gettypefromhandle?view=net-5.0\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>, \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<p>\u0414\u0430, &#171;?.&#187; \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u043e\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u044b\u0437\u043e\u0432 <em>GetTypeFromHandle<\/em> \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0435\u0440\u043d\u0451\u0442 <em>null<\/em>, \u0442\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <em>tinfo<\/em> \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u0430\u043d <em>null<\/em>. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 BaseType \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u041f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044f \u043a\u043e\u0434, \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u0433\u043e &#171;?&#187;: <em>return tinfo<\/em><strong>?<\/strong>.BaseType?.Name;<\/p>\n<p>\u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043b\u0443\u0447\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u043c\u043e\u0433\u0443\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043e\u043d\u0438 \u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043c\u044b \u043e\u0442\u043f\u0438\u0441\u0430\u043b\u0438 \u0438\u043c \u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445. \u0412\u043c\u0435\u0441\u0442\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 <em>null<\/em> \u043e\u043d\u0438 \u0440\u0435\u0448\u0438\u043b\u0438 \u044f\u0432\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432 \u0442\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u043e\u0433\u0434\u0430 <em>GetTypeFromHandle<\/em> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <em>null<\/em>:<\/p>\n<pre><code class=\"cs\">public static string get_parent_class(....) {   if (caller.Equals(default))   {     return null;   }      \/\/ cannot be null; caller is either default or an invalid handle   var t =    Type.GetTypeFromHandle(caller)            ?? throw new ArgumentException(\"\", nameof(caller));    var tinfo = t.GetPhpTypeInfo();   return tinfo.BaseType?.Name; } <\/code><\/pre>\n<p>\u0414\u043b\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u043a\u043e\u0434 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e <a href=\"https:\/\/github.com\/peachpiecompiler\/peachpie\/blob\/184db15f049af5b8ce132581f96d47a5290f5467\/src\/Peachpie.Library\/Objects.cs\">\u0441\u0441\u044b\u043b\u043a\u0435<\/a>.<\/p>\n<h3>6-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041d\u0435\u0434\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043b\u0438\u043b\u0430\u0441\u044c \u0446\u0435\u043b\u044b\u0439 \u0434\u0435\u043d\u044c<\/h3>\n<p>\u041f\u043e\u0440\u043e\u0439 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0431\u0443\u0434\u0442\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f. \u0418\u043d\u043e\u0439 \u0440\u0430\u0437 \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0448\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0448\u043b\u0430 \u0446\u0435\u043b\u0430\u044f \u043d\u0435\u0434\u0435\u043b\u044f, \u0430 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435  \u2013 \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u0434\u0435\u043d\u044c. \u0427\u0442\u043e \u0436, \u043d\u0430 6-\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0443 \u043d\u0430\u0441 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438\u0437 <a href=\"https:\/\/pvs-studio.com\/ru\/blog\/posts\/csharp\/0890\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e DotNetNuke<\/a>, \u0432\u044b\u0434\u0430\u043d\u043d\u043e\u0435 \u043d\u0430 \u043a\u043e\u0434, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u0430 \u043d\u0435\u0434\u0435\u043b\u044e \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u0438\u043d \u0434\u0435\u043d\u044c:<\/p>\n<pre><code class=\"cs\">private static DateTime CalculateTime(int lapse, string measurement) {   var nextTime = new DateTime();   switch (measurement)   {     case \"s\":       nextTime = DateTime.Now.AddSeconds(lapse);       break;     case \"m\":       nextTime = DateTime.Now.AddMinutes(lapse);       break;     case \"h\":       nextTime = DateTime.Now.AddHours(lapse);       break;     case \"d\":       nextTime = DateTime.Now.AddDays(lapse);   \/\/ &lt;=       break;     case \"w\":        nextTime = DateTime.Now.AddDays(lapse);   \/\/ &lt;=       break;     case \"mo\":       nextTime = DateTime.Now.AddMonths(lapse);       break;     case \"y\":       nextTime = DateTime.Now.AddYears(lapse);       break;   }   return nextTime; } <\/code><\/pre>\n<p>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 PVS-Studio: <a href=\"https:\/\/pvs-studio.com\/ru\/docs\/warnings\/v3139\/\">V3139<\/a> Two or more case-branches perform the same actions. DotNetNuke.Tests.Core PropertyAccessTests.cs 118<\/p>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c <em>DateTime<\/em>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0441\u043b\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e. \u041d\u043e \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u0431\u0443\u043a\u0432\u0430 &#8216;w&#8217;, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u043a \u0431\u044b \u043d\u0430\u043c\u0435\u043a\u0430\u0435\u0442 \u043d\u0430 \u0441\u043b\u043e\u0432\u043e &#8216;week&#8217;, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 &#8216;d&#8217;. \u041f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u0442\u0443 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e \u043e\u0442 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0437\u0430\u0432\u0442\u0440\u0430\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c!<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0434\u0435\u0441\u044c, \u0432\u043e \u0432\u0441\u044f\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0418 \u0432\u0441\u0451 \u0436\u0435 \u043e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0447\u0442\u043e \u043a\u043e\u0434 \u0432\u0435\u0442\u0432\u0435\u0439 \u0434\u043b\u044f &#171;d&#187; \u0438 &#171;w&#187; \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 <em>AddWeeks<\/em> \u0432 \u0442\u0438\u043f\u0435 <em>DateTime<\/em> \u043d\u0435\u0442, \u043d\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c 7 \u0434\u043d\u0435\u0439 :).<\/p>\n<h3>5-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e. \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438 null<\/h3>\n<p>\u041d\u0430 5-\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b <\/p>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-327193","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327193","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=327193"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327193\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=327193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=327193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=327193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}