четверг, 29 октября 2015 г.

как бы сделать анализатор кода, чтоб его клиенту не продать

привет ребята,
нынче модно говорить про анализ кода, вот и я решил сказать пару слов.
помимо того, что модно говорить про анализ кода, еще стало популярно разрабатывать анализаторы кода и многие состязаются в данной дисциплине, а потом предлагают свои продукты на продажу за умеренную цену.
при этом преподносится все обычно что-то вроде:
"покупайте Крутой Анализатор Кода за Cто Пицот, это самый лучший анализатор, он рассчитан специально на безопасничков и пишет отчеты на русском языке".
O_o
что здесь не так?
  1. безопаснеков заведомо мало, ну пусть будет тыща безопаснеков в стране, которым внезапно нужен позарез анализатор кода. из этой тыщи безопаснеков нужная сумма для покупки наберется у десяти человек. вот и будет потенциальная клиентская база Крутого Анализатора Кода :D
  2. любой анализатор кода будет генерить 9000+ каких-то сообщений (часть будет фигня), которые нужно интерпретировать и перепроверить человеку-спецу. если безопасник может интерпретировать отчет анализатора и понять, что критично, а что вообще неприменимо, то ему вообще неважно на каком языке отчет, ему главное знать места в коде и хотя бы примерно тип недостатка. но скорее всего знаний безопасника будет недостаточно для понимания реальной безопасности приложения при любой степени детализации отчета и любом языке, хоть русском. и надо будет обращаться к разработчикам, чтоб они разгребали и перепроверяли.
  3. разработчики обычно не любят, когда их запаривают проверять отчеты анализаторов, потому что там большинство будет фигня. но ладно пусть даже они проверят раз, это еще можно стерпеть, но обычно код не стоит на месте, а дописывается периодически и значит надо будет проверять приложение по-новой и старые фолсы тоже попадут. поэтому при каждой новой проверке приложения должен быть механизм исключения старых фолсов из будущих отчетов, но такой механизм обычно мало кто делает. а перепроверять каждый раз одни и те же сработки - это любого самого терпеливого задолбает, и использование Крутого Анализатора Кода будет сопровождаться атмосферой ненависти).
  4. при этом сама по себе целевая аудитория разработчиков - это те люди, которым в первую очередь была бы полезна автоматизация проверки/исправления ошибок. и их при этом много и у них даже есть деньги на инфраструктуру и тулзы для разработки. но как раз на эту аудиторию местные вендоры не сильно ориентируются, и даже интеграцию с привычными средствами разработки делают в последнюю очередь, ведь главный ориентир - это безопаснички (те 10 человек)). но зато есть фича скачки кода из гитхаба например, круто.
  5. заодно разработчики могут дать нормальную обратную связь по анализатору, что коряво работает, что совсем не работает, а что лучше было бы запилить и т.д. Седня одни фреймворки, завтра другие, седня одно окружение, завтра другое. вендору анализатора за всеми этими тенденциями промышленной разработки уследить без шансов, а значит что-то будет не охвачено, если аудитория разработчиков не учитывается.
  6. если аудитория более массовая (например тыща разработчиков против десяти безопасничков), значит и цена может быть не Сто Пицот, а какая-нибудь более доступная для населения - Пицот к примеру. и тогда люди бы стали чаще использовать и видно было бы какой анализатор реально работает, а от какого польза только в рекламных материалах вендора.
ну и по мелочи: языки и стеки анализируемые обычно у всех примерно одинаковый набор, а то что реально было бы вау сделать, типа крутого анализа джаваскрипта - это не  шибко спешат делать. а реально если кто сделает крутое предложение в части анализа джаваскрипта, тот был бы на коне, кажись.
а до тех пор в большинстве случаев может так получится что и не стоит платить Сто Пицот, потому что либо самоделки под свои нужды бывает проще заточить и использовать, либо бывает что и бесплатные тулзы тоже что-то находят.
Такие дела ;)