Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 8

Очень бы хотелось увидеть возможность автоматического исправления найденных PVS-Studio ошибок. Конечно это не всегда можно реализовать, но есть целый класс ошибок, о которых можно не только оповещать, но и смело править. Как это делает один из инструментов похожего толка, только для JavaScript.

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

Получится клон R#/ReSharper for C++ :)
Спасибо за интерес к нашему продукту и пожеланиям.

По поводу автоматических правок. Таких планов нет. Автоматическими изменениями кода занимаются инструменты, осуществляющие рефакторинг или форматирование кода. Мы не развиваем инструмент в этом направлении. Мы сосредоточены именно на поиске потенциальных ошибок и потенциальных уязвимостей.

Говоря о правке ошибок, это возможно только для очень простых случаев. В результате, эта функциональность будет столь ограничена, что лучше вообще её не делать. Тем более всё равно слишком велик риск неправильного изменения кода и человек обязан участвовать в этом процессе.

Подробнее эта тема раскрыта в статье "Почему PVS-Studio не предлагает автоматические правки кода".

Благодарю за развёрнутый ответ.

Автоматическими изменениями кода занимаются инструменты, осуществляющие рефакторинг или форматирование кода.

Рефакторинг - это плановое изменения кода по обозначенному маршруту в рамках конкретного проекта.

Форматирование - это визуальное оформление кода: отступы и точки с запятыми.

Я же говорю об автоматическом исправлении проблемных мест в соответствии с лучшими правилами построения качественного кода.

Пример из статьи очень не плохой кандидат для автоматизации:

Говоря о правке ошибок, это возможно только для очень простых случаев. В результате, эта функциональность будет столь ограничена, что лучше вообще её не делать. Тем более всё равно слишком велик риск неправильного изменения кода и человек обязан участвовать в этом процессе.

Тут я с вами не соглашусь абсолютно. И вот почему, давайте разбираться.

Говоря о правке ошибок, это возможно только для очень простых случаев.

Какие случаи вы считаете простыми? Наверняка те, с которыми научились работать, и те которые начали автоматизировать. Начало в любом случае будет простым. Но из этого простого решения, постепенно начнут складыватся более сложные. К примеру в ?Putout есть возможность перевода CommonJS в ESM и наоборот.

В результате, эта функциональность будет столь ограничена, что лучше вообще её не делать.

Тут вы делаете вывод из собственного утверждения. А ведь простой функционал - это быстрый MVP и прямая польза.

Тем более всё равно слишком велик риск неправильного изменения кода

Риск есть всегда, однако есть и риск успешного приминения трансформаций кода, и тогда ошибки можно будет не только найти но и применить исправление. А неправильные изменения кода должны ловить тесты и компилятор.

> и человек обязан участвовать в этом процессе.

В этом я с вами не буду спорить, конечно за человеком остаётся решение. Но чем больше щепетильной монотонной работы передаётся машине, тем больше времени человек может посвящать творчеству и архитектурным решениям. Да, неплохо присматривать за результатом, но одно дело проверять результат, и совсем другое его выдавать.

Мне кажется мы друг друга не понимаем. Например, я не понимаю, почему Вы назвали пример из статьи «не плохой кандидат для автоматизации». Даже я сам не уверен, как должна выглядеть правка. Какая уж тут автоматизация. Возможно, Вы поспешили и не углубились в повествование: изменение на картинке не является правильным исправлением.
Проблема в том, что пока предупреждение висит, мы знаем, что потенциально в коде есть проблема. Если исправить автоматически, да ещё неправильно, проблема будет «заметена под ковёр» и мы с ней столкнёмся, когда программа неправильно отработает, или хакеры научятся через этот баг ломать сервис.

PVS — инструмент, продаваемый бизнесу, а не одиночкам.
Если какому-нибудь стажёру дадут задание «разберись тут с предупреждениями», и он не сможет понять суть проблемы (а спрашивать у старших товарищей постесняется), и примет предлагаемое «исправление», негатив останется от инструмента, а не от стажёра.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий