Pull to refresh

Comments 29

На словах «все делают ошибки» у меня в голове сформировалась фраза «Владимир Владимирович, перелогиньтесь!»
Он зарезервирован для статей, где мы смотрим в чей-то код. :)
Чувствую себя как в магазине на диване, где мне доказывают, что моя жизнь бессмысленна без терки, нарезающей овощи звездочками.
Статья справедлива по отношению к любому статическому анализатору кода. Я её писал как общетеоретическую. PVS-Studio упоминается только в конце.

А доказывать надо. Иначе народ совсем думать не хочет. И пишет на автомате "valgrind рулит и педалит". Интересно, какие ошибки найдёт valgrind из перечисленных здесь?

Каждый из рассмотренных пунктов не так очевиден. Вот про использование один раз. Вот про то, что опытные программисты делают только сложные ошибки: 1, 2.

На тему динамического анализа.

Это всё из свежего. Но я слышу пнплогичное на форумах и в почте регулярно. Надо что-то делать. :)
А я такого посыла в статье не проследил. И вообще, для такого языка, как C++, статический анализ — не роскошь, а необходимый для более-менее сложного софта инструмент. Впрочем, в случае именно PVS-Studio тезис о роскоши можно оспорить (:
«Динамический и статический анализ это просто две разных методологии, которые дополняют друг друга.» — согласен только с этим, всё остальное — бла-бла-бла. Действительно, статический анализ кода, если уж он введён в процесс разработки, должен выполняться регулярно, как прогон тестов и т.д. Но ценность его работы уменьшается экспоненциально в зависимости от кол-ва итераций разработки и квалификации разработчиков.

Сам по-себе анализ программистских багов мало полезен, нужна цельная система анализа кода, система для выделения целых кусков кода, и не только «ошибочных», а, например, кандидатов на рефакторинг, кандидатов для реализации в виде стандартных паттерн проектирования и т.д. А пока, статистический анализатор, полезен, только при разгребании унаследованного кода.
Понятно, вы хотите систему, которая будет умнее 90% программистов. Советую запастись эликсиром молодости. Вообще, смешно и грустно читать такие рассуждения. Вы просто не в курсе текущего состояния технологий и рассуждаете, как дети об ИИ: «Вот бы робот умел летать и лазером так пиу-пиу».

Но ценность его работы уменьшается экспоненциально в зависимости от кол-ва итераций разработки и квалификации разработчиков.

Вообще-то, вредоносность ошибки на поздних стадиях разработки выше, так как ошибки чаще допускаются в функционале более высокого уровня, чем на ранних стадиях, да и сама система становится сложнее. К тому же, отладить и покрыть тестами обособленные базовые алгоритмы куда проще, чем систему в целом или её ключевые части, так что ценность статического анализа к концу разработки становится только выше.
Я боюсь, что это Вы не в курсе, что такое ИИ? И зачем-то его сюда прилепили. Паттерн — это характерный фрагмент PT/AST, который можно детектировать. А текущее состояние технологий, как и Ваших знаний, — говённое, раз Вам кажется, что поиск деревянного патерна это задача ИИ.

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

P.S.: уж не знаю почему, но мне упорно лезет на ум «солидная фирма возьмёт в аренду дырокол». Извините, контролировать свои мысли я пока что не научился.
Вы всё еще продолжаете втирать людям, что они тупые и не смогут писать собственные расширения для анализа кода. Вы считаете это продуктивным путем продвижения продукта? На Хабре есть куча людей, прекрасно разбирающихся в теории компиляторов, я думаю у многих есть собственные наработки в этой сфере. Скажите честно: «нам это экономически невыгодно, мы потратим 100 енотов на разработку, а заработаем едва ли одного енота». Не прикрывайте чистый маркетинг лживой заботой о пользователе, это выглядит очень фальшиво и заметно всем (ну может кроме вас).
Да ладно. Мне вот интересно почитать про тупые ошибки в реактосе, например. Пиар пиаром, но в целом посты интересные.
Ну так приведите пример статического анализатора с открытым кодом (или хотя бы просто бесплатного), который бы РАБОТАЛ и работал ЭФФЕКТИВНО, раз это так легко сделать, по-вашему.
раз это так легко сделать, по-вашему.

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

cppcheck
который бы РАБОТАЛ и работал ЭФФЕКТИВНО

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

Для себя давно уяснил у утвердил одно правило: не делает ошибок только тот, кто ничего не делает.

Ошибки являются, если так можно выразиться — неотъемлемой составляющей самой деятельности. Очень часто те или иные ошибки помогают раскрыть те или иные аспекты внутреннего процесса, о котором на момент начальной разработки дочернего процесса не было известно вообще.
Еще один миф, из-за которого, возможно, чаще всего отказываются использовать статический анализатор — слишком дорого. При этом все доводы о возможных потерях из-за невыловленных вовремя ошибках не принимаются во внимание…
Миф четвёртый – программисты хотят добавлять свои правила в статический анализатор
Нет, не хотят. На самом деле они хотят решить некоторые задачи...

Вы — не Стив Джобс и подобные механизмы «Вам это не нужно, я лучше знаю» (с) не пройдут, у Вас нет толпы фанатов Вашей продукции.
UFO just landed and posted this here
Роман, спасибо большое за подробный комментарий. Такие отзывы всегда очень ценны. Я хочу кое-что прояснить.

Во-первых, Вы правильно определили целевую аудиторию как компании с большим числом разработчиков. На «домашних» пользователей или индивидуалов мы не ориентируемся. Невозможно себе представить, что программист имеет дома такой большой проект, что для него будет актуален статический анализ кода. Ведь он показывает себя только на больших проектах.

Можно возразить – но ведь есть консалтеры, которых нанимают компании для работы над проектом? В таком случае компания вполне в состоянии покупать им инструменты и такая практика у нас есть.

Так что в любом случае цель таких статей – зацепить разработчиков из больших компаний (как это сделать еще – не понятно).

Однако идея оценивать «ошибки» она очень здравая в плане сегментации. Ведь есть маленькие компании, а есть большие компании. И с больших хочется брать больше денег (да побольше, побольше). Обычно практикуют определение цены от количества строк кода в проекте. Мы пока не хотим к этому привязываться, так как хотим сохранить простоту покупки и использования инструмента.

Но зависимость цены от ошибки… Не понятно что это такое. Статический анализ дает диагностические сообщения, которые разумеется не все реальные ошибки. Как «назначать» цену? Поясните, пожалуйста на примере.
UFO just landed and posted this here
Спасибо за идею, но ДЛЯ НАС именно СЕЙЧАС это не подойдет. Дело в том, что такую методику можно продать только при личной встрече в офисе клиента. Сейчас же клиент просто покупает с сайта, иногда так и не общаясь с нами. И это нас спасает, ведь мы маленький стартап (всего несколько человек). То есть продавать лично мы пока не можем. Тем более, что мы в Туле, а 50% клиентов — США.

То есть способ возможно годится для крупных компаний, но не годится для нас, так как нам нужна простота продажи.
UFO just landed and posted this here
Невозможно себе представить, что программист имеет дома такой большой проект, что для него будет актуален статический анализ кода.
Ну, во-первых, у каждого программиста есть свой набор велосипедов, которые он так или иначе «вылизывает до блеска». Во-вторых есть ведь проекты, для души, или OpenSource, Вы же анализировали несколько подобных. В-третьих, есть фриланцеры.
Как быть коллективам подобных проектов, кто хочет, но не имеет возможности? Или это все «не целевая аудитория»?
Вылизывает для блеска — не значит, что готов покупать инструменты для них.
Для сторонних консалтеров заказчик покупает инструменты и это обычная практика.
OpenSource типа Chromium или clang — это не для души.

Ну а для прочих есть вот это:
www.viva64.com/ru/b/0092/
CppCatИдеологию меняется. Попробуем ориентироваться на рядового Джо. Предлагаем новый статический анализатор CppCat. Ценовая политика самая понятная: 1 лицензия = $250. Мы считаем, что 80% людей функционал CppCat будет достаточен. Тем, кому понадобится что-то большее или какие-то доработки — тем, как и раньше, предлагается «старший брат» — PVS-Studio. Посмотрим, что из этого выйдет. Уж если это не массовый продукт, то тогда не знаю… :)
Sign up to leave a comment.