Как стать автором
Обновить

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

Имхо в самом начале статьи не хватает фразы «На правах рекламы» ибо здесь вообще нет ничего полезного кроме рекламы.
Мистическим образом вы находитесь в блоге компании, где все так или иначе является рекламой ;)
Программистам можно читать. Ну круто же. Ведь, по-большоему счету, именно работа программистов упрощается. Вместо того, чтобы что-то долго настраивать, а потом долго разбираться в куче выхлопа анализатора, тебе будут сразу сообщать полезный сухой остаток.
На мой взгляд, здесь главная сложность — чтобы компании поверили в силу NDA и показали код сторонней организации.
Как думаете, что нужно сделать/предоставить, чтобы эту сложность решить?
Ничего не сделаешь. Есть печальный опыт слива баз, алгоритмов, и прочего из-под НДА.
Мы просто в РФ.
С сотрудником с улицы есть такие же риски. Только у компании репутация еще имеется.
А вы гарантируете, что ваши сервера не взломают? Что исходники не сольет случайно ваш же сотрудник?
Этот вопрос очень серьезный. На него есть несколько вариантов ответа. Первый — самый простой:
1. Да.

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

Не вижу, почему компания не может мирится с риском в случае такого контрагента.
Возможно расчет на то, что если человек сольет, то сделает это бесхитростно и его будет просто вычислить. А компания вначале посчитает свою выгоду и найдет подходящего покупателя :) Плюс возможности по использованию кода в своих целях у компании и у одного единственного человека сильно разные.
Обычно утечки исходников боятся программисты. Любой менеджер понимает, насколько велика разница между исходниками и полноценным продуктом.
А как вы справитесь с кодовой базой крупной компании в N×100млн loc?
Большим ценником.
Разумеется, но если вы говорите, что
Можно думать об этой услуге, как о сотруднике в штате.

То для анализа большой кодовой базы в обозримые сроки нужно несколько сот таких сотрудников. Ваш софт-то пережует, но вот миллионы ложных и не ложных срабатываний кто будет анализировать?
Совершенно очевидно, что для больших проектов цена другая.
А если речь о технологиях, то сейчас мы прекрасно жуем проекты порядка 10 млн строк кода.
То есть для N=0.1 вопрос уже опробован.
PVSAS? :)
Хорошая тема, но, подозреваю, что 100к/мес — не взлетит.
Хотя, вру. Не взлетит как массовый сервис. Как сервис для крупных (в начале) компаний — взлетит.
Можно думать об этой услуге, как о сотруднике в штате.
100к/мес без НДС но и без других налогов, это как сотрудник на 65к в месяц. В принципе, неплохо.
А как на счет «выкупа» настроек? То есть можно ли будет «соскочить с иглы» и таки переделать на проверку пост-билда?
Можно.
Кстати, как раз очередной пример по пункту N4. Сейчас нам написал человек, который обнаружил, что анализатор ругается (V575) на следующий код:

size_t strLen = _snprintf_s(NULL, 0, 0, "%sSeg%d-Frag%d",
                            me.url.c_str(), sre.firstSegment, fre.firstFragment+j);

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

size_t strLen = _snprintf_s(NULL, 0, 0, "%sSeg%d-Frag%d", "123", 11, 22);
cout << strLen << endl;

Это код распечатает 0. Оказывается, что это не ложное срабатывание, а ошибка. Вот так и живём.
> Если buffer или format является пустым (NULL) указателем или если значение параметра count меньше или равно нулю, то вызывается обработчик недопустимых параметров.

эээ… а оно когда-нибудь работало?
В сообщении, на которое вы отвечаете ясно написано, что не работало. Но будь это обыкновенная snprintf, созданная в соответствии с C99, всё было бы в порядке: значит, вероятно, разработчики, не читая MSDN, решили, что микрософтские функции работают в соответствии с C99 (хотя таких функций там нет).
Ясно написано, что написал человек, который решил, что это ложное срабатывание. Значит, он был уверен, что этот код — рабочий.
Это похоже на кусок кода, используемого для отладки. Там вполне могло быть незаметно. Возможно даже malloc(0) всё время возвращал что‐то, куда можно записать требуемое число байт — я не знаю, что конкретно значит «a zero-length item in the heap»: если этот элемент всё время выделяется на странице, доступной для записи (а зачем выделять где‐то ещё?) и после него достаточно свободного пространства (или не свободного, но занятого чем‐то некритичным), то всё вполне могло работать.
Сама идея делегировать аудит имеет право на жизнь. Похоже на тестирование — очень легко делегировать.

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

При постоянном создании проблем у автора снижаeтся performance и зарплата в итоге, а вскоре и сокращение.
А расскажите, какие еще есть решения в сфере аудита кода? Вы же, конечно, исследовали имеющиеся варианты, что вас выгодно отличает от конкурентов?
Если часть или весь бизнес компании связан с разработкой программных продуктов, то у нее есть варианты:
1. Полностью надеяться на своих программистов, ведь с ТАКИМИ зарплатами они же не могут ошибаться. Или могут?
2. Использовать инструменты для контроля кода. Например, статические анализаторы.
3. Использовать услуги другой компании, для регулярного контроля кода.

Мы можем помочь с пунктами 2 и 3.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий