Pull to refresh

Comments 11

Кушать хочется. :)

Если хочется попробовать — проще взять триал.

Если речь именно о регулярном бесплатном использовании — в этой статье разобрано несколько вариантов (для студентов, некоммерческих проектов и т. п.).

невозможно скушать, то что не продано.

спасибо за статью, я думаю меня устроит вариант с ремарками в коде, тем более это всего 1 файл.

Всегда пожалуйста. Здорово, что удалось найти подходящий вариант использования. :)

Было бы интересно прочитатать если бы вы опубликовали сравнение вашего анализатора, SonarCube, и Microsoft.CodeAnalysis.NetAnalyzers.

Вопрос сравнения хороший, спасибо.

На самом деле коллеги уже проходили это на примере C++ анализатора. Ответ — в заметке “Почему мы не пишем о сравнении PVS-Studio с другими статическими анализаторами кода”.

Однако мне захотелось переосмыслить тему сравнения.
Комментарий получается большим, пришлось даже открыть Word, чтобы всё сформулировать. :)

Чуть позже напишу его в этой же ветке.

Тема сравнения инструментов на самом деле сложная. :(

Анализаторы — инструменты комплексные. То есть это не только про “выдать предупреждение”, но и про удобство интеграции, производительность, разные доп. возможности (типа лёгкого старта) и т. п.

Можно, конечно, всё свести к одним только возможностям анализа: чтобы предупреждения выдавал и не фолсил. Однако я думаю, это будет не совсем корректно.

Если всё-таки браться сравнивать инструменты исключительно по тем предупреждениям, которые они выдают — это тоже та ещё работёнка. Просто сравнить количество предупреждений — не вариант. Нужно тщательно анализировать вывод: смотреть true positives, false positives, а по-хорошему — и false negatives (хотя бы отталкиваясь от true positives других инструментов).

Окей, допустим, решили посмотреть true positives. Тут тоже начинаются интересности: одну и ту же ошибку разные инструменты скорее будут всего подсвечивать разными сообщениями, а вероятно — ещё и выдавать их на разные строки. Этой темы я касался в докладе "Как устроено тестирование средства статического тестирования", когда рассказывал про тестирование на бенчмарках.

Допустим, сделали сравнение, потратили кучу сил и времени.

Побеждает PVS-Studio. Какая будет реакция? Скорее всего что-то вроде: “Ага, ну конечно. Статью же люди из PVS-Studio писали — какие неожиданные результаты…”.

Побеждает не PVS-Studio. Тут у меня, как заинтересованного лица, появляется сильное желание улучшить анализатор, чтобы он показал себя лучше. Почти 8 лет жизни в продукт вложено — шутка ли? :)

Получается, что я пришёл примерно к тому же, что описано в первом пункте статьи “Почему мы не пишем о сравнении PVS-Studio с другими статическими анализаторами кода”. Это хорошо — кажется, она не потеряла своей актуальности. :)

Как же быть?

Если рассматривать вопрос с прагматической точки зрения, я бы переформулировал его так: "Какой из анализаторов принесёт больше пользы на нашем проекте: A, B или C?"

Как это понять? Попробовать. :)

P.S. Если решите попробовать PVS-Studio, рекомендую полистать заметку: "PVS-Studio: 2 фишки для быстрого старта". Она небольшая, но рассказывает о двух важных механизмах, которые сделают знакомство приятнее.

P.P.S. И ещё стоит помнить о философии статического анализа.

Скорее всего многие из ошибок были подсвечены "warning"-ами самой средой разработки (или ее плагином). Но как говорится: "Я работаю как все - на отъебись". К сожалению, с таким отношением к коду/работе частенько сталкиваюсь :-(

Скорее всего многие из ошибок были подсвечены "warning"-ами самой средой разработки (или ее плагином).

Когда я разбирал логи анализатора, то работал в Visual Studio. Насколько я помню, в текстовом редакторе она ни одного из выписанных мест не подсветила.

Что из этого детектит Rider, а что нет — сказать не могу. В любом случае, факт в том, что всё описанное ушло в релиз. :)

К сожалению, с таким отношением к коду/работе частенько сталкиваюсь :-(

Интересно, если поделитесь мыслями на этот счёт: что с этим делать?

>> Когда я разбирал логи анализатора, то работал в Visual Studio ... она ни одного из выписанных мест не подсветила.

Я джавист и работаю в Idea, и она достаточно хороша (а можно еще и добавить/включить дополнительные плагины), но люди кладут прибор на ее warnings (компилится, да еще и работает)

>> Интересно, если поделитесь мыслями на этот счёт: что с этим делать?

Не знаю, к сожалению :-( Если вы тимлид и имеете власть, то можете попробовать включить TreatWarningsAsErrors у всех (как написал @nronnie), ну а также выставить жесткие правила на build-server (TeamCity/Jenkins/или что там у MS). А в целом это вопрос из разряда "Как заставить людей не мусорить/воровать и быть хорошими? :-) "

"На от...бись" лечится флагом

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

в файле Directory.Build.props всего солюшена :)

Sign up to leave a comment.