Да, вы правы, в статье есть несколько срабатываний с map. Анализатор обладает всей семантичекой информацией для того, чтобы это определить. Мы решили всё же пока выдавать предупреждения на такой код, но с меньшим уровнем критичности, т.к. код всё равно может оказаться ошибочным. Вполне вероятно, что будущем этот кейс может вообще быть добавлен в исключения для данной диагностики анализатора.
Уточню, что мы разрабатываем полноценный коммерческий статический анализатор для Go. Полученный опыт хорошо ложится на создание кастомных линтеров, которые бывают полезны, о чём и рассказал в статье.
Нам кастомный линтер был полезен для поиска одного отладочного метода, который используется только для отладки и валит тесты. Были случаи, когда разработчики забывали убирать его вызовы, это не находили на ревью и валились ночные тесты.
.NET Digest (как и другие материалы PVS-Studio) публикуется не в день написания. Есть множество этапов (вычитки, перевод на английский и прочее), которые скрадывают время. Ждите .NET Digest 8 :)
И у меня аналогично. Особенно, если в чьих-то исходниках используют библиотеки, которые применяю и я. Это повод найти для себя новые варианты работы с ними, исправить у себя ошибки и т.д.
Нет, в таком случае анализатор не будет выдавать предупреждение, т.к. иметь в массиве одинаковые элементы является нормальной ситуацией. Здесь же одно из подвыражений явно ошибочно, т.к. если бы первое подвыражение было true, то до второго даже не дошли бы.
Интересно, про 'null & 0' не знал. А какой смысл проверять на null value type? Manageability это свойство с типом перечисления SettingsManageability и оно не nullable.
Конечно, в статье не всё отражено, вставить всё просто невозможно. Что-то считаешь незначительным, что-то не для всех. Про производительность я соглашусь, но если начинать перечислять, то в комментарии всё равно кто-то придёт и напишет, что что-то забыли :). Поэтому решил ограничиться ссылкой на исчерпывающую статью. Тем более, лучше Тауба сложно сделать. А вот про отдельные устанавливаемые пакеты действительно лучше сделать отдельные статьи (хотя тогда это будет копирка статей Microsoft), так как здесь хотелось выделить более общие вещи.
Спасибо, за большой комментарий. Постараемся в следующих статьях про .NET учесть.
Да, есть такой момент, но на момент публикации статьи через dotnet-install скрипт уже можно было установить 8.0.100. А теперь ещё и на официальной странице для скачивания появилась новая версия.
Да, вы правы, в статье есть несколько срабатываний с map. Анализатор обладает всей семантичекой информацией для того, чтобы это определить. Мы решили всё же пока выдавать предупреждения на такой код, но с меньшим уровнем критичности, т.к. код всё равно может оказаться ошибочным. Вполне вероятно, что будущем этот кейс может вообще быть добавлен в исключения для данной диагностики анализатора.
В данном случае возвращается всё же slice
Просто не было такой задачи. Тяжело сделать сравнение со всем на свете, так что выбрали что-то наиболее стандартное.
Список правил будет доступен в документации к моменту старта бета тестирования 6 апреля.
Уточню, что мы разрабатываем полноценный коммерческий статический анализатор для Go. Полученный опыт хорошо ложится на создание кастомных линтеров, которые бывают полезны, о чём и рассказал в статье.
Нам кастомный линтер был полезен для поиска одного отладочного метода, который используется только для отладки и валит тесты. Были случаи, когда разработчики забывали убирать его вызовы, это не находили на ревью и валились ночные тесты.
Спасибо за комментарий и спасибо за наводку на видео от Авито, я его ещё не видел.
.NET Digest (как и другие материалы PVS-Studio) публикуется не в день написания. Есть множество этапов (вычитки, перевод на английский и прочее), которые скрадывают время. Ждите .NET Digest 8 :)
Да, конечно, поправил. Спасибо!
И у меня аналогично. Особенно, если в чьих-то исходниках используют библиотеки, которые применяю и я. Это повод найти для себя новые варианты работы с ними, исправить у себя ошибки и т.д.
Спасибо за комментарий.
Возможно. Поэтому я и написал, что это не точно ошибка, а просто подозрительный код.
Спасибо за предложение) Может, действительно, добавим разделы по темам для статей.
Спасибо, будем стараться !. Расширения свойств, действительно, должно быть полезным :)
Рад, что вам понравилось. Будем улучшать формат дайджеста)
Спасибо за фидбэк! Будем улучшать :)
Нет, в таком случае анализатор не будет выдавать предупреждение, т.к. иметь в массиве одинаковые элементы является нормальной ситуацией. Здесь же одно из подвыражений явно ошибочно, т.к. если бы первое подвыражение было true, то до второго даже не дошли бы.
А не подскажете конкретнее случай про который вы пишете?
Если вы про подобное сравнение одного и того же элемента массива с дублирующимся числовым литералом, то да, анализатор подобное поймает.
Интересно, про 'null & 0' не знал. А какой смысл проверять на null value type? Manageability это свойство с типом перечисления SettingsManageability и оно не nullable.
Конечно, в статье не всё отражено, вставить всё просто невозможно. Что-то считаешь незначительным, что-то не для всех. Про производительность я соглашусь, но если начинать перечислять, то в комментарии всё равно кто-то придёт и напишет, что что-то забыли :). Поэтому решил ограничиться ссылкой на исчерпывающую статью. Тем более, лучше Тауба сложно сделать.
А вот про отдельные устанавливаемые пакеты действительно лучше сделать отдельные статьи (хотя тогда это будет копирка статей Microsoft), так как здесь хотелось выделить более общие вещи.
Спасибо, за большой комментарий. Постараемся в следующих статьях про .NET учесть.
Да, есть такой момент, но на момент публикации статьи через dotnet-install скрипт уже можно было установить 8.0.100. А теперь ещё и на официальной странице для скачивания появилась новая версия.