Для получения триального ключа
заполните форму ниже
Team License (базовая версия)
Enterprise License (расширенная версия)
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Бесплатная лицензия PVS-Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте папку
Spam/Junk и нажмите на письме кнопку "Не спам".
Так Вы не пропустите ответы от нашей команды.

>
>
Интервью с Issam Lahlali, одним из созд…

Интервью с Issam Lahlali, одним из создателей инструмента CppDepend

06 Июн 2010

Статья представляет собой ответы на вопросы, заданные Иссаму Лалали (Issam Lahlali), и касаются инструмента для разработчиков CppDepend.

Введение

Вашему вниманию предлагается интервью с одним из разработчиков инструмента CppDepend для анализа структуры программных проектов.

Вопросы задает (вопросы выделены жирным шрифтом):

Карпов Андрей Николаевич. Один из основателей компании "Системы программной верификации". Участвует в разработке пакета PVS-Studio, предназначенного для выявления дефектов в исходном коде приложений.

На вопросы отвечает:

Иссам Лалали (Issam Lahlali). Один из разработчиков, занимающихся созданием пакетов CppDepend и VBDepend.

Вопросы и ответы

Расскажите немного о себе и инструменте CppDepend. Какова его история?

Я Иссам Лалали, имею сертификаты MCSD и MCSD.NET. Я сотрудничал с несколькими разработчиками программного обеспечения, моей последней работой была должность архитектора программного обеспечения в компании Sophis. Два года назад мне выпала возможность познакомиться с Патриком Смачча (Patrick Smacchia) - разработчиком NDepend - и он убедил меня сотрудничать с его компанией для разработки инструментов CppDepend и VBDepend.

Что такое CppDepend?

CppDepend - это инструмент для C++ разработчиков и архитекторов программного обеспечения. Базы исходных кодов - очень сложные системы, а CppDepend - тот самый инструмент, который помогает разработчику получить нужную информацию из исходного кода.

Например, CppDepend позволяет очень быстро выполнять такие задачи как проверка правильности иерархической структуры проекта, отслеживание внесенных изменений со времени последней ревизии или оценка качества кода, в то время как на их выполнение при участии обычных инструментов могут уйти часы и даже дни.

Что бы Вы могли сказать о CppDepend в сравнении с другими распространенными инструментами?

CppDepend дополняет другие инструменты статического анализа - он больше фокусируется на архитектуре и проектировании, чем реализации, как это сделано в других инструментах. С помощью CppDepend мы можем получить подробное представление о связности между модулями программы, связности между элементами отдельных модулей, уровне абстрактности, неустойчивости и т.д.

С чего следует начать работу с CppDepend? Какой алгоритм действий вы рекомендуете?

Во-первых, скачайте CppDepend и проанализируйте свою базу исходных кодов. По окончании анализа пользовательский интерфейс VisualCppDepend покажет несколько панелей для навигации по результатам анализа.

Здесь пользователь должен выбрать, что ему нужно: посмотреть зависимости, метрики, сделать запрос к базе кодов на языке CQL, сравнить результаты двух анализов и т.д. В той или иной степени, каждая опция представлена отдельной панелью.

Также имеется встроенная справочная система, в которой вы найдете пояснения о том, как начать работать с инструментом. Там же содержатся ссылки на скринкасты. Они поясняют, как выполнить ту или иную задачу.

Наконец, на нашем сайте вы можете найти расширенную документацию, например, полное описание CQL спецификаций.

Какая функция CppDepend, по Вашему мнению, является наиболее мощной или полезной? И почему?

Лично я каждый день использую матрицу для отслеживания зависимостей и чтобы убедиться, что архитектура остается безупречной.

Я также большой поклонник функции сравнения результатов анализов. Я часто использую ее для просмотра изменяющегося кода. Я действительно считаю, что наибольшее зло кроется в переменах. Язык запросов CQL тоже очень полезен для обращения к базе исходных кодов, он делает инструмент CppDepend более гибким.

Как инструмент CppDepend интегрируется в процесс разработки программного обеспечения? Что такое CQL и как он связан с продуктом?

CppDepend целиком предназначен для того чтобы пользователь понимал и контролировал то, что в действительности происходит у него в отделе разработки. Концепция заключается в том, чтобы собирать всю нужную информацию из самого исходного кода.

У инструмента есть два аспекта: визуальная сторона - здесь имеется пользовательский интерфейс VisualCppDepend, который позволяет вам в режиме реального времени анализировать вашу базу исходных кодов с помощью панелей графиков, матрицы и метрик. Эти визуальные панели с графиками зависимостей и иерархическими схемами матрицы и метрик очень помогают в тщательном исследовании кода.

VisualCppDepend также предоставляет язык запросов Code Query Language (CQL). CQL в сущности является сердцем этого продукта. CQL имеет такое же отношение к вашему коду, как SQL - к вашим данным.

Например, вы можете произвести поиск метода, в котором содержится более 30 строк кода, написав такой CQL-запрос:

SELECT METHODS WHERE NbLinesOfCode > 30

И если вы хотите, чтобы вас предупреждали о подобных объемных методах, вы можете сделать из этого CQL-запроса CQL-правило следующим образом:

WARN IF Count > 0 IN SELECT METHODS WHERE NbLinesOfCode > 30

CQL предоставляет много возможностей: от статистики по 60 метрикам кода до определения зависимостей, инкапсуляции, неустойчивости, изменений/различий/эволюции кода.

Например, сделать запрос методов, которые были недавно изменены, так же просто, как написать следующую строчку:

SELECT METHODS WHERE CodeWasChanged

CppDepend имеет более 100 правил по умолчанию, и вы можете изменять существующие правила или добавлять новые для собственных нужд.

Другая сторона CppDepend - это его внедрение в процесс непрерывной интеграции и сервер сборки. Идея заключается в том, чтобы получать ежедневный и составленный специально для конкретного пользователя отчет в формате HTML, в котором сразу же можно увидеть, не были ли нарушены какие-то CQL-правила, и получить метрики качества или структурирования кода. Вот таким образом можно научиться контролировать, что на самом деле происходит в вашем отделе разработки.

Какие технологии вы использовали при разработке CppDepend? (Языки, библиотеки, парсеры)

Что касается парсера, мы адаптировали парсер doxygen под наши нужды. doxygen имеет открытый код, так что наш модифицированный парсер, который мы назвали CppDependency, также имеет открытый код и доступен для скачивания на сайте SourceForge. Движок CQL и пользовательский интерфейс разработаны с использованием технологии DotNet.

Работает ли CppDepend под Linux и Mac?

Мы использовали технологию DotNet, так что инструмент работает только под Windows. Мы планируем адаптировать наш продукт под Mono. Но в принципе мы можем анализировать любой C++ проект, правда, недостаток проверки C++ проектов, существующих на компьютере с Linux или Mac, заключается в том, что нам приходится копировать исходный код на компьютер с Windows.

Библиографический список

Популярные статьи по теме
Комментарии в коде как вид искусства

Дата: 04 Май 2022

Автор: Сергей Хренов

Приветствую всех программистов, а также сочувствующих. Кто из нас хотя бы раз в жизни не оставлял комментарии в коде? Был ли это ваш код, а может, чужой? Что за комментарии вы написали: полезные или …
Visual Studio 2022 стильно и свежо. История о её поддержке в PVS-Studio

Дата: 15 Фев 2022

Автор: Николай Миронов

Кажется, анонс Visual Studio 2022 был только недавно, и вот она уже вышла. Это означало ровно одно – поддержать данную IDE нужно в ближайшем релизе PVS-Studio. О том, с какими сложностями пришлось ст…
Лучшие срабатывания статического анализатора

Дата: 29 Окт 2021

Автор: Максим Звягинцев

У всех, кто запускал статический анализатор в первый раз на большом проекте, был небольшой шок по поводу сотен, тысяч или даже десятков тысяч предупреждений. Как-то грустно становится после такого. Т…
Зачем нужна техническая поддержка и как в ней не выгореть?

Дата: 01 Сен 2021

Автор: Николай Миронов

Не всем нравится работать в поддержке. Огромное количество людей выгорает на ней. Так может не стоит вообще её иметь? Какую выгоду она несёт? Можно ли как-то не выгорать от поддержки? Попробуем найти…
Как делался новый дизайн сайта PVS-Studio

Дата: 04 Июн 2021

Автор: Инна Пристягина

Сайту PVS-Studio в этом году исполнится 15 лет. Это солидный возраст для любого интернет-ресурса. Далёкий 2006-й в России был признан годом гуманитарных наук. В июне появилась никому не знакомая тогд…

Комментарии (0)

Следующие комментарии
Этот сайт использует куки и другие технологии, чтобы предоставить вам более персонализированный опыт. Продолжая просмотр страниц нашего веб-сайта, вы принимаете условия использования этих файлов. Если вы не хотите, чтобы ваши данные обрабатывались, пожалуйста, покиньте данный сайт. Подробнее →
Принять