Необходимо обеспечить регрессионное тестирование статических анализаторов кода PVS-Studio и CppCat.
Тесты должны выполняться на большом количестве открытых проектов, написанных на языке C/C++.
Должна тестироваться работа анализаторов в рамкам всех поддерживаемых версий Visual Studio.
Удобная работа со списком отличий, быстрый просмотр, возможность применить изменения и так далее.
Программа для регрессионного тестирования анализаторов PVS-Studio, CppCat
1. Self Tester
Программа для регрессионного тестирования
анализаторов PVS-Studio, CppCat
www.viva64.com
2. Постеленные цели
Необходимо обеспечить регрессионное
тестирование статических анализаторов
кода PVS-Studio и CppCat.
Тесты должны выполняться на большом
количестве открытых проектов,
написанных на языке C/C++.
Должна тестироваться работа
анализаторов в рамкам всех
поддерживаемых версий Visual Studio.
Удобная работа со списком отличий,
быстрый просмотр, возможность
применить изменения и так далее.
www.viva64.com
3. Технологии
Платформа: .NET Framework 4.5;
Язык программирования: C# 5.0;
Технология: Windows Presentation
Foundation 4.5
www.viva64.com
4. Проекты для запуска
Интерфейс состоит из сетки, в которой
первый столбец содержит набор
проектов для запуска.
Проекты для запуска содержатся в
архиве, который распакует установщик
программы в директорию установки.
Содержимое этого столбца, для
краткости, содержит имена решений с
расширениями.
Чтобы, узнать точное расположение
файла решения, нужно навести курсор
мыши на соответствующее имя
решения.
www.viva64.com
5. Выбор запуска по
умолчанию
При первом запуске программы,
автоматически выбирается столбец,
который предполагает наиболее
частую конфигурацию для запусков.
В текущей версии программы самый
распространенный вариант
использования предполагает запуск
всех проектов для анализатора PVS-Studio
для версии Visual Studio 2010
www.viva64.com
6. Другие запуски
Программа учитывает сеансы запусков.
К примеру, в одном сеансе можно
запустить все проекты для всех
установленных версий Visual Studio для
анализатора PVS-Studio.
Для этого достаточно щелкнуть по
заголовку столбца.
Если нужно выбрать несколько версий
Visual Studio, то при щелчке на
заголовках столбца нужно также
держать зажатой клавишу CTRL.
Также, действуют стандартные
клавиатурные сокращения и для ячеек.
Например, чтобы выбрать несколько
отдельных проектов, нужно выбирать
ячейки с нажатой клавишей CTRL.
www.viva64.com
7. Другие запуски
Также программа поддерживает
запуски для анализатора CppCat
www.viva64.com
8. Состояния ячеек в
момент, когда
анализ не запущен
Ячейки основной таблицы проектов
могут находится в различных
состояниях.
В зависимости от состояния запуска
анализа, состояния ячеек могут
пересекаться или нет.
К примеру, вне зависимости от запуска
анализа, можно видеть состояние «Not
supported», это означает, что
анализатор для конкретной версии
Visual Studio не поддерживается в
текущей конфигурации проекта
www.viva64.com
9. Состояния ячеек в
момент, когда
анализ не запущен
Также можно видеть, что некоторые
версии Visual Studio могут быть не
установлены, даже если конфигурация
проектов рассчитана на поддержку
всех запусков.
Вполне логично, что состояние «VS not
installed» будет перекрывать состояние
“Not supported”, даже если
конфигурация конкретного решения
была рассчитана на запуск в версии
Visual Studio 2013
www.viva64.com
10. Состояния ячеек
при запущенном
процессе анализа
Если запустить выбранные проекты на
анализ, можно видеть состояния ячеек
в запущенном состоянии.
Первоначальным состоянием для
каждого проекта будет “Pending”, что
означает, что проект был выбран и его
анализ в текущем сеансе запуска
запланирован к выполнению
www.viva64.com
11. Состояния ячеек в
запущенном
состоянии
Логично предположить, что
следующим за «Pending» состоянием,
будет состояние «In progress».
Это означает, что проект в текущий
момент анализируется.
Также, стоит заметить, что в один и тот
же момент времени, могут
анализироваться несколько проектов.
Из интерфейса нельзя контролировать
это поведение. Оно прописано в
конфигурационном файле приложения
и по умолчанию равно 4-м, что
означает параллельный запуск
максимум для 4-х проектов.
www.viva64.com
12. Состояния ячеек по
завершению
анализа
После прохождения анализа проекты
могут находится в нескольких
завершенных состояниях.
Нормальное состояние завершения
отмечено как “OK”. Это означает, что
проект не дал различий при текущих
эталонных установках анализатора
www.viva64.com
13. Состояния ячеек по
завершению
анализа
По прохождению анализа проект
может дать различия.
В таком случае его состоянию будет
соответствовать статус «Diff».
Различие означает, что прежняя
эталонная конфигурация при анализе
перестала соответствовать текущей.
В таких ситуациях нужно проверить,
что именно дало различия.
Если таких различий следовало
ожидать, то эту конфигурацию можно
сделать текущей эталонной для
последующего анализа, в противном
случае нужно исправить ошибку.
www.viva64.com
14. Состояния ячеек по
завершению
анализа
Самым неопределенным состоянием
по завершению анализа может быть
состояние “Fail”.
Это состояние, по которому нельзя
понять, были ли различия или нет.
Состояние «Fail» означает, что анализ
завершился неудачей из-за внутренних
исключений, которые иногда
возникают в Visual Studio в
установленных расширениях.
В таком случае может помочь
повторный запуск.
www.viva64.com
15. Конфигурация
решений
Стоит упомянуть про то, что у каждого
решения существует конфигурация, от
которой зависит запуск анализатора.
Как правило, он задается при установке
и более не меняется.
Однако можно видеть, что некоторые
проекты поддерживают запуск только
для определенных версий Visual Studio.
К примеру, для решения GuiBaker
единственной поддерживаемой
версией будет Visual Studio 2010.
Этим и объясняется существование
состояния «Not supported»
www.viva64.com
16. Меню
У программы есть единственное меню,
предназначенное для выбора сеансов
запуска.
Если сеансов запуска анализатора еще
не было, можно только видеть кнопку
«Erase All», которая будет недоступна.
Если были сеансы анализа эта кнопка
станет доступной и удалит все
существующие сеансы запусков
www.viva64.com
17. Меню
При первом запуске в меню добавится
пункт, соответствующий текущему
запуску анализа. Он будет подсвечен,
однако само меню станет
недоступным, пока текущий сеанс
анализа не завершится или не будет
отменен.
Название пункта меню состоит из
строки даты и времени для текущей
локали и имени текущего, вошедшего в
систему, пользователя в скобках
www.viva64.com
18. Меню
При завершении или остановке
текущего сеанса анализа ячейки меню
становятся доступными для выбора.
www.viva64.com
20. Окна
предупреждений
В приложении можно периодически
наблюдать окна предупреждений.
Такие окна могут быть двух типов:
окна, возникающие при ошибках в
работе анализатора и окна самого
приложения.
На данной картинке показано окно,
сгенерированное Visual Studio, которое
свидетельствует о том, что команда
TestRun не является допустимой для
данной версии. Это может говорить о
том, что подключаемое расширение не
было зарегистрировано для данной
версии.
www.viva64.com
21. Окна
предупреждений
На данной картинке показано окно
предупреждения самого приложения.
Оно говорит нам о том, что не было
выбрано ни одного решения для
запуска.
www.viva64.com
22. Графическое
состояние запуска
В приложении предусмотрены
графические состояния запуска.
Они расположены в нижнем левом
углу окна и могут быть полезны для
наглядности.
К примеру, на данном изображении
можно увидеть, что сеанс анализа был
пройден, остановлен, запущен, но пока
не дал никаких различий.
www.viva64.com
23. Графическое
состояние запуска
Данное изображение показывает, что
анализ запущен в данный момент, но
уже есть проекты, которые дали
различия для текущей эталонной
конфигурации.
www.viva64.com
24. Графическое
состояние запуска
Данное изображение показывает, что
текущий сеанс анализа был завершен
или остановлен, и дал различия для
двух проектов
www.viva64.com
26. Вызов Visual Studio
При двойном щелчке на выбранной
ячейке сетки можно вызвать открытие
проекта в Visual Studio.
www.viva64.com
27. Панель с кнопками
Для различных манипуляций с
тестовыми запусками предусмотрена
панель с кнопками. Слева направо:
• Кнопка Run предназначена для
запуска/останова анализа для
текущих выбранных решений;
• Кнопка Log позволяет открыть
HTML-лог для просмотра различий
для текущего выбранного сеанса;
• Кнопка Diff позволяет открывать
выбранные решения с различиями в
Visual Studio;
• Кнопка Apply Results позволяет
заменять эталонные конфигурации
текущими для выбранных решений;
www.viva64.com
28. Панель с кнопками
Панель с кнопками может находится в
состоянии запуска.
При этом видно время, которое было
пройдено при текущем запуске
анализа.
Логично предположить, что кнопка
Apply Results будет в таком случае
недоступной, так как некоторые
результаты еще не были получены.
www.viva64.com
29. Запуск Visual Studio
Кнопка, способная открывать решения
в Visual Studio сделана для удобства
открытия нескольких решений.
Однако, запуск нескольких
экземпляров Visual Studio может быть
довольно длительным процессом,
поэтому было предусмотрено статус-
окно, которое не блокирует
пользовательский интерфейс при
открытии нескольких экземпляров
Visual Studio
www.viva64.com