Страницы с тегами : codereview
Релиз SPCAF Contrib
SPCAF создавался для крупных компаний, которые работают с кучей подрядчиков, и для них очень актуальна проблема стабильности фермы в таких условиях. Проблемы, с которыми программисты сталкиваются во время разработки, в базовом наборе правил SPCop адресованы очень слабо.
Поэтому мы решили создать набор правил для SPCop, чтобы облегчить процесс разработки решений и ловить многие проблемы до того, как они проявятся во время тестирования или промышленной эксплуатации. Также создали правила, которые подсказывают best pratices при разработке решений.
Кстати мы это:
Как использовать
1. Поставить SPCop из галереи расширений Visual Studio
2. Скачать spcafcontrib.dll и положить в папку C:\Program Files (x86)\SPCOPCE\
3. Запустить анализ в Visual Studio

4. Анализируйте результаты и настраивайте правила

Заключение
Сайт SPCAF - http://www.spcaf.com/Ссылка на сайт проекта - http://spcafcontrib.codeplex.com/
Презентация - http://www.slideshare.net/gandjustas/sharepoint-code-quality
Ставьте, используйте, оставляйте feedback на сайте проекта.
3 правила создания списков SharePoint
Как ни странно, но на просторах интернета крайне мало информации как правильно делать списки и библиотеки SharePoint. В книгах об этом тоже редко пишут. Горькая правда заключается в том, что подавляющее большинство приложений содержит ошибки, связанные с развертыванием списков в SharePoint.
Чтобы устранить львиную долю этих ошибок, надо придерживаться следующих правил:
ContentType
Если вы хотите создать список, то не надо лезть в меню Add –> New Item –> List. Для начала создайте поля для списка и тип контента. Даже если вы думаете, что тип контента будет ровно в одном списке, то все равно создавайте тип контента.
Тип контента вместе с полями деплойте в фиче уровня Site, желательно скрытой, чтобы никто не смог просто так отключить и поломать решение.
В этой же фиче необходимо выполнить все привязки Workflow, различных Policy и форм.
Важно чтобы после активации фичи тип контента был готов к использованию.
ContentTypeBinding
Элемент ContentTypeBinding позволяет привязать тип контента к экземпляру списка. При этом нет необходимости создавать List Definition. Достаточно создать список из одного из стандартных шаблонов, а потом сделать привязку.
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <ListInstance Title="List1" OnQuickLaunch="TRUE" TemplateType="100" FeatureId="00bfea71-de22-43b2-a848-c05709900100" Url="Lists/List1" Description="My List Instance"> </ListInstance> <ContentTypeBinding ContentTypeId="0x0100EDFEDEA571A241FD80430F4D48A91346" ListUrl="Lists/List1"/> </Elements>
Code Review vs Testing
Почти все знают, что баг в программе, исправленный на этапе использования, стоит примерно в 100 раз дороже, чем исправленный до использования. Кто не верит – может почитать результаты исследования Shull defects paper.
Если спросить программистов какой метод исправления поиска и исправления багов наиболее эффективный, то большинство ответит - “тестирование”. И будут неправы…
Эффективность различных методов устранения ошибок
В книге МакКоннелла CodeComplete есть статистика (да-да, все её читали, но никто сходу не может вспомнить что там написано), которая разрывает мозг многим апологетам тестов.
Методика | Результативность в среднем |
Regression test | 25% |
Informal code reviews | 25% |
Unit test | 30% |
New function (component) test | 30% |
Integration test | 35% |
Low-volume beta test (< 10 users) | 35% |
Informal design reviews | 35% |
Personal desk checking of code | 40% |
System test | 40% |
Formal design inspections | 55% |
Formal code inspections | 60% |
Modeling or prototyping | 65% |
High-volume beta test (> 1000 users) | 75% |
То есть в среднем все методы тестирования менее результативны, чем формальные инспекции дизайна и кода. А если еще поделить результативность на затраченное время, то review становится в разы эффективнее тестирования.
Как делать review
Для начала надо почитать того же МакКоннелла, у него все более чем подробно описано. Ключевые моменты:
- Чтобы проводить инспекции нужны чек-листы.
- Темп code review составляет 120-200 строк в час.
- Инспекторов должно быть как минимум два.
- Должны быть адекватно описаны требования к коду: быть полными и не содержать противоречий и неточностей.
- Код должен компилироваться.
- Код должен быть проверен разработчиком, как минимум выполнять основные сценарии на его машине.
В настоящий момент существует множество инструментов для code review, в том числе встроенных в средства разработки, поэтому необходимость в review meeting значительно ниже. Возможно для review верхнеуровневого дизайна потребуется совещание, но для review кода митинги скорее вредны.
Как повысить эффективность code review
Средняя продолжительность продуктивного писания кода – 4-5 часов в день. То есть 3-4 часа в день программист не занимается написанием кода, или занимается, но лучше бы этого не делал. Можно скорректировать время работы программистов, чтобы 4 часа в день они писали код, два часа делали review, еще два часа занимались проектированием, митингами и административными задачам. То есть review получается практически бесплатно.
Команда в 3-4 человека будет вполне успевать проводить review написанного за день кода в оставшиеся 2 часа после кодирования.
Значительную часть review можно автоматизировать, есть множество инструментов, которые проверяют качество кода.
Если все так круто, то почему же все занимаются тестированием?
Ответ на этот вопрос я долго искал, пока не наткнулся на презентацию Эрика Липперта о психологических аспектах анализа кода (http://www.slideshare.net/Coverity/the-psychology-of-c-analysis-24025354). Несмотря на то, что в презентации рассказывается об автоматизированном анализе, причины недоверия более чем верны для code review.
Основная причина – психология программистов. Для проведения review необходимо взаимодействовать с людьми, получать от них замечания к своему коду. Психологически это гораздо тяжелее, чем писать тесты к своему коду.
Вы наверное и сами обращали внимание, что смотреть чужой код и находить в нем ошибки бывает даже интересно. А вот когда ваш код кто-то смотрит и указывает на ошибки в нем – уже вызывает дискомфорт, а у некоторых откровенное неприятие.
Кроме того тесты это тоже код, это значит менеджер может посмотреть чем программист занимался. А еще лучше если менеджер посмотрит результаты тестового покрытия, хотя эта величина практически бесполезна.
Заключение
Несколько статей про code review, в них есть много интересных ссылок на исследования и книги:
- http://kev.inburke.com/kevin/the-best-ways-to-find-bugs-in-your-code/
- http://monead.com/blog/?p=1291
- http://www.developer.com/tech/article.php/3579756/Effective-Code-Reviews-Without-the-Pain.htm
- http://www.codinghorror.com/blog/2006/01/code-reviews-just-do-it.html
- http://accelerateddevelopment.ca/blog/inspections-are-not-optional/
Немного про SharePoint. Джентльменский набор для анализа кода:
- http://www.spcaf.com/
- http://archive.msdn.microsoft.com/SPDisposeCheck
- http://www.jetbrains.com/resharper/
- http://stylecop.codeplex.com/
- FxCop\Visual Studio Code Analysis
- http://vswebessentials.com/ (встроенный JSHint)
- http://gandjustas.blogspot.ru/2012/11/sharepoint.html
- http://gandjustas.blogspot.ru/2012/12/sharepoint.html
- http://www.rharbridge.com/?page_id=259
ЗЫ. Все написанное выше не означает что надо бросить тестирование и все силы перекинуть на review. У того же МакКоннелла написано, что наибольший эффект достигается при применении минимум трех методик.