Pull to refresh
50
10
Artem Rovenskii@rip_m

User

Send message

Уточню, что мы разрабатываем полноценный коммерческий статический анализатор для Go. Полученный опыт хорошо ложится на создание кастомных линтеров, которые бывают полезны, о чём и рассказал в статье.

Нам кастомный линтер был полезен для поиска одного отладочного метода, который используется только для отладки и валит тесты. Были случаи, когда разработчики забывали убирать его вызовы, это не находили на ревью и валились ночные тесты.

Спасибо за комментарий и спасибо за наводку на видео от Авито, я его ещё не видел.

.NET Digest (как и другие материалы PVS-Studio) публикуется не в день написания. Есть множество этапов (вычитки, перевод на английский и прочее), которые скрадывают время. Ждите .NET Digest 8 :)

Да, конечно, поправил. Спасибо!

И у меня аналогично. Особенно, если в чьих-то исходниках используют библиотеки, которые применяю и я. Это повод найти для себя новые варианты работы с ними, исправить у себя ошибки и т.д.

Спасибо за комментарий.
Возможно. Поэтому я и написал, что это не точно ошибка, а просто подозрительный код.

Спасибо за предложение) Может, действительно, добавим разделы по темам для статей.

Спасибо, будем стараться !. Расширения свойств, действительно, должно быть полезным :)

Рад, что вам понравилось. Будем улучшать формат дайджеста)

Спасибо за фидбэк! Будем улучшать :)

Нет, в таком случае анализатор не будет выдавать предупреждение, т.к. иметь в массиве одинаковые элементы является нормальной ситуацией. Здесь же одно из подвыражений явно ошибочно, т.к. если бы первое подвыражение было true, то до второго даже не дошли бы.

А не подскажете конкретнее случай про который вы пишете?

Если вы про подобное сравнение одного и того же элемента массива с дублирующимся числовым литералом, то да, анализатор подобное поймает.

Интересно, про 'null & 0' не знал. А какой смысл проверять на null value type? Manageability это свойство с типом перечисления SettingsManageability и оно не nullable.

Конечно, в статье не всё отражено, вставить всё просто невозможно. Что-то считаешь незначительным, что-то не для всех. Про производительность я соглашусь, но если начинать перечислять, то в комментарии всё равно кто-то придёт и напишет, что что-то забыли :). Поэтому решил ограничиться ссылкой на исчерпывающую статью. Тем более, лучше Тауба сложно сделать.
А вот про отдельные устанавливаемые пакеты действительно лучше сделать отдельные статьи (хотя тогда это будет копирка статей Microsoft), так как здесь хотелось выделить более общие вещи.

Спасибо, за большой комментарий. Постараемся в следующих статьях про .NET учесть.

Да, есть такой момент, но на момент публикации статьи через dotnet-install скрипт уже можно было установить 8.0.100. А теперь ещё и на официальной странице для скачивания появилась новая версия.

FirstOrDefault возвращает не индекс, а первый элемент коллекции, но по контексту я думаю, что в коллекции индексы. Так что первый элемент может быть 0.

Думаю, что самым лёгким вариантом будет использование дефолтного значения, если нет подходящего элемента:
FirstOrDefault(-1)

Спасибо за пример. Я думаю, что анализатор мог бы для подобных случаев понижать уровень предупреждения, или мы и вовсе могли бы добавить это в исключения. Рассмотрим доработку :).
Если что по всем вопросам можно написать нам в поддержку.

Nullable безусловно полезная штука, хотя и холиварная. Кому-то нравится, а кому-то нет. Мне, например среди C# ошибок из этой статьи больше всего нравится про бесполезный '??'. Про этот кейс могу точно сказать, что его VS 2022 не ловит. Да и статические анализаторы же не только разыменования нулевых ссылок ищут.

ind == 0 ? 0 : -1;
Вы имелли в виду вот так? Индексы обычно начинаются с 0, так что подобное исправление будет ошибочным :).

1

Information

Rating
558-th
Works in
Registered
Activity