Курс по статическому анализу

Андрей Карпов
Статей: 373



Некоторое время назад, мы общались с компанией ТЕКАМА на тему разработки для них курса по статическому анализу кода для одного из их корпоративных клиентов. К сожалению, проект не был реализован, но мы по прежнему готовы выполнить разработку теоретических и практических курсов в данной области. Если вас интересуют курсы в области качества программного обеспечения и верификации кода - пишите нам, мы уверены, что сможем найти совместные интересы.

Чтобы лучше пояснить, что могут содержать эти курсы, приведем краткое содержание двух курсов, которые мы планировали разработать для компании ТЕКАМА. Первый курс теоретический, второй - практический.

Статический анализ. Теоретическая часть.

Первая часть курса носит теоретический характер и должна познакомить слушателей с методологией статического анализа и принципами, лежащими в ее основе. Курс ориентирован на разработчиков использующих языки программирования Си/Си++ в рамках среды Visual Studio 2008. Но в нем рассматривается множество вопросов теоретического характера, таких как оценка стоимости программного проекта, виды метрик, что может быть интересно разработчикам использующих любые среды разработки.

Содержание:

  • История методологии статического анализа
    • Методы повышения качества программ
    • Методология просмотр кода (code review), как основа статического анализа
    • Развитие методологии статического анализа
    • Преимущества и недостатки статического анализа по сравнению с другими методологиями верификации (тестирования) кода
  • Технические принципы, лежащие в основе статических анализаторов кода
    • Краткое описание внутреннего устройства статических анализаторов
    • Сбор информации на основе обхода АСТ или дерева разбора
    • Инструменты для создания решений в области анализа кода
  • Метрики
    • Оценка стоимости программного проекта на основе метрик
      • Откуда берутся ошибки оценки и чем полезен расчет метрик
      • Виды метрик оценки стоимости, их преимущества и недостатки
        • Роль строк кода (LOC) в оценке размера
        • Функциональные пункты
        • Преобразование функциональных пунктов в LOC
        • Упрощенные методы вычисления функциональных пунктов
        • Голландский метод
        • Элементы GUI
      • Использование оценок при переговорах и принятии решений
      • Работы Стива Макконнелла в области оценки стоимости
      • Пример инструмента в области оценки стоимости создания проекта (Estimate)
    • Повышение качества и надежности проекта за счет метрик определения сложности
      • Метрики Холстеда
      • Метрики Джилба
      • Метрики Мак-Кейба (цикломатическая сложность)
      • Метрика Майерса
      • Другие метрики и посвященная им литература
      • Практическое использование метрик сложности
      • Примеры инструментов для определения цикломатической сложности (SourceMonitor, C and C++ Code Counter)
  • Статический анализ
    • Отличие статического анализа от динамичесого
    • Преимущества и недостатки статического анализа по сравнению с динамическим анализом
    • Как статический и динамический анализ могут выгодно дополнять друг друга
    • Использование наборов правил для диагностики
      • Scott Meyers "Effective C++"
      • MISRA
      • OOP
      • Qt Best Practices
      • Другие наборы правил
    • Использование статического анализа для унификации стиля
      • Примеры
      • Обсуждение примеров
    • Использование статического анализа для поиска ошибок
      • Ошибки невнимательности, диагностика, примеры
      • Ошибки инициализации, диагностика, примеры
      • Ошибки безопасности, диагностика, примеры
      • Ошибки совместимости при разработке кроссплатформенных решений, диагностика, примеры
      • Ошибки производительности, диагностика, примеры
      • Ошибки в многопоточных программах, диагностика, примеры
      • Другие разновидности ошибок, диагностика, примеры
    • Использование статического анализа в практике
      • Откуда там много предупреждений и что с ними делать?
      • Интеграция статического анализа в процесс разработки
    • Примеры наиболее распространенных систем статического анализа
  • Дополнительные сведения и рассказ о ресурсах, посвященных тематике статического анализа
  • Ответы на вопросы

Статический анализ. Практическая часть.

Вторая часть курса носит практический характер и должна познакомить слушателей с рядом инструментов статического анализа, методикой их использования в работе. Курс ориентирован на разработчиков использующих языки программирования Си/Си++ в рамках среды Visual Studio 2008. В рамках второй части курса можно рассмотреть возможность использование практических занятий по знакомству с инструментами. Мы как авторы курса можем бесплатно предоставить инструменты Viva64 и VivaMP для знакомства с принципами работы статических анализаторов. Если интересно рассмотреть практические занятия на базе других инструментов, то следует обсудить это отдельно и обсудить размер бюджета на их приобретение.

Содержание:

  • Обзор инструментов статического анализа кода
    • Lint
    • PC-Lint
    • FxCop
    • JLint
    • Cccc
    • Estimate
    • Analyzer входящий в состав Visual Studio Team System
    • Viva64
    • VivaMP
    • Parasoft C++Test
    • Другие инструменты
  • Знакомство с практическим применением инструментов для расчета метрик
    • Простые инструменты: SourceMonitor, C and C++ Code Counter (Сссс)
      • SourceMonitor. Примеры использования.
      • C and C++ Code Counter. Примеры использования.
    • Программа Estimate Стива Макконнелла
      • Методологии использования программы Estimate
      • Примеры использования
  • Знакомство с практическим применением инструментов статического анализа Си/Си++ кода
    • PC-Lint
      • Установка и настройка PC-Lint
      • Интеграция PC-Lint в Visual Studio 2005/2008 и использование продукта Visual Lint
      • Адаптация настроек инструмента PC-Lint к особенностям проекта
      • Примеры использования
    • Viva64
      • Установка и настройка Viva64
      • Адаптация настроек инструмента Viva64 к особенностям проекта
      • Примеры использования
      • Можно рассмотреть варианты практического тренинга по поиску ошибок в 64-битных программах с использованием инструмента Viva64. Мы как авторы анализатора Viva64 готовы предоставить его для бесплатного ознакомления в рамках обучающего курса.
    • VivaMP
      • VivaMP как новое направление в тестировании параллельных приложений
      • Установка и настройка VivaMP
      • Адаптация настроек инструмента VivaMP к особенностям проекта
      • Примеры использованияv. Можно рассмотреть варианты практического тренинга по поиску ошибок в параллельных программах с использованием инструмента VivaMP. Мы как авторы анализатора VivaMP готовы предоставить его для бесплатного ознакомления в рамках обучающего курса.
    • C++Test
      • Установка и настройка C++Test
      • Адаптация настроек инструмента C++Test к особенностям проекта
      • Примеры использования
  • Практические подходы к интеграции инструментов статического анализа в процесс разработки
  • Ответы на вопросы


Найдите ошибки в своем C, C++, C# и Java коде

Предлагаем попробовать проверить код вашего проекта с помощью анализатора кода PVS-Studio. Одна найденная в нём ошибка скажет вам о пользе методологии статического анализа кода больше, чем десяток статей.

goto PVS-Studio;

Андрей Карпов
Статей: 373


Найденные ошибки

Проверено проектов
346
Собрано ошибок
13 188

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;