Google имеет лучшие практики проверки кода из всех, где я когда-либо видел. Все, кого я там встретил, полностью согласны с тем, как делать проверки кода. Мантра - это «обзор рано и часто».
Предположим, вы используете процесс, который выглядит так, как предложил Грэм Ли. (Это процесс, который я раньше использовал сам.) Проблема в том, что рецензентов просят взглянуть на большие куски кода. Это намного больше усилий, и заставить рецензентов сделать это труднее. И когда они это делают, им сложнее заставить их выполнить всю работу. Более того, когда они замечают проблемы с дизайном, труднее заставить разработчиков вернуться и переделать весь свой рабочий код, чтобы сделать его лучше. Вы все еще ловите вещи, и это все еще ценно, но вы не заметите, что упускаете более 90% выгоды.
В отличие от Google, проверка кода на каждый коммит, прежде чем он может перейти в систему контроля версий. Наивно многие думают, что это будет тяжелый процесс. Но на практике это не сработает. Оказывается, гораздо проще просматривать небольшие фрагменты кода изолированно. Когда обнаружены проблемы, изменить дизайн гораздо меньше, потому что вы еще не написали кучу кода вокруг этого дизайна. В результате гораздо проще выполнить тщательный анализ кода, и гораздо проще исправить проблемы, измененные.
Если вы хотите сделать обзор кода, как это делает Google (что я действительно очень рекомендую), есть программное обеспечение, которое поможет вам в этом. Google выпустил их инструмент, интегрированный с Subversion под именем Rietveld . Go (язык) разработан с версией Rietveld, которая модифицирована для использования с Mercurial. Существует переписать для людей, которые используют Git по имени Gerrit . Я также видел два коммерческих инструмента, рекомендованных для этого, Crucible и Review Board .
Единственная, которую я использовал, это внутренняя версия Google от Ритвельда, и я был очень доволен ею.
Я никогда не разделял код для проверки по фиксированным / не зафиксированным критериям - единственные критерии, с которыми я столкнулся, это то, что модульные тесты и интеграционные тесты имеют зеленый цвет.
Что касается отслеживания, я бы порекомендовал обновить поток в вашем любимом трекере. Для экзамена вместо:
Вы можете представить еще один этап (обзор):
Поэтому для каждого тикета в состоянии « Реализовано» вы можете назначить рецензента, и только проверенные тикеты перейдут в QA.
источник
У меня есть только один опыт проверки кода, поэтому я не могу сказать, насколько он хорош.
Я работал с небольшой (~ 10-15) группой кодеров, и мы использовали VS Team Foundation Studio. Нас попросили фиксировать код примерно раз в день, и перед каждым кодом коммитов кто-то другой в группе должен был проверять его (надеюсь, кто-то также участвовал в проекте). Во время фиксации имя человека также было включено в поле.
источник
Я работал в команде, которая проверяла все, что проверялось в зависимости от изменений, в течение нескольких проверок в неделю. Это означало, что мы не всегда были в курсе обновлений кода, но достигли того, что намеревались достичь.
Итак, сначала спросите, чего вы хотите достичь, просмотрев код. В нашем случае дело не в том, чтобы ловить разработчиков-идиотов, а в предположении некомпетентности. Это позволило команде получить обзор других областей системы и позволило исправить некоторые сомнительные дизайнерские решения до того, как они были заложены в камень. Под сомнением я подразумеваю, что всегда есть более чем один способ снять шкуру с кошки, и не все знают, что нож для снятия шкур уже есть в наборе инструментов, так сказать.
источник
Способ, которым мы занимались обзорами кода, заключался в том, что каждая задача нашего программного обеспечения для отслеживания проектов была рассмотрена. В то время мы использовали Mantis и SVN. Наши проектные обязательства были связаны с обеими системами. Каждый коммит должен был быть привязан к заданию в богомоле. Как только задача была выполнена, ей был присвоен статус «Готов к просмотру».
RFR-объекты затем были отобраны любым, у кого было свободное время для проверки, или были назначены конкретному человеку для проверки. По пятницам все пункты RFR должны были быть рассмотрены до конца дня, чтобы не было переносов на следующую неделю.
Единственными проблемами, с которыми мы столкнулись при этом процессе, были большие элементы, которые имели массу файлов. Чтобы справиться с этим, кодер и рецензент собирались вместе, и кодер проходил через изменения, пока рецензент не понял их. Они будут делать обзор кода вместе.
Этот процесс прервался, когда руководство продиктовало, что если было выполнено одноранговое программирование, отдельная проверка кода не требовалась. Разработчики стали слабо относиться к этому процессу, и начали появляться небольшие глупые ошибки. В конце концов мы вернулись к первоначальному процессу, и все вернулось вместе.
источник
В моей команде мы использовали практику в течение прошлого года или около того, что, кажется, работает очень хорошо.
Наша организация использует Perforce для контроля версий. Perforce (по состоянию на год назад) включает функцию стеллажей. С помощью стеллажей я могу «отложить» свои изменения для конкретной проблемы. Они хранятся в системе контроля версий, но не регистрируются. Затем я прошу другого разработчика в моей команде пересмотреть код.
Другой разработчик может просматривать мои ожидающие изменения в Perforce со своего собственного компьютера и сравнивать изменения с самыми последними ревизиями. Он также может «отменить» свою локальную машину, если хочет попробовать мои изменения. Когда он закончил обзор, он дал мне знать. Затем я проверяю свой код с помощью «Reviewed by Bob» в конце комментария.
Это сработало очень хорошо для нас. Прежде всего, обзоры кода в целом оказались чрезвычайно полезными. Кроме того, функция стеллажей от Perforce позволяет нам проводить проверки без регистрации или каких-либо серьезных трудностей, даже несмотря на то, что наша команда широко распространена - это очень важно. И это прекрасно работает.
источник