{"id":317508,"date":"2021-02-04T21:01:24","date_gmt":"2021-02-04T21:01:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=317508"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=317508","title":{"rendered":"\u0428\u043f\u0438\u043e\u043d \u043f\u043e\u0434 \u043f\u0440\u0438\u043a\u0440\u044b\u0442\u0438\u0435\u043c: \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 ILSpy \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0412 \u0431\u043b\u043e\u0433\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 PVS-Studio \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043e\u0434\u043d\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c PVS-Studio \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c &#8212; \u043a\u043b\u0430\u0441\u0441 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432. \u0414\u0430\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0438\u0440 \u0431\u043e\u043b\u0435\u0435 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u043d\u044b\u043c, \u0431\u044b\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 C# \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b ILSpy, \u043a\u0430\u043a \u0440\u0430\u0437 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u0439\u0441\u044f \u043a \u043b\u0430\u0433\u0435\u0440\u044e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0441\u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 PVS-Studio.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/90a\/d06\/b10\/90ad06b108ec6380912f2121c8992837.png\" width=\"354\" height=\"244\"><figcaption><\/figcaption><\/figure>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u0445\u043e\u0442\u044c \u0440\u0430\u0437 \u0432 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440. \u0426\u0435\u043b\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u0441 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438: \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u043f\u0440\u043e\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0447\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434 \u0432\u043b\u0438\u044f\u043d\u0438\u0435\u043c \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0431\u043b\u0438\u0437\u043a\u0438\u0439 \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0439 \u043d\u0430\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0412 \u043c\u0438\u0440\u0435 .NET&#8217;\u0430 \u043f\u0440\u0438 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0438 \u0441\u043b\u043e\u0432\u0430 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u0431\u044b\u0447\u043d\u043e \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0438\u043b\u0438 dotPeek \u0438\u043b\u0438 ILSpy. \u041f\u0440\u043e .NET Reflector \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u043c\u0435\u043d\u044c\u0448\u0435. \u041f\u0440\u0438\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u043a\u0430\u043a, \u043a\u043e\u0433\u0434\u0430 \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0443\u0437\u043d\u0430\u043b \u043f\u0440\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0443\u0442\u0438\u043b\u0438\u0442 \u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u0447\u0443\u0436\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u043b\u0430 \u043c\u044b\u0441\u043b\u044c \u043e \u0448\u043f\u0438\u043e\u043d\u0430\u0436\u0435. \u0418 \u0442\u0430\u043a\u0438\u0435 \u043c\u044b\u0441\u043b\u0438 \u0431\u044b\u043b\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u043c\u0435\u043d\u044f \u043e\u0434\u043d\u043e\u0433\u043e &#8212; \u043d\u0435 \u0441\u043f\u0440\u043e\u0441\u0442\u0430 \u0436\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 ILSpy \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u0432\u043e\u0451 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435. \u0418\u0442\u0430\u043a, \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441 \u043c\u043e\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043c\u0435\u0441\u0442\u0430, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 ILSpy. \u0417\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0448 \u0448\u043f\u0438\u043e\u043d \u0438, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, &#171;\u043f\u0440\u0438\u043a\u0440\u044b\u0442\u044c&#187; \u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c.<\/p>\n<p>\u041e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e ILSpy \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e. \u0421\u0440\u0435\u0434\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0443\u0434\u0438\u0439, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439. \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d \u0442\u043e\u0433\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u0433\u0440, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0434\u0432\u0438\u0436\u043a\u0438 Unity \u0438 Unreal Engine.<\/p>\n<p>\u042f \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 PVS-Studio \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 Unreal Engine, \u0430 \u0432\u043e\u0442 \u043f\u0440\u043e Unity \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u044e\u0449\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u0441\u043b\u044b\u0448\u0443 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0436\u0435. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u0440\u0435\u0434\u0438 Unity \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u0441\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044f \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 open-source \u0438\u0433\u0440\u044b, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0434\u0435\u0441\u044c \u0443 \u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 &#8212; \u044f \u043d\u0435 \u0441\u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a\u0443\u044e \u0438\u0433\u0440\u0443 (\u043c\u043e\u0436\u0435\u0442 \u0432\u044b, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u044e\u0431\u0435\u0437\u043d\u043e <a href=\"https:\/\/github.com\/viva64\/pvs-studio-check-list\">\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0434\u0435\u0438 \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a<\/a>?). \u041e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0438\u0433\u0440\u044b \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0438 \u043d\u0430 <a href=\"https:\/\/awesomeopensource.com\/projects\/unity\">\u043e\u0434\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435<\/a> \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f Unity \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f ILSpy (\u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u0433\u0430\u0434\u043a\u043e\u0439, \u043a\u0430\u043a \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u043f\u043e\u043f\u0430\u043b \u0432 \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a). \u041a \u0441\u043b\u043e\u0432\u0443, ILSpy \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0443\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 C# \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0421\u0442\u0440\u0430\u043d\u043d\u043e, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0443 \u043d\u0430\u0441 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041d\u0443 \u0447\u0442\u043e \u0436, \u0440\u0430\u0437 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 Unity \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u0442\u0430\u043a \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043d\u0430 \u0433\u043b\u0430\u0437\u0430 ILSpy.<\/p>\n<p>\u0412\u043e\u0442 \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 <a href=\"https:\/\/github.com\/icsharpcode\/ILSpy\">GitHub&#8217;\u0435<\/a>: ILSpy is the open-source .NET assembly browser and decompiler.<\/p>\n<p>\u042f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0442\u0430\u043a \u0434\u0430\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 &#8212; PVS-Studio \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c. \u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430.<\/p>\n<h3>\u0417\u0430\u043c\u0435\u043d\u0430 \u0431\u0435\u0437 \u0437\u0430\u043c\u0435\u043d\u044b<\/h3>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/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<pre><code>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>\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. \u0418\u0437-\u0437\u0430 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0448\u043b\u0430 \u043e\u0441\u0435\u0447\u043a\u0430 &#8212; \u0441\u0438\u043c\u0432\u043e\u043b &#171;&#8216;&#187; \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439. \u041c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f &#171;&#8216;&#187; \u0438 &#171;\\'&#187; \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043d\u0435\u0442 &#8212; \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043a\u0430\u0432\u044b\u0447\u043a\u0438. \u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u043f\u0430\u043b\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &#171;\\'&#187;, \u0442\u043e backslash \u043d\u0443\u0436\u043d\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c &#8216;@&#8217;: &#171;\\\\'&#187; \u0438\u043b\u0438 @&#187;\\'&#187;. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 <em>Replace<\/em> \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>Replace(\"'\", @\"\\'\") <\/code><\/pre>\n<h3>\u041f\u0440\u0430\u0432\u0434\u0430 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0434\u0430<\/h3>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 1<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3022\/\">V3022<\/a> Expression &#8216;negatedOp == BinaryOperatorType.Any&#8217; is always true. ICSharpCode.Decompiler CSharpUtil.cs <\/p>\n<pre><code>static Expression InvertConditionInternal(Expression condition) {   var bOp = (BinaryOperatorExpression)condition;    if (   (bOp.Operator == BinaryOperatorType.ConditionalAnd)       || (bOp.Operator == BinaryOperatorType.ConditionalOr))   {     ....   }   else if (   (bOp.Operator == BinaryOperatorType.Equality)            || (bOp.Operator == BinaryOperatorType.InEquality)             || (bOp.Operator == BinaryOperatorType.GreaterThan)            || (bOp.Operator == BinaryOperatorType.GreaterThanOrEqual)            || (bOp.Operator == BinaryOperatorType.LessThan)             || (bOp.Operator == BinaryOperatorType.LessThanOrEqual))   {     ....   }   else   {     var negatedOp = NegateRelationalOperator(bOp.Operator);     if (negatedOp == BinaryOperatorType.Any)                  \/\/ &lt;=       return new UnaryOperatorExpression(....);     bOp = (BinaryOperatorExpression)bOp.Clone();     bOp.Operator = negatedOp;     return bOp;   } } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>negatedOp<\/em> \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e <em>Any<\/em> \u0438\u0437 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f <em>BinaryOperatorType<\/em>. \u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 <em>NegateRelationalOperator<\/em>, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u0451 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<pre><code>public static BinaryOperatorType NegateRelationalOperator(BinaryOperatorType op) {   switch (op)   {     case BinaryOperatorType.GreaterThan:       return BinaryOperatorType.LessThanOrEqual;     case BinaryOperatorType.GreaterThanOrEqual:       return BinaryOperatorType.LessThan;     case BinaryOperatorType.Equality:       return BinaryOperatorType.InEquality;     case BinaryOperatorType.InEquality:       return BinaryOperatorType.Equality;     case BinaryOperatorType.LessThan:       return BinaryOperatorType.GreaterThanOrEqual;     case BinaryOperatorType.LessThanOrEqual:       return BinaryOperatorType.GreaterThan;     case BinaryOperatorType.ConditionalOr:       return BinaryOperatorType.ConditionalAnd;     case BinaryOperatorType.ConditionalAnd:       return BinaryOperatorType.ConditionalOr;   }   return BinaryOperatorType.Any; } <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 <em>NegateRelationalOperator<\/em> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>bOp.Operator<\/em> \u0438\u043c\u0435\u043b\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043c\u0435\u0442\u043a\u0435 <em>case<\/em>, \u0442\u043e \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>BinaryOperatorType.Any<\/em>. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 <em>NegateRelationalOperator<\/em> \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432 \u0432\u044b\u0448\u0435\u0441\u0442\u043e\u044f\u0449\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 <em>if<\/em> \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 <em>if else<\/em> \u0431\u044b\u043b\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u043a\u0430\u043a <em>false<\/em>. \u0410 \u0435\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445 <em>if<\/em> \u0438 <em>if<\/em> <em>else<\/em> \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0432\u0441\u0435 \u043c\u0435\u0442\u043a\u0438 <em>case<\/em> \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 <em>NegateRelationalOperator<\/em>. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 <em>NegateRelationalOperator<\/em> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>bOp.Operator<\/em> \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043d\u0438 \u043f\u043e\u0434 \u043e\u0434\u043d\u0443 \u043c\u0435\u0442\u043a\u0443 <em>case<\/em>, \u0438 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>BinaryOperatorType.Any<\/em>. \u0412\u043e\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e <em>negatedOp == BinaryOperatorType.Any<\/em> \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <em>true<\/em>, \u0438 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430. \u0412\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code>bOp = (BinaryOperatorExpression)bOp.Clone(); bOp.Operator = negatedOp; return bOp; <\/code><\/pre>\n<p>\u041a \u0441\u043b\u043e\u0432\u0443, \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u0432\u044b\u0434\u0430\u043b \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430 \u044d\u0442\u043e: <a href=\"https:\/\/www.viva64.com\/ru\/w\/v3142\/\">V3142<\/a> Unreachable code detected. It is possible that an error is present. ICSharpCode.Decompiler CSharpUtil.cs 81<\/p>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 2<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3022\/\">V3022<\/a> Expression &#8216;pt != null&#8217; is always true. ICSharpCode.Decompiler FunctionPointerType.cs 168<\/p>\n<pre><code>public override IType VisitChildren(TypeVisitor visitor) {   ....   IType[] pt = (r != ReturnType) ? new IType[ParameterTypes.Length] : null;   ....   if (pt == null)     return this;   else     return new FunctionPointerType(       module, CallingConvention, CustomCallingConventions,       r, ReturnIsRefReadOnly,       pt != null ? pt.ToImmutableArray() : ParameterTypes,    \/\/ &lt;=       ParameterReferenceKinds); } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e &#8212; \u0432\u0435\u0442\u043a\u0430 <em>else<\/em> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>pt<\/em> \u043d\u0435 \u0440\u0430\u0432\u043d\u0430 <em>null<\/em>. \u0417\u0430\u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>pt<\/em> \u043d\u0430 \u043d\u0435\u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e <em>null,<\/em> \u043c\u043d\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043d\u0435 \u0431\u044b\u043b\u043e \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f <em>if<\/em> <em>else<\/em> \u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <em>return<\/em>. \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u043c\u0435\u043b\u0430 \u0431\u044b \u0441\u043c\u044b\u0441\u043b, \u043d\u0443 \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0441\u0451 \u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u0443\u0431\u0440\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440:<\/p>\n<pre><code>public override IType VisitChildren(TypeVisitor visitor) {   ....   IType[] pt = (r != ReturnType) ? new IType[ParameterTypes.Length] : null;   ....   if (pt == null)     return this;   else     return new FunctionPointerType(       module, CallingConvention, CustomCallingConventions,       r, ReturnIsRefReadOnly,       pt.ToImmutableArray(), ParameterReferenceKinds); } <\/code><\/pre>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 3<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3022\/\">V3022<\/a> Expression &#8216;settings.LoadInMemory&#8217; is always true. ICSharpCode.Decompiler CSharpDecompiler.cs 394<\/p>\n<pre><code>static PEFile LoadPEFile(string fileName, DecompilerSettings settings) {   settings.LoadInMemory = true;   return new PEFile(     fileName,     new FileStream(fileName, FileMode.Open, FileAccess.Read),     streamOptions: settings.LoadInMemory ?                           \/\/ &lt;=       PEStreamOptions.PrefetchEntireImage : PEStreamOptions.Default,     metadataOptions: settings.ApplyWindowsRuntimeProjections ?          MetadataReaderOptions.ApplyWindowsRuntimeProjections :         MetadataReaderOptions.None   ); } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0439 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440. \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0443 <em>settings.LoadInMemory<\/em>, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u043e\u043c\u0443 \u0432 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>true<\/em>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0442\u044b \u043a\u0430\u0440\u0442\u0438\u043d\u044b \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043a\u043e\u0434 \u0433\u0435\u0442\u0442\u0435\u0440\u0430 \u0438 \u0441\u0435\u0442\u0442\u0435\u0440\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430:<\/p>\n<pre><code>public bool LoadInMemory {   get { return loadInMemory; }   set {       if (loadInMemory != value)       {         loadInMemory = value;         OnPropertyChanged();       }   } } <\/code><\/pre>\n<p>\u0414\u0443\u043c\u0430\u044e, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0431\u0435\u0437 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 &#8212; \u0442\u0443\u0442 \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0435\u0441\u0445\u0438\u0442\u0440\u043e\u0441\u0442\u043d\u043e.<\/p>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 4<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3022\/\">V3022<\/a> Expression &#8216;ta&#8217; is always not null. The operator &#8216;??&#8217; is excessive. ICSharpCode.Decompiler ParameterizedType.cs 354<\/p>\n<pre><code>public IType VisitChildren(TypeVisitor visitor) {   ....   if (ta == null)       return this;   else       return new ParameterizedType(g, ta ?? typeArguments);     \/\/ &lt;= } <\/code><\/pre>\n<p>\u0422\u0443\u0442 \u0443\u0436\u0435 \u043d\u0430\u0442\u044b\u043a\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0439 <em>null<\/em> <em>coalescing<\/em> \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440. \u041f\u0440\u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u0438 \u0432 \u0432\u0435\u0442\u043a\u0443 <em>else<\/em> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>ta<\/em> \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u0435 <em>null<\/em>. \u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 ?? \u0442\u0443\u0442 \u043b\u0438\u0448\u043d\u0435\u0435.<\/p>\n<p>\u0412\u0441\u0435\u0433\u043e \u0431\u044b\u043b\u043e \u043d\u0430\u0439\u0434\u0435\u043d\u043e 31 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c <a href=\"https:\/\/www.viva64.com\/ru\/w\/v3022\/\">V3022<\/a>.<\/p>\n<h3>\u0422\u044b \u0437\u0434\u0435\u0441\u044c \u043b\u0438\u0448\u043d\u0438\u0439<\/h3>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 1<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3025\/\">V3025<\/a> Incorrect format. A different number of format items is expected while calling &#8216;Format&#8217; function. Arguments not used: End. ICSharpCode.Decompiler Interval.cs 269<\/p>\n<pre><code>public override string ToString() {   if (End == long.MinValue)   {     if (Start == long.MinValue)       return string.Format(\"[long.MinValue..long.MaxValue]\", End); \/\/ &lt;=     else       return string.Format(\"[{0}..long.MaxValue]\", Start);   }   else if (Start == long.MinValue)   {     return string.Format(\"[long.MinValue..{0})\", End);   }   else   {     return string.Format(\"[{0}..{1})\", Start, End);   } } <\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 <em>string.Format<\/em> \u0441\u0442\u0440\u043e\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u043c \u0432 \u043c\u0435\u0442\u043e\u0434 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>End<\/em>, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430, \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043d\u0435\u0439 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f {0}. \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043b\u043e\u0433\u0438\u043a\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u044d\u0442\u043e \u0432\u0441\u0451 \u0436\u0435 \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0430, \u043f\u0435\u0440\u0432\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 <em>return<\/em> \u0432\u0435\u0440\u043d\u0451\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0443 \u0441\u0442\u0440\u043e\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0438 \u0430\u0432\u0442\u043e\u0440\u044b \u043a\u043e\u0434\u0430. \u042d\u0442\u043e, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0435 \u043e\u0442\u043c\u0435\u043d\u044f\u0435\u0442 \u0442\u043e\u0433\u043e \u0444\u0430\u043a\u0442\u0430, \u0447\u0442\u043e \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 <em>string.Format<\/em> \u0441 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c, \u0434\u0430\u0431\u044b \u043d\u0435 \u0432\u0432\u043e\u0434\u0438\u0442\u044c \u0432 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434.<\/p>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 2<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3025\/\">V3025<\/a> Incorrect format. A different number of format items is expected while calling &#8216;AppendFormat&#8217; function. Arguments not used: angle. ILSpy.BamlDecompiler XamlPathDeserializer.cs 177<\/p>\n<pre><code>public static string Deserialize(BinaryReader reader) {   ....   var sb = new StringBuilder();   ....   sb.AppendFormat(CultureInfo.InvariantCulture,                   \"A{0} {2:R} {2} {3} {4}\",                   size, angle, largeArc ? '1' : '0',                   sweepDirection ? '1' : '0', pt1);   .... } <\/code><\/pre>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0437\u0430 \u0431\u043e\u0440\u0442\u043e\u043c \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>angle<\/em>. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0435\u0451 \u043f\u0435\u0440\u0435\u0434\u0430\u043b\u0438 \u0432 \u043c\u0435\u0442\u043e\u0434 <em>AppendFormat<\/em>, \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f {1} \u0438 \u0434\u0432\u0430\u0436\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d {2}, \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0430\u0432\u0442\u043e\u0440\u044b \u0445\u043e\u0442\u0435\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <em>&#171;A{0} {1:R} {2} {3} {4}&#187;<\/em>.<\/p>\n<h3>\u0414\u0432\u043e\u0439\u043d\u044b\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b<\/h3>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 1<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3095\/\">V3095<\/a> The &#8216;roslynProject&#8217; object was used before it was verified against null. Check lines: 96, 97. ILSpy.AddIn OpenILSpyCommand.cs 96<\/p>\n<pre><code>protected Dictionary&lt;string, detectedreference=\"\"&gt; GetReferences(....) {   ....   var roslynProject =  owner.Workspace                             .CurrentSolution                             .GetProject(projectReference.ProjectId);   var project = FindProject(owner.DTE.Solution                                  .Projects.OfType&lt;envdte.project&gt;(),                             roslynProject.FilePath);              \/\/ &lt;=    if (roslynProject != null &amp;&amp; project != null)           \/\/ &lt;=   .... } <\/code><\/pre>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 <em>FilePath<\/em> \u043e\u0431\u044a\u0435\u043a\u0442\u0430 <em>roslynProject<\/em> \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u043e\u043f\u0430\u0441\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>roslynProject<\/em> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d <em>null<\/em>, \u0430 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u043d\u0438\u0436\u0435 \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 <em>null<\/em>. \u0422\u0430\u043a\u043e\u0439 \u043a\u043e\u0434 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e \u0438 \u0447\u0440\u0435\u0432\u0430\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 <em>NullReferenceException<\/em>. \u0414\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 <em>FilePath<\/em>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f null-\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0430 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <em>FindProject<\/em> \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e <em>null<\/em> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430.<\/p>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 2<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3095\/\">V3095<\/a> The &#8216;listBox&#8217; object was used before it was verified against null. Check lines: 46, 52. ILSpy FlagsFilterControl.xaml.cs 46<\/p>\n<pre><code>public override void OnApplyTemplate() {   base.OnApplyTemplate();    listBox = Template.FindName(\"ListBox\", this) as ListBox;   listBox.ItemsSource = FlagGroup.GetFlags(....);         \/\/ &lt;=    var filter = Filter;    if (filter == null || filter.Mask == -1)   {     listBox?.SelectAll();                                 \/\/ &lt;=   } } <\/code><\/pre>\n<p>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u0443. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 <em>ItemsSource<\/em> \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0447\u0442\u043e \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>listBox<\/em> \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d <em>null<\/em>, \u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u043d\u0438\u0436\u0435 \u0443\u0436\u0435 \u0432\u0438\u0434\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 null-\u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>listBox<\/em>. \u041f\u0440\u0438\u0447\u0451\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>listBox<\/em> \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u044d\u0442\u0438\u043c\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f\u043c\u0438 \u043a \u043f\u043e\u043b\u044e \u0438 \u043c\u0435\u0442\u043e\u0434\u0443 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412\u0441\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430\u0448\u0451\u043b 10 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c <a href=\"https:\/\/www.viva64.com\/ru\/w\/v3095\/\">V3095<\/a>. \u041f\u0440\u0438\u0432\u043e\u0436\u0443 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439:<\/p>\n<ul>\n<li>\n<p>V3095 The &#8216;pV&#8217; object was used before it was verified against null. Check lines: 761, 765. ICSharpCode.Decompiler TypeInference.cs 761<\/p>\n<\/li>\n<li>\n<p>V3095 The &#8216;pU&#8217; object was used before it was verified against null. Check lines: 882, 886. ICSharpCode.Decompiler TypeInference.cs 882<\/p>\n<\/li>\n<li>\n<p>V3095 The &#8216;finalStore&#8217; object was used before it was verified against null. Check lines: 261, 262. ICSharpCode.Decompiler TransformArrayInitializers.cs 261<\/p>\n<\/li>\n<li>\n<p>V3095 The &#8216;definitionDeclaringType&#8217; object was used before it was verified against null. Check lines: 93, 104. ICSharpCode.Decompiler SpecializedMember.cs 93<\/p>\n<\/li>\n<li>\n<p>V3095 The &#8216;TypeNamespace&#8217; object was used before it was verified against null. Check lines: 84, 88. ILSpy.BamlDecompiler XamlType.cs 84<\/p>\n<\/li>\n<li>\n<p>V3095 The &#8216;property.Getter&#8217; object was used before it was verified against null. Check lines: 1676, 1684. ICSharpCode.Decompiler CSharpDecompiler.cs 1676<\/p>\n<\/li>\n<li>\n<p>V3095 The &#8216;ev.AddAccessor&#8217; object was used before it was verified against null. Check lines: 1709, 1717. ICSharpCode.Decompiler CSharpDecompiler.cs 1709<\/p>\n<\/li>\n<li>\n<p>V3095 The &#8216;targetType&#8217; object was used before it was verified against null. Check lines: 1614, 1657. ICSharpCode.Decompiler CallBuilder.cs 1614<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u043e\u0442 \u0436\u0435 ILSpy, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0440\u0443\u0447\u043d\u043e <a href=\"https:\/\/www.viva64.com\/ru\/pvs-studio-download\/\">\u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440<\/a>. \u041f\u0435\u0440\u0435\u0439\u0434\u044f \u043d\u0430 \u0441\u0430\u0439\u0442 PVS-Studio, \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043a\u0430\u043a \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0441\u0430\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440, \u0442\u0430\u043a \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0440\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044e.<\/p>\n<h3>\u0412\u0441\u0451 \u0438\u0434\u0451\u0442 \u043a \u043e\u0434\u043d\u043e\u043c\u0443<\/h3>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 1<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3139\/\">V3139<\/a> Two or more case-branches perform the same actions. ILSpy Images.cs 251<\/p>\n<pre><code>protected override ImageSource GetBaseImage(MemberIcon icon) {   ImageSource baseImage;   switch (icon)   {     case MemberIcon.Field:       baseImage = Images.Field;       break;     case MemberIcon.FieldReadOnly:       baseImage = Images.FieldReadOnly;       break;     case MemberIcon.Literal:       baseImage = Images.Literal;             \/\/ &lt;=       break;     case MemberIcon.EnumValue:       baseImage = Images.Literal;             \/\/ &lt;=       break;     case MemberIcon.Property:       baseImage = Images.Property;       break;     case MemberIcon.Indexer:       baseImage = Images.Indexer;       break;     case MemberIcon.Method:       baseImage = Images.Method;       break;     case MemberIcon.Constructor:       baseImage = Images.Constructor;       break;     case MemberIcon.VirtualMethod:       baseImage = Images.VirtualMethod;       break;     case MemberIcon.Operator:       baseImage = Images.Operator;       break;     case MemberIcon.ExtensionMethod:       baseImage = Images.ExtensionMethod;       break;     case MemberIcon.PInvokeMethod:       baseImage = Images.PInvokeMethod;       break;     case MemberIcon.Event:       baseImage = Images.Event;       break;     default:       throw new ArgumentOutOfRangeException(nameof(icon),                   $\"MemberIcon.{icon} is not supported!\");   }    return baseImage; } <\/code><\/pre>\n<p>\u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u044d\u0442\u043e \u044f\u0432\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>icon<\/em> \u0440\u0430\u0432\u043d\u0430 <em>MemberIcon.EnumValue<\/em>, \u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>baseImage<\/em> \u0432 \u0432\u0435\u0442\u043a\u0435 <em>case<\/em> \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>Images.EnumValue<\/em>. \u042d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0448\u0438\u0431\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0433\u043a\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440, \u0438 \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043f\u0440\u0438 \u0431\u0435\u0433\u043b\u043e\u043c \u043e\u0431\u0437\u043e\u0440\u0435 \u043a\u043e\u0434\u0430.<\/p>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 2<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3139\/\">V3139<\/a> Two or more case-branches perform the same actions. ICSharpCode.Decompiler CSharpConversions.cs 829<\/p>\n<pre><code>bool ImplicitConstantExpressionConversion(ResolveResult rr, IType toType) {   ....   switch (toTypeCode)   {     case TypeCode.SByte:       return val &gt;= SByte.MinValue &amp;&amp; val &lt;= SByte.MaxValue;     case TypeCode.Byte:       return val &gt;= Byte.MinValue &amp;&amp; val &lt;= Byte.MaxValue;     case TypeCode.Int16:       return val &gt;= Int16.MinValue &amp;&amp; val &lt;= Int16.MaxValue;     case TypeCode.UInt16:       return val &gt;= UInt16.MinValue &amp;&amp; val &lt;= UInt16.MaxValue;     case TypeCode.UInt32:       return val &gt;= 0;                 \/\/ &lt;=     case TypeCode.UInt64:       return val &gt;= 0;                 \/\/ &lt;=   }   .... } <\/code><\/pre>\n<p>\u0423\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043d\u0430\u0448\u0451\u043b \u0437\u0434\u0435\u0441\u044c \u044f\u0432\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443 \u044f \u043d\u0435 \u0431\u0435\u0440\u0443\u0441\u044c, \u043d\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b. \u0415\u0441\u043b\u0438 \u043c\u0435\u0442\u043a\u0438 <em>case<\/em> \u0434\u043b\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <em>TypeCode.UInt32<\/em> \u0438 <em>TypeCode.UInt64<\/em> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 \u043d\u0430\u0431\u043e\u0440 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e:<\/p>\n<pre><code>bool ImplicitConstantExpressionConversion(ResolveResult rr, IType toType) {   switch (toTypeCode)   {       ....       case TypeCode.UInt32:       case TypeCode.UInt64:         return val &gt;= 0;   }   .... } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u043b \u0435\u0449\u0451 2 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0441 \u043d\u043e\u043c\u0435\u0440\u043e\u043c <a href=\"https:\/\/www.viva64.com\/ru\/w\/v3139\/\">V3139<\/a>:<\/p>\n<ul>\n<li>\n<p>V3139 Two or more case-branches perform the same actions. ICSharpCode.Decompiler EscapeInvalidIdentifiers.cs 85<\/p>\n<\/li>\n<li>\n<p>V3139 Two or more case-branches perform the same actions. ICSharpCode.Decompiler TransformExpressionTrees.cs 370<\/p>\n<\/li>\n<\/ul>\n<h3>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0432\u044b\u0448\u0435 \u0432\u0441\u0435\u0433\u043e<\/h3>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3083\/\">V3083<\/a> Unsafe invocation of event, NullReferenceException is possible. Consider assigning event to a local variable before invoking it. ILSpy MainWindow.xaml.cs 787class ResXResourceWriter : IDisposable<\/p>\n<pre><code>void assemblyList_Assemblies_CollectionChanged(....) {   ....   if (CurrentAssemblyListChanged != null)     CurrentAssemblyListChanged(this, e);      \/\/ &lt;= } <\/code><\/pre>\n<p>\u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u044b\u0437\u043e\u0432\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u043c, \u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0430\u0432\u0434\u0430\u043d\u0438\u0435\u043c \u043a \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u043d\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430, \u043d\u043e, \u043a\u0430\u043a \u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, &#8212; \u044d\u0442\u043e\u0442 \u0432\u044b\u0437\u043e\u0432 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u043c, \u0438 \u043d\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 <em>NullReferenceException<\/em>. \u0415\u0441\u043b\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 <em>CurrentAssemblyListChanged<\/em> \u043d\u0430 <em>null<\/em> \u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043e\u0442 \u043d\u0435\u0433\u043e \u043e\u0442\u043f\u0438\u0441\u0430\u043b\u0438\u0441\u044c \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f), \u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0432\u044b\u0431\u0440\u043e\u0441 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f <em>NullReferenceException<\/em>. \u041b\u0443\u0447\u0448\u0435 \u0441\u0440\u0430\u0437\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043a\u043e\u0434, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>void assemblyList_Assemblies_CollectionChanged(....) {   ....   CurrentAssemblyListChanged?.Invoke(this, e); } <\/code><\/pre>\n<p>PVS-Studio \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u0435\u0449\u0451 8 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0438 \u0432\u0441\u0435 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u0432\u044b\u0448\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u0443.<\/p>\n<h3>\u0423\u0432\u0435\u0440\u0435\u043d\u043d\u0430\u044f \u043d\u0435\u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c<\/h3>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3146\/\">V3146<\/a> Possible null dereference. The &#8216;FirstOrDefault&#8217; can return default null value. ILSpy.BamlDecompiler BamlResourceEntryNode.cs 76<\/p>\n<pre><code>bool LoadBaml(AvalonEditTextOutput output, CancellationToken cancellationToken) {   var asm = this.Ancestors().OfType&lt;assemblytreenode&gt;()                             .FirstOrDefault().LoadedAssembly;       \/\/ &lt;=   ....   return true; } <\/code><\/pre>\n<p>\u0418\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u043e\u0439 \u043c\u0435\u0442\u043e\u0434\u043e\u043c <em>OfType<\/em>, \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 <em>FirstOrDefault<\/em> \u0445\u043e\u0442\u044f\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0432\u0448\u0438\u0439\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0442\u0438\u043f\u0430 <em>AssemblyTreeNode<\/em>. \u0412\u0441\u0435 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0442\u0440\u0435\u0447\u0435\u043d\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u043b \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u0443 \u043f\u043e\u0438\u0441\u043a\u0430, \u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \u0441\u0430\u043c\u0430 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0443\u0441\u0442\u043e\u0439, \u0442\u043e \u043c\u0435\u0442\u043e\u0434 <em>FirstOrDefault<\/em> \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e &#8212; <em>null<\/em> \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435. \u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 <em>LoadedAssembly<\/em> \u043f\u043e \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044e \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 <em>NullReferenceException<\/em>. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c null-\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440:<\/p>\n<pre><code>bool LoadBaml(AvalonEditTextOutput output, CancellationToken cancellationToken) {   var asm = this.Ancestors().OfType&lt;assemblytreenode&gt;()                             .FirstOrDefault()?.LoadedAssembly;     \/\/ &lt;=   ....   return true; } <\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0443\u0432\u0435\u0440\u0435\u043d \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043c\u0435\u0442\u043e\u0434 <em>FirstOrDefault<\/em> \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0432\u0435\u0440\u043d\u0451\u0442 <em>null<\/em>. \u0415\u0441\u043b\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u0441\u0442\u043e \u0431\u044b\u0442\u044c, \u0442\u043e \u0442\u043e\u0433\u0434\u0430 \u043b\u0443\u0447\u0448\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c <em>First<\/em> \u0432\u043c\u0435\u0441\u0442\u043e <em>FirstOrDefault<\/em>, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u0435\u0442 \u043d\u0430\u0448\u0443 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0441\u0442\u0430\u043d\u0435\u043c \u043d\u0443\u0436\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438\u0437 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435, \u0435\u0441\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0434\u0435\u043d \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 <em>InvalidOperationException<\/em> (\u0430 \u043d\u0435 <em>NullReferenceException<\/em> \u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c <em>FirstOrDefault<\/em> \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435\u043c \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443 \u043f\u043e \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435) \u0441 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u043c: &#171;Sequence contains no elements&#187;.<\/p>\n<h3>\u041d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h3>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3105\/\">V3105<\/a> The &#8216;m&#8217; variable was used after it was assigned through null-conditional operator. NullReferenceException is possible. ILSpy MethodVirtualUsedByAnalyzer.cs 137<\/p>\n<pre><code>static bool ScanMethodBody(IMethod analyzedMethod,                             IMethod method, MethodBodyBlock methodBody) {   ....   var mainModule = (MetadataModule)method.ParentModule;   ....   switch (member.Kind)   {     case HandleKind.MethodDefinition:     case HandleKind.MethodSpecification:     case HandleKind.MemberReference:       var m = (mainModule.ResolveEntity(member, genericContext) as IMember)               ?.MemberDefinition;       if (   m.MetadataToken == analyzedMethod.MetadataToken               \/\/ &lt;=           &amp;&amp; m.ParentModule.PEFile == analyzedMethod.ParentModule.PEFile)  \/\/ &lt;=       {         return true;       }       break;   }   .... } <\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>m<\/em> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f null-\u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e <em>m<\/em> \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>null<\/em>. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043c\u044b \u0443\u0436\u0435 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f null-\u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>m<\/em>, \u0447\u0442\u043e \u0447\u0440\u0435\u0432\u0430\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0430 <em>NullReferenceException<\/em>. \u041a\u0430\u043a \u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0438\u0437 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f null-\u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430:<\/p>\n<pre><code>static bool ScanMethodBody(IMethod analyzedMethod,                             IMethod method, MethodBodyBlock methodBody) {   ....   var mainModule = (MetadataModule)method.ParentModule;   ....   switch (member.Kind)   {     case HandleKind.MethodDefinition:     case HandleKind.MethodSpecification:     case HandleKind.MemberReference:       var m = (mainModule.ResolveEntity(member, genericContext) as IMember)               ?.MemberDefinition;       if (   m?.MetadataToken == analyzedMethod.MetadataToken           &amp;&amp; m?.ParentModule.PEFile == analyzedMethod.ParentModule.PEFile)       {         return true;       }       break;   }   .... } <\/code><\/pre>\n<h3>\u0421\u0442\u0430\u0440\u044b\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0435<\/h3>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3070\/\">V3070<\/a> Uninitialized variable &#8216;schema&#8217; is used when initializing the &#8216;ResourceSchema&#8217; variable. ICSharpCode.Decompiler ResXResourceWriter.cs 63<\/p>\n<pre><code>class ResXResourceWriter : IDisposable {   ....   public static readonly string ResourceSchema = schema;   ....   static string schema = ....;   .... } <\/code><\/pre>\n<p>\u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u043d\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0443\u0436\u0435 \u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u043f\u044f\u0442\u044c \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <a href=\"https:\/\/www.viva64.com\/ru\/b\/0431\/\">Mono<\/a>, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0441 \u043a\u043e\u043b\u043b\u0435\u0433\u043e\u0439 \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c \u0435\u0451 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0441\u0442\u043e\u0438\u0442. \u041a\u0430\u043a \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 Mono, \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u044f <em>ResourceSchema<\/em> \u0434\u0440\u0443\u0433\u0438\u043c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u043e\u043b\u0435\u043c <em>schema<\/em>, \u043f\u043e\u043b\u0435 <em>schema<\/em> \u0435\u0449\u0451 \u0441\u0430\u043c\u043e \u043d\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438 \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e &#8212; <em>null<\/em>. \u0424\u0430\u0439\u043b ResXResourceWriter.cs, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u0430 \u043d\u0430\u0439\u0434\u0435\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430, \u0431\u044b\u043b \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u043f\u043e\u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u043f\u0440\u0430\u0432 \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Mono. \u0424\u0430\u0439\u043b \u0431\u044b\u043b \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 ILSpy \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u043e\u043c. \u0412\u043e\u0442 \u0442\u0430\u043a \u0431\u0430\u0433\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0440\u0430\u0441\u043f\u043e\u043b\u0437\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0441\u0435\u0442\u0438 \u0438 \u043a\u043e\u0447\u0443\u044e\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439. \u041a\u0441\u0442\u0430\u0442\u0438, \u0432 \u043f\u0435\u0440\u0432\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 \u043e\u0448\u0438\u0431\u043a\u0443 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u043b\u0438.<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u0432\u0430\u044f \u0440\u0430\u0437\u0431\u043e\u0440 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0431\u044b\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0446\u0435\u043b\u044f\u0445 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u043d\u043e \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438, \u0433\u0434\u0435 \u0430\u0432\u0442\u043e\u0440\u044b \u043a\u043e\u0434\u0430 \u044f\u0432\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u044e\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u0442 \u0436\u0435 \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 <em>Replace<\/em> \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438). \u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430. \u0412\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0449\u0435 \u0438 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0431\u0430\u0433 \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f\/\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430, \u043d\u0435\u0436\u0435\u043b\u0438 \u0447\u0435\u043c \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435, \u043a\u043e\u0433\u0434\u0430 \u043e \u0431\u0430\u0433\u0435 \u0432\u0430\u043c \u0443\u0436\u0435 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0430 \u043d\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u0441 \u0430\u043d\u0433\u043b\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0435\u0439, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0432\u043e\u0434: Ilya Gainulin. <a href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/540934\/\">A Spy Undercover: PVS-Studio to Check ILSpy Source Code<\/a>. <\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/540938\/\"> https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/540938\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0412 \u0431\u043b\u043e\u0433\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 PVS-Studio \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u043e\u0434\u043d\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432. \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c PVS-Studio \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c &#8212; \u043a\u043b\u0430\u0441\u0441 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432. \u0414\u0430\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0438\u0440 \u0431\u043e\u043b\u0435\u0435 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0447\u043d\u044b\u043c, \u0431\u044b\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 C# \u043a\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b ILSpy, \u043a\u0430\u043a \u0440\u0430\u0437 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0435\u0439\u0441\u044f \u043a \u043b\u0430\u0433\u0435\u0440\u044e \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0441\u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 PVS-Studio.<\/p>\n<figure class=\"\"><figcaption><\/figcaption><\/figure>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u0445\u043e\u0442\u044c \u0440\u0430\u0437 \u0432 \u0436\u0438\u0437\u043d\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440. \u0426\u0435\u043b\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043d\u0430\u0441 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438: \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043c\u0435\u0442\u043e\u0434\u0430, \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u043f\u0440\u043e\u0432\u0435\u0440\u0433\u043d\u0443\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0447\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0434 \u0432\u043b\u0438\u044f\u043d\u0438\u0435\u043c \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u0441\u0442\u0432\u0430 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0431\u043b\u0438\u0437\u043a\u0438\u0439 \u043a \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0439 \u043d\u0430\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0412 \u043c\u0438\u0440\u0435 .NET&#8217;\u0430 \u043f\u0440\u0438 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0438 \u0441\u043b\u043e\u0432\u0430 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u043e\u0431\u044b\u0447\u043d\u043e \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0438\u043b\u0438 dotPeek \u0438\u043b\u0438 ILSpy. \u041f\u0440\u043e .NET Reflector \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442 \u043c\u0435\u043d\u044c\u0448\u0435. \u041f\u0440\u0438\u043f\u043e\u043c\u0438\u043d\u0430\u044e, \u043a\u0430\u043a, \u043a\u043e\u0433\u0434\u0430 \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437 \u0443\u0437\u043d\u0430\u043b \u043f\u0440\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0443\u0442\u0438\u043b\u0438\u0442 \u0438 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u0447\u0443\u0436\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0432 \u0433\u043e\u043b\u043e\u0432\u0435 \u043f\u0440\u043e\u0431\u0435\u0436\u0430\u043b\u0430 \u043c\u044b\u0441\u043b\u044c \u043e \u0448\u043f\u0438\u043e\u043d\u0430\u0436\u0435. \u0418 \u0442\u0430\u043a\u0438\u0435 \u043c\u044b\u0441\u043b\u0438 \u0431\u044b\u043b\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u043c\u0435\u043d\u044f \u043e\u0434\u043d\u043e\u0433\u043e &#8212; \u043d\u0435 \u0441\u043f\u0440\u043e\u0441\u0442\u0430 \u0436\u0435 \u0434\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 ILSpy \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0441\u0432\u043e\u0451 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435. \u0418\u0442\u0430\u043a, \u0432 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u0438 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0441 \u043c\u043e\u0435\u0439 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043c\u0435\u0441\u0442\u0430, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e PVS-Studio \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 ILSpy. \u0417\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u0448 \u0448\u043f\u0438\u043e\u043d \u0438, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, &#171;\u043f\u0440\u0438\u043a\u0440\u044b\u0442\u044c&#187; \u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c.<\/p>\n<p>\u041e\u0442\u043a\u0440\u043e\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e ILSpy \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e. \u0421\u0440\u0435\u0434\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0443\u0434\u0438\u0439, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439. \u042d\u0442\u043e \u043e\u0434\u043d\u0430 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d \u0442\u043e\u0433\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u0448 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u0433\u0440, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u0434\u0432\u0438\u0436\u043a\u0438 Unity \u0438 Unreal Engine.<\/p>\n<p>\u042f \u0437\u043d\u0430\u043a\u043e\u043c \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 PVS-Studio \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 Unreal Engine, \u0430 \u0432\u043e\u0442 \u043f\u0440\u043e Unity \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u044e\u0449\u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430\u0448\u0435\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430, \u0441\u043b\u044b\u0448\u0443 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0436\u0435. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u044d\u0442\u0438\u043c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0441\u0440\u0435\u0434\u0438 Unity \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u0441\u0442\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044f \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 open-source \u0438\u0433\u0440\u044b, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u0432\u0438\u0436\u043a\u0430. \u0412\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0434\u0435\u0441\u044c \u0443 \u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 &#8212; \u044f \u043d\u0435 \u0441\u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438 \u0442\u0430\u043a\u0443\u044e \u0438\u0433\u0440\u0443 (\u043c\u043e\u0436\u0435\u0442 \u0432\u044b, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0438, \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043b\u044e\u0431\u0435\u0437\u043d\u043e <a href=\"https:\/\/github.com\/viva64\/pvs-studio-check-list\">\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0434\u0435\u0438 \u0434\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a<\/a>?). \u041e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0438\u0433\u0440\u044b \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0438 \u043d\u0430 <a href=\"https:\/\/awesomeopensource.com\/projects\/unity\">\u043e\u0434\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435<\/a> \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0434\u043b\u044f Unity \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f ILSpy (\u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u0433\u0430\u0434\u043a\u043e\u0439, \u043a\u0430\u043a \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u043f\u043e\u043f\u0430\u043b \u0432 \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a). \u041a \u0441\u043b\u043e\u0432\u0443, ILSpy \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0443\u043b \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 C# \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0421\u0442\u0440\u0430\u043d\u043d\u043e, \u0447\u0442\u043e \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0443 \u043d\u0430\u0441 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0431\u044b\u043b\u043e. \u041d\u0443 \u0447\u0442\u043e \u0436, \u0440\u0430\u0437 \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 Unity \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u0442\u0430\u043a \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043f\u043e\u043f\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043d\u0430 \u0433\u043b\u0430\u0437\u0430 ILSpy.<\/p>\n<p>\u0412\u043e\u0442 \u0447\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430 <a href=\"https:\/\/github.com\/icsharpcode\/ILSpy\">GitHub&#8217;\u0435<\/a>: ILSpy is the open-source .NET assembly browser and decompiler.<\/p>\n<p>\u042f \u043d\u0435 \u043d\u0430\u0448\u0451\u043b \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440. \u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0442\u0430\u043a \u0434\u0430\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 &#8212; PVS-Studio \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0432\u044b\u043c. \u041f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c \u0430\u043d\u0430\u043b\u0438\u0437\u0430.<\/p>\n<h3>\u0417\u0430\u043c\u0435\u043d\u0430 \u0431\u0435\u0437 \u0437\u0430\u043c\u0435\u043d\u044b<\/h3>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/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<pre><code>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>\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. \u0418\u0437-\u0437\u0430 \u043d\u0435\u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0448\u043b\u0430 \u043e\u0441\u0435\u0447\u043a\u0430 &#8212; \u0441\u0438\u043c\u0432\u043e\u043b &#171;&#8216;&#187; \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u0433\u043e \u0441\u0435\u0431\u044f, \u0447\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439. \u041c\u0435\u0436\u0434\u0443 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d\u0438\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f &#171;&#8216;&#187; \u0438 &#171;\\'&#187; \u0440\u0430\u0437\u043d\u0438\u0446\u044b \u043d\u0435\u0442 &#8212; \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0442\u0440\u043e\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u043e\u0439 \u043a\u0430\u0432\u044b\u0447\u043a\u0438. \u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u0432 \u0441\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u043f\u0430\u043b\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &#171;\\'&#187;, \u0442\u043e backslash \u043d\u0443\u0436\u043d\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c &#8216;@&#8217;: &#171;\\\\'&#187; \u0438\u043b\u0438 @&#187;\\'&#187;. \u0422\u043e \u0435\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 <em>Replace<\/em> \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>Replace(\"'\", @\"\\'\") <\/code><\/pre>\n<h3>\u041f\u0440\u0430\u0432\u0434\u0430 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0434\u0430<\/h3>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 1<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3022\/\">V3022<\/a> Expression &#8216;negatedOp == BinaryOperatorType.Any&#8217; is always true. ICSharpCode.Decompiler CSharpUtil.cs <\/p>\n<pre><code>static Expression InvertConditionInternal(Expression condition) {   var bOp = (BinaryOperatorExpression)condition;    if (   (bOp.Operator == BinaryOperatorType.ConditionalAnd)       || (bOp.Operator == BinaryOperatorType.ConditionalOr))   {     ....   }   else if (   (bOp.Operator == BinaryOperatorType.Equality)            || (bOp.Operator == BinaryOperatorType.InEquality)             || (bOp.Operator == BinaryOperatorType.GreaterThan)            || (bOp.Operator == BinaryOperatorType.GreaterThanOrEqual)            || (bOp.Operator == BinaryOperatorType.LessThan)             || (bOp.Operator == BinaryOperatorType.LessThanOrEqual))   {     ....   }   else   {     var negatedOp = NegateRelationalOperator(bOp.Operator);     if (negatedOp == BinaryOperatorType.Any)                  \/\/ &lt;=       return new UnaryOperatorExpression(....);     bOp = (BinaryOperatorExpression)bOp.Clone();     bOp.Operator = negatedOp;     return bOp;   } } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>negatedOp<\/em> \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0432\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e <em>Any<\/em> \u0438\u0437 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f <em>BinaryOperatorType<\/em>. \u0427\u0442\u043e\u0431\u044b \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 <em>NegateRelationalOperator<\/em>, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u0451 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<pre><code>public static BinaryOperatorType NegateRelationalOperator(BinaryOperatorType op) {   switch (op)   {     case BinaryOperatorType.GreaterThan:       return BinaryOperatorType.LessThanOrEqual;     case BinaryOperatorType.GreaterThanOrEqual:       return BinaryOperatorType.LessThan;     case BinaryOperatorType.Equality:       return BinaryOperatorType.InEquality;     case BinaryOperatorType.InEquality:       return BinaryOperatorType.Equality;     case BinaryOperatorType.LessThan:       return BinaryOperatorType.GreaterThanOrEqual;     case BinaryOperatorType.LessThanOrEqual:       return BinaryOperatorType.GreaterThan;     case BinaryOperatorType.ConditionalOr:       return BinaryOperatorType.ConditionalAnd;     case BinaryOperatorType.ConditionalAnd:       return BinaryOperatorType.ConditionalOr;   }   return BinaryOperatorType.Any; } <\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 <em>NegateRelationalOperator<\/em> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>bOp.Operator<\/em> \u0438\u043c\u0435\u043b\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u043c\u0435\u0442\u043a\u0435 <em>case<\/em>, \u0442\u043e \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u0435\u0440\u043d\u0451\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>BinaryOperatorType.Any<\/em>. \u0412\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u0430 <em>NegateRelationalOperator<\/em> \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432 \u0432\u044b\u0448\u0435\u0441\u0442\u043e\u044f\u0449\u0435\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 <em>if<\/em> \u0438 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 <em>if else<\/em> \u0431\u044b\u043b\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u043a\u0430\u043a <em>false<\/em>. \u0410 \u0435\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0447\u0442\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u0445 <em>if<\/em> \u0438 <em>if<\/em> <em>else<\/em> \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0432\u0441\u0435 \u043c\u0435\u0442\u043a\u0438 <em>case<\/em> \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430 <em>NegateRelationalOperator<\/em>. \u0421\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043a \u043c\u043e\u043c\u0435\u043d\u0442\u0443 \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 <em>NegateRelationalOperator<\/em> \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>bOp.Operator<\/em> \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043d\u0438 \u043f\u043e\u0434 \u043e\u0434\u043d\u0443 \u043c\u0435\u0442\u043a\u0443 <em>case<\/em>, \u0438 \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0435\u0440\u043d\u0451\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>BinaryOperatorType.Any<\/em>. \u0412\u043e\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e <em>negatedOp == BinaryOperatorType.Any<\/em> \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a <em>true<\/em>, \u0438 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u0430. \u0412\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u0435\u0434\u043e\u0441\u0442\u0438\u0436\u0438\u043c\u044b\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code>bOp = (BinaryOperatorExpression)bOp.Clone(); bOp.Operator = negatedOp; return bOp; <\/code><\/pre>\n<p>\u041a \u0441\u043b\u043e\u0432\u0443, \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043b\u044e\u0431\u0435\u0437\u043d\u043e \u0432\u044b\u0434\u0430\u043b \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 \u0438 \u043d\u0430 \u044d\u0442\u043e: <a href=\"https:\/\/www.viva64.com\/ru\/w\/v3142\/\">V3142<\/a> Unreachable code detected. It is possible that an error is present. ICSharpCode.Decompiler CSharpUtil.cs 81<\/p>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 2<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3022\/\">V3022<\/a> Expression &#8216;pt != null&#8217; is always true. ICSharpCode.Decompiler FunctionPointerType.cs 168<\/p>\n<pre><code>public override IType VisitChildren(TypeVisitor visitor) {   ....   IType[] pt = (r != ReturnType) ? new IType[ParameterTypes.Length] : null;   ....   if (pt == null)     return this;   else     return new FunctionPointerType(       module, CallingConvention, CustomCallingConventions,       r, ReturnIsRefReadOnly,       pt != null ? pt.ToImmutableArray() : ParameterTypes,    \/\/ &lt;=       ParameterReferenceKinds); } <\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e &#8212; \u0432\u0435\u0442\u043a\u0430 <em>else<\/em> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f <em>pt<\/em> \u043d\u0435 \u0440\u0430\u0432\u043d\u0430 <em>null<\/em>. \u0417\u0430\u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <em>pt<\/em> \u043d\u0430 \u043d\u0435\u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e <em>null,<\/em> \u043c\u043d\u0435 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u043e. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043d\u0435 \u0431\u044b\u043b\u043e \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f <em>if<\/em> <em>else<\/em> \u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 <em>return<\/em>. \u0422\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u043c\u0435\u043b\u0430 \u0431\u044b \u0441\u043c\u044b\u0441\u043b, \u043d\u0443 \u0430 \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0441\u0451 \u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u0443\u0431\u0440\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440:<\/p>\n<pre><code>public override IType VisitChildren(TypeVisitor visitor) {   ....   IType[] pt = (r != ReturnType) ? new IType[ParameterTypes.Length] : null;   ....   if (pt == null)     return this;   else     return new FunctionPointerType(       module, CallingConvention, CustomCallingConventions,       r, ReturnIsRefReadOnly,       pt.ToImmutableArray(), ParameterReferenceKinds); } <\/code><\/pre>\n<p><strong>\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435 3<\/strong><\/p>\n<p><a href=\"https:\/\/www.viva64.com\/ru\/w\/v3022\/\">V3022<\/a> Expression &#8216;settings.LoadInMemory&#8217; is always true. ICSharpCode.Decompiler CSharpDecompiler.cs 394<\/p>\n<pre><code>static PEFile LoadPEFile(string fileName, DecompilerSettings settings) {   settings.LoadInMemory = true;   return new PEFile(     fileName,     new FileStream(fileName, FileMode.Open, FileAccess.Read),     streamOptions: settings.LoadInMemory ?                           \/\/ &lt;=       PEStreamOptions.PrefetchEntireImage : PEStreamOptions.Default,     metadataOptions: settings.ApplyWindowsRuntimeProjections ?          MetadataReaderOptions.ApplyWindowsRuntimeProjections :         MetadataReaderOptions.None   ); } <\/code><\/pre>\n<p>\u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c\u0443 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0439 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440. \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0443 <em>settings.LoadInMemory<\/em>, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u043e\u043c\u0443 \u0432 \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <em>true<\/em>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u0442\u0435\u0440\u043d\u0430\u0440\u043d\u043e\u0433\u043e<\/p>\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-317508","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/317508","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=317508"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/317508\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=317508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=317508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=317508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}