> Привет эксперту по качеству кода от разработчика nginx.Привет, эксперты по проприетари и секретам.
> Смею заверить, что качество кода является одним из первостепенных критериев,
В сабже это как-то сильно заметнее. Идем на https://github.com/lpereira/lwan (большая кнопка на их сайте на главной страничке). Там висит 4 билдстатуса. Статусы апдейтятся ботами, близко к реалтайму. Там и сканы coverity и прогон юнит-тестов. А на сайте расскажут про afl и asan/ubsan. Там сразу понятно что люди этим занимаются, а кто не знал - получит отсыл к паре хороших инструментов.
> опция -Werror используется по умолчанию.
Как остальные должны догадываться о том что у вас разработчики делают? Не говоря о том что у nginx самопальная система сборки и чтобы найти где это - надо отдельно повозиться.
> сборка и тестирование на десятках виртуальных машин
Где все это видно? Как это заявление проверить?
> Мы активно разрабатываем и поддерживаем набор функциональных тестов. Счет тестам идет на тысячи.
Но об этом только вы и знаете. Остальные об этом в лучшем случае могут догадываться.
> Можете свободно пользоваться и принять участие в разработке: http://hg.nginx.org/nginx-tests/
У меня на прицеле под пушистым кроликом и asan'ом уже есть парочка интересных мне проектов. Без коммерческих версий, зато с git'ом. Мне так больше нравится.
> Покрытие кода тестами мониторится с помощью специального анализатора.
Где это видно окружающим?
> анализаторами, в том числе упомянутым вами Coverity еженедельно. Обнаруженные проблемы
> тут же рассматриваются и устраняются.
Бэджик coverity в вебе который апдейтится околореалтаймно, как у сабжа - сильно убедительнее.
> Для проверки соответствия формата типу переменных в функциях логгирования был написан и
> используется специальны плагин к clang.
Вообще, на удивление неплохо. Признаю: я недооценил используемые в nginx методы разработки. Потому что вы это как-то очень хорошо запрятали. А я не имею ресурсов производить археологические раскопки.
> 24x7 трудится несколько машин с фаззингом и ASan-ом. О том, что несколько
> проблем было найдено таким способом можно узнать из коммит логов и на сайте afl-fuzz.
Для меня hg означает "пусть логи коммитов почитает кто-нибудь другой". Хотя у вас вроде и зеркало в гите есть. Но, как обычно, об этом никто не узнает.
> Периодически нас пытаются проверять ребята из PVS-Studio, о чем даже писали статью:
> http://www.viva64.com/ru/b/0246/
...
> которые по его мнению мешают nginx быть надежным, безопасным, производительным и
> функциональным веб-сервером.
Ок! Если все перечисленное правда - я пожалуй был неправ в моей оценке. Однако я нахожу такую конспирацию странной. Вроде все нормально делаете. А почему стесняетесь об этом рассказать?
> Жду также советов по улучшению качества кода и совершенствованию методов тестирования.
Из того что под руку попалось, разное:
1) Дайте задание вашим тестировщикам попробовать найти зеркало в git, зайдя на nginx.org и послушайте что они скажут. Опенсорс начинается с кода, так? Желательно в нормальной VCS. Но это - не про nginx, найти его исходник целый отдельный гемор. Для сравения, на https://lwan.ws кнопка с исходниками в нормальной vcs светится на самом видном месте.
2) Кстати, на https://nginx.org/ у вас вообще кто-нибудь пробовал заходить? Или вы своими сайтами не пользуетесь? Почему я спрашиваю? Спросите ваших QA. Они у вас есть? Их ничего не смущает? А у той командочки из полутора человек с этим все оки. Парадокс качества. Хоть и не кода.
3) Скажите, разработчикам nginx лениво набрать несколько букв? Или у них редактор автодополнение не умеет? Кто такие u, c, b, s и что там еще? Если это следует какому-то сильно местному convention - может хотя-бы это документировать на видном месте? А лучше бы называть переменные так чтобы было понятно что это. Ну то-есть если это вопрос жизни и смерти - в этом конечно можно разобраться, но...
4) Ну вот допустим нужно мне кастомно обработать запрос и что-то дернуть в системе, etc. Это немного специфичное желание, но бывает что "глупого" сервера чуть-чуть не хватило, сервер приложений - перебор, а у сабжа код который делает именно так, на сях, занимает половинку экрана, просто эпично. В гите есть более крутой пример, с sql и json, странички полторы. Nginx'у бы не помешал пример какого-нибудь максимально тривиального модуля в том же духе на видном месте.
5) Может быть я глупый, но все-таки. Nginx использует каую-то самобытную систему сборки. И я бы не сказал что мне очевидно как в нее добавить сборку какого-нибудь своего довеска.
6) Я не знаю как ваша политика партии относится к такому, но CI'ные статусы на публику вывесить и опубликовать как вы тестируетесь по моему было бы хорошей идеей.
А из-за 4) и 5) nginx вроде как бы и позволяет модули писать, но порог вхождения в десятки раз выше сабжа. Где пример не страшно выложить прямо на главной.
> Спасибо.