l6_NC
.pdfПреимущества статического анализа кода
•Ранний отлов ошибок.
•Полное покрытие кода.
Статические анализаторы проверяют даже те фрагменты кода, которые получают управление крайне редко. Такие участки кода, как правило, не удается протестировать другими методами. Это позволяет находить дефекты в обработчиках редких ситуаций, в обработчиках ошибок или в системе логирования.
•Статический анализ не зависит от используемого компилятора и среды, в которой будет выполняться скомпилированная программа.
Это позволяет находить скрытые ошибки, которые могут проявить себя только через несколько лет. Например, это ошибки неопределенного поведения. Такие ошибки могут проявить себя при смене версии компилятора или при использовании других ключей для оптимизации кода.
•Можно легко и быстро обнаруживать опечатки и последствия использования Copy-Paste.
Как правило, нахождение этих ошибок другими способами является кране неэффективной тратой времени и усилий. Обидно после часа отладки обнаружить, что ошибка заключается в выражении вида
"strcmp(A, A)".
© 2013 NetCracker Technology Corporation Confidential |
11 |
Недостатки статического анализа кода
•Статический анализ, как правило, слаб в диагностике утечек памяти и параллельных
ошибок.
Чтобы выявлять подобные ошибки, фактически необходимо виртуально выполнить часть программы. Это крайне сложно реализовать. Также подобные алгоритмы требуют очень много памяти и процессорного времени. Как правило, статические анализаторы ограничиваются диагностикой простых случаев. Более эффективным способом выявления утечек памяти и параллельных ошибок является использование инструментов динамического анализа.
• Программа статического анализа предупреждает о подозрительных местах.
Это значит, что на самом деле код, может быть совершенно корректен. Это называется ложнопозитивными срабатываниями. Понять, указывает анализатор на ошибку или выдал ложное срабатывание, может только программист. Необходимость просматривать ложные срабатывания отнимает рабочее время и ослабляет внимание к тем участкам кода, где в действительности содержатся ошибки.
© 2013 NetCracker Technology Corporation Confidential |
12 |
Мифы
•Миф первый. Статический анализатор это продукт разового применения;
•Миф второй. Профессиональные разработчики не допускают глупых ошибок;
•Миф третий. Динамический анализ лучше чем статический;
•Миф четвёртый. Программисты хотят добавлять свои правила в статический анализатор;
•Миф пятый. Можно составить маленькую программу, чтобы оценить инструмент.
© 2013 NetCracker Technology Corporation Confidential |
13 |
Статический анализ+Eclipse (FindBug)
© 2013 NetCracker Technology Corporation Confidential |
14 |
Дополнительная литература
•«Статический анализ кода» от PVS-Studio http://www.viva64.com/ru/t/0046/
•Список статических анализаторов для разных языков http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java
© 2013 NetCracker Technology Corporation Confidential |
15 |
Автоматическая сборка кода
© 2013 NetCracker Technology Corporation Confidential |
16 |
Сборка кода, это не только компиляция
•Компиляция может происходить под несколько платформ.
•После компиляции код нужно упаковать.
•Каждый архив нужно назвать в соответствии с версией.
•Если все тесты прошли удачно …
© 2013 NetCracker Technology Corporation Confidential |
17 |
Зачем нужна автоматическая сборка
•Независимость проектных задач от окружения
•100% повторяемость любого результата (работает у меня – работает у всех)
•Исключение человеческого фактора из важных операций
•Превращение деплоя из сложной операции в рутинную задачу
© 2013 NetCracker Technology Corporation Confidential |
18 |
КДПВ
АРТЕФАКТ это любой объект возникающий при сборке
© 2013 NetCracker Technology Corporation Confidential |
19 |
Установка сервера Apache
© 2013 NetCracker Technology Corporation Confidential |
20 |