Тков

Инструмент анализа покрытия исходного кода
тков
Разработчик(и)Корпорация Оракул
Операционная системаСолярис
ПлатформаСПАРК
ТипПокрытие кода
ЛицензияБесплатная загрузка и использование, как описано в лицензии на продукт Sun Studio .
Веб-сайтразработчики.sun.com

Tcov — это инструмент анализа покрытия исходного кода и пооператорного профилирования для программного обеспечения, написанного на Fortran , C и C++ . Tcov генерирует точные подсчеты количества выполнений каждого оператора в программе и аннотирует исходный код для добавления инструментария. Это стандартная утилита, предоставляемая бесплатно с программным обеспечением Sun Studio .

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

Описание

tcov производит анализ тестового покрытия скомпилированной программы . tcov принимает исходные файлы в качестве аргументов и создает аннотированный исходный листинг. Каждый базовый блок кода (или каждая строка, если указана конкретная опция tcov) имеет префикс с указанием количества раз, которое он был выполнен; строки, которые не были выполнены, имеют префикс "#####".

Утилита tcov также помещает сводку в конец аннотированного листинга программы. Статистика для наиболее часто выполняемых базовых блоков перечислена в порядке частоты выполнения. Номер строки — это номер первой строки в блоке.

Существует две реализации tcov:

Расширенный анализ покрытия устраняет некоторые недостатки исходного инструмента анализа, такие как: [3]

  • Обеспечивает более полную поддержку C++.
  • Поддерживает код, найденный в заголовочных файлах #include, и исправляет ошибку, скрывающую цифры покрытия для шаблонных классов и функций.
  • Более эффективная среда выполнения, чем исходная среда выполнения tcov.
  • Поддерживается для всех платформ, поддерживаемых компиляторами.

Выполнение

Для генерации аннотированного исходного кода необходимо выполнить следующие три шага: [4]

  • Компиляция кода с соответствующей опцией компилятора
  • Выполнение программы для накопления данных профиля
  • выполнение команды tcov для создания аннотированных файлов

Каждый последующий запуск накапливает больше данных покрытия в файле данных профиля. Данные для каждого объектного файла обнуляются при первом запуске программы после перекомпиляции. Данные для всей программы обнуляются путем удаления файла tcovd. [5]

Ниже описаны выше шаги для исходного и улучшенного tcov:

Анализ покрытия по старому стилю

Исходный код компилируется с опцией -xa для программы на C и опцией -a для программ на Fortran и C++. Компилятор создает файл данных покрытия с суффиксом .d для каждого объектного файла. Файл данных покрытия создается в каталоге, указанном переменной окружения TCOVDIR . Если TCOVDIR не установлен, файл данных покрытия создается в текущем каталоге. Запускается указанная выше инструментированная сборка, и по завершении программы обновляются файлы .d . Наконец, запускается команда tcov для генерации аннотированных исходных файлов. Синтаксис команды tcov следующий:

tcov параметры исходный-файл-список

Здесь source-file-list — это список имен файлов исходного кода. Для списка опций, вывод tcov по умолчанию — это набор файлов, каждый с суффиксом .tcov , который можно изменить с помощью опции -o filename.

Программа, скомпилированная для анализа покрытия кода, может быть запущена несколько раз (с потенциально меняющимися входными данными); tcov можно использовать в программе после каждого запуска для сравнения поведения.

Анализ покрытия нового стиля

Исходный код компилируется с опцией -xprofile=tcov . В отличие от исходного режима, улучшенный tcov не генерирует никаких файлов во время компиляции. [6] Вышеуказанная инструментированная сборка запускается, и по завершении программы создается каталог для хранения данных профиля, и в этом каталоге создается один файл данных покрытия, называемый tcovd . tcovd содержит информацию о номерах строк и количестве выполнений. Это простой текстовый файл. По умолчанию каталог создается в месте, где запускается программа, и он называется в честь исполняемого файла и имеет суффикс .profile . Каталог также известен как сегмент профиля . Расположение сегмента профиля можно переопределить, установив переменные среды SUN_PROFDATA_DIR или SUN_PROFDATA . Наконец, команда tcov запускается для генерации аннотированных исходных файлов. Синтаксис команды tcov такой же, как и у исходной команды, за исключением обязательной опции -x .

параметры tcov -x profilebucket исходный-файл-список

Единственное отличие команды от оригинального tcov — обязательное добавление опции -x dir для обозначения улучшенного tcov.

Пример

Следующая программа, написанная на языке программирования C , перебирает целые числа от 1 до 9 и проверяет их делимость с помощью оператора модуля (%).

#include <stdio.h> int main ( void ) { int i ;    for ( i = 1 ; i < 10 ; i ++ ) { if ( i % 3 == 0 ) printf ( "%d делится на 3 \n " , i ); if ( i % 11 == 0 ) printf ( "%d делится на 11 \n " , i ); }                            вернуть 0 ; } 

Для включения тестирования покрытия программа должна быть скомпилирована со следующими параметрами:

для покрытия кода старого стиля ,

cc -xa cov.c

и для нового стиля покрытия кода,

cc -xprofile=tcov -o cov cov.c

где cov.c — имя файла программы. Это создает инструментированный исполняемый файл , который содержит дополнительные инструкции, которые записывают количество выполнений каждой строки программы. Параметр -o используется для задания имени исполняемого файла. Затем исполняемый файл должен быть запущен для создания данных покрытия. Создание и расположение этого файла различаются для анализа кода старого и нового стилей. В анализе старого стиля этот файл с расширением .d , созданный после компиляции , либо в каталоге TCOVDIR , либо в текущем, обновляется данными покрытия. В анализе нового стиля файл данных покрытия с именем tcovd создается в каталоге <имя исполняемого файла>.profile . Эти данные можно проанализировать с помощью команды tcov и имени исходного файла:

для покрытия кода старого стиля ,

tcov cov.c

и для нового стиля покрытия кода,

tcov -x cov.profile cov.c

аргументом сложения в новом стиле анализа является profile bucket . Команда tcov создает аннотированную версию исходного файла с расширением файла '.tcov', содержащую счетчики количества выполнений каждой строки:

 #include <stdio.h>  int main ( void ) { 1 int i ;       10 for ( i = 1 ; i < 10 ; i ++ ) { 9 if ( i % 3 == 0 ) 3 printf ( "%d делится на 3 \n " , i ); 9 if ( i % 11 == 0 ) ###### printf ("%d делится на 11\n", i); 9 }                              1 возврат 0 ; 1 }    

Утилита tcov также помещает сводку в конец аннотированного листинга программы. Статистика для наиболее часто выполняемых базовых блоков перечислена в порядке частоты выполнения. Номер строки — это номер первой строки в блоке.

Параметры командной строки

Утилита командной строки Tcov поддерживает следующие параметры при создании аннотированных файлов из данных профиля: [7]

  • -a : Отображение счетчика выполнения для каждого оператора. Если этот параметр не указан, счетчик выполнения отображается только для лидера блока кода .
  • -n : Отображение таблицы номеров строк n наиболее часто выполняемых операторов и количества их выполнений.
  • -o filename : Направить вывод в filename вместо file.tcov . Эту опцию можно использовать для направления вывода в стандартный вывод, указав - .
  • -x dir : поддерживается в новом стиле анализа покрытия. Если эта опция не указана, предполагается покрытие tcov старого стиля.

Смотрите также

Ссылки

  1. ^ "Original Tcov statement-by-statement analysis" . Получено 6 февраля 2012 г. .
  2. ^ "Расширенный анализ Tcov по утверждениям" . Получено 6 февраля 2012 г. .
  3. ^ "Улучшенные функции tcov, улучшенные по сравнению с оригинальным tcov" . Получено 6 февраля 2012 г. .
  4. ^ oracle.com. «шаги, необходимые для генерации аннотированного исходного кода».
  5. ^ www.sics.se. «Страница руководства SunOS».
  6. ^ docs.oracle.com. "улучшенный tcov".
  7. ^ developers.sun.com. "Документация Tcov" . Получено 7 февраля 2012 г.
Взято с "https://en.wikipedia.org/w/index.php?title=Tcov&oldid=1065025018"