Включение охвата кода из сценария Ant
Для того чтобы проверить, отвечает ли компонуемый код принятым критериям качества кода, можно включить охват кода в сценарии Ant. Для этого необходимо выполнить следующие задачи:
Можно также показать результаты охвата кода в рабочей среде.
Настройка охвата кода в сценарии Ant
Для настройки охвата кода в сценарии Ant добавьте следующую строку в переменную среды CLASSPATH:
<каталог-установки>/plugins/com.ibm.rational.llc.engine_1.0.0.<версия>
и определите новую задачу в файле компоновки. Например:
<taskdef name="instrument"
classname="com.ibm.rational.llc.engine.instrumentation.anttask.InstrumentationTask"
classpath="${install_dir}/plugins/com.ibm.rational.llc.engine_1.0.0.<версия>"/>
Формат задачи встраивания следующий:
<instrument buildPath="" baseLineFile="" saveBackups="" outputDir=""/>
где:
- buildPath:
- Указывает файлы, для которых будут собраны данные охвата кода. Путь компоновки может указывать на имя файла класса, имя файла JAR или имя каталога. Его можно указать, как любой другой путь в Ant.
- baseLineFile:
- Путь к расположению файла контрольной версии. Файл контрольной версии - это файл, с которым сравнивается анализируемый код, и для которого создается статистика охвата кода. Он также будет входным файлом для задачи создания отчета Ant.
- saveBackups:
- Указывает, следует ли переименовывать исходные файлы *.class и *.jar в *.bak. Если saveBackups равен true, то резервные файлы будут создаваться, если saveBackups равен false, то исходные файлы будут перезаписываться.
Примечание: saveBackups - это необязательный параметр, значение по умолчанию равно false.
- outputDir:
- Расположение для файлов со встроенным кодом. По умолчанию файлы со встроенным кодом расположены там же, где и анализируемые файлы.
Пример 1
В следующем примере данные охвата кода собираются для всех файлов в каталоге bin/, файл контрольной версии расположен в blfile.coveragedata, резервные копии файлов не создаются, а файлы с встроенным кодом хранятся в coverageData_files.
<instrument saveBackups="false" baseLineFile="blfile.coveragedata" buildPath="bin/" outputDir="coverageData_files"/>
Пример 2
В следующем примере данные охвата кода собираются для всех файлов в каталоге bin/, указанном как build.Dir, файл контрольной версии расположен в blfile.coveragedata и создаются резервные копии всех файлов.
<path id="build.Dir">
<pathelement location="bin"/>
</path>
<instrument saveBackups="true" baseLineFile="blfile.coveragedata" buildPathRef="build.Dir" />
Пример 3
В следующем примере данные охвата кода собираются для всех файлов в каталоге bin/, файл контрольной версии расположен в blfile.coveragedata и создаются резервные копии всех файлов.
<instrument saveBackups="true" baseLineFile="blfile.coveragedata">
<buildPath>
<pathelement location="bin"/>
</buildPath>
</instrument>
Пример 4
В следующем примере данные охвата кода собираются для всех подкаталогов каталога bin/ со строкой com в названии каталога, исключая файлы в этих подкаталогах, содержащие строку Test в имени файла. Для каждого анализируемого файла создается резервная копия, а файл контрольной версии хранится в blfile.coveragedata.
<instrument saveBackups="true" baseLineFile="blfile.coveragedata">
<buildPath>
<fileset dir="bin">
<exclude name="**/*Test*"/> <include name="**/*com*/*">
</fileset>
</buildPath>
</instrument>
Пример 5
В следующем примере данные охвата кода собираются для всех файлов в каталоге bin/, исключая файлы, содержащие строку Test в имени, и подкаталог bin2. Для каждого анализируемого файла создается резервная копия, а файл контрольной версии хранится в blfile.coveragedata.
<instrument saveBackups="true" baseLineFile="blfile.coveragedata">
<buildPath>
<fileset dir="bin">
<exclude name="**/*Test*"/>
</fileset>
</buildPath>
<buildPath>
<pathelement location="bin2"/>
</buildPath>
</instrument>
Запуск сценария Ant
Сценарий Ant, настроенный для включения охвата кода, можно запустить из командной строки или из рабочей среды.
Запуск из командной строки
Как запустить сценарий Ant из командной строки:
- Укажите в переменной среды JAVA_HOME каталог установки JDK.
- Добавьте в переменную CLASSPATH полный путь и имя файла probekit.jar. Файл probekit.jar расположен в подпапке org.eclipse.hyades.probekit со старшим номером версии и последней датой в папке модулей продукта.
- Добавьте в переменную CLASSPATH JAVA_HOME (путь к установке Java, чтобы был доступен файл JAVA_HOME/bin/java).
- Добавьте в переменную PATH полный путь к подпапке org.eclipse.hyades.probekit, соответствующий вашей платформе. Например:
- В Windows:
<каталог-установки>\plugins\org.eclipse.hyades.probekit_<версия>\os\win32\x86
- В Linux:
<каталог-установки>/plugins/org.eclipse.hyades.probekit_<версия>/os/linux/x86
- Укажите в переменной LLC_PLUGIN путь к папке модулей:
set LLC_PLUGIN=<каталог-установки>\plugins
Пример
ant -lib=<каталог-установки>\plugins\org.eclipse.hyades.probekit_<версия>\probekit.jar myTarget
Запуск из рабочей среды
Как запустить сценарий Ant из рабочей среды:
- Выберите файл компоновки
- Щелкните правой кнопкой мыши и выберите Выполнить как > Компоновка Ant...
- Перейдите на вкладку Путь к классам
- Выберите Пользовательские записи
- Выберите Добавить внешние JAR...
- Добавьте <каталог-установки>\plugins\org.eclipse.hyades.probekit_<версия>\probekit.jar в CLASSPATH из подпапки модуля org.eclipse.hyades.probekit со старшим номером версии и последней датой
- Перейдите на вкладку Цели
- Выберите требуемые цели
- Перейдите на вкладку Среда
- Нажмите кнопку Создать...
- В окне Создать переменную среды введите LLC_Plugin в поле Имя и укажите путь к LLC_PLUGIN в поле Значение (например, <каталог-установки>\plugins)
- Нажмите кнопку OK
- Нажмите кнопку Создать...
- В окне Создать переменную среды введите PATH в поле Имя и укажите значение в поле Значение: <каталог-установки>\plugins\org.eclipse.hyades.probekit_<версия>\os\win32\x86
- Нажмите кнопку OK
- Нажмите кнопку Запустить
Создание статистики охвата кода
Убедитесь, что путь к классам содержит следующую запись:
<каталог-установки>\plugins\com.ibm.rational.llc.engine_1.0.0.<версия>
Для того чтобы сгенерировать статистику охвата кода, выполните в командной строке в вышеуказанном каталоге следующую команду:
java -Dcoverage.out.file=C:\coverage_report\coverage_data.coveragedata com.ibm.rational.llc.example
Примечание: возможно, потребуется настроить Java в соответствии с параметрами установки продукта.
Создание отчетов охвата кода
Для того чтобы сгенерировать отчет в Ant, выполните следующее:
Загрузите Модуль отчетов BIRT и распакуйте его содержимое.
Задайте следующие переменные среды:
- CLASSPATH - укажите org.eclipse.equinox.common_<версия>.jar
- LLC_COMMON_PLUGIN - укажите com.ibm.rational.llc.common_1.0.0.<версия>
- LLC_REPORT_PLUGIN - укажите com.ibm.rational.llc.report.birt_1.0.0.<версия>
- BIRT_HOME - укажите каталог модуля отчетов в среде выполнения BIRT
Пример:
<path id="lib.path">
<pathelement location="${env.LLC_COMMON_PLUGIN}"/>
<pathelement location="${env.LLC_REPORT_PLUGIN}"/>
<fileset dir="${env.BIRT_HOME}/lib" includes="*.jar"/>
</path>
Определите новую задачу в файле компоновки для создания отчета охвата кода, например:
<taskdef name="code-coverage-report"
classname="com.ibm.rational.llc.report.birt.adapters.ant.ReportGenerationTask"
classpathref="lib.path"/>
Формат задачи отчета охвата кода следующий:
<code-coverage-report outputDir="" coverageDataFile="" baseLineFiles=""> <filters> <filter type="" value=""/> </filters> <configurations> <configuration name="" value=""/> </configurations> </code-coverage-report>
где:
- outputDir:
- Расположение для результатов отчета.
- coverageDataFile:
- Файлы данных охвата, для которых будет создан отчет. Их можно указать, как любой другой путь в Ant.
- baseLineFiles:
- Файлы контрольных версий, созданные как часть задачи встраивания кода. Их можно указать, как любой другой путь в Ant.
- filters:
- Необязательный параметр: применяется для фильтрации результатов отчета.
- filter:
- type: тип фильтра для отчета.
- value: значение фильтра для отчета.
- Доступные фильтры:
- Порог охвата для строк: задает пороговое значение для охвата строк в процентах. Строки со значением ниже порогового будут включаться в отчет охвата кода. type=line_coverage_threshold, value=значение-порога
- Конфигурации:
- Необязательный параметр: применяется для указания конфигураций вычисления.
- Конфигурация:
- name: имя конфигурации.
- value: значение конфигурации.
- Доступные конфигурации:
- Включая конструктор по умолчанию: позволяет включить или исключить конструктор по умолчанию при анализе охвата кода. Конструктор по умолчанию обычно включается в анализ. Если в классе не определен конструктор по умолчанию, то компилятор генерирует конструктор без аргументов. Однако этот конструктор не показан в самом исходном файле. Если во время выполнения программы класс не инициализируется, то этот скрытый конструктор по умолчанию не выполняется, и не весь код будет проанализирован. Это поведение можно изменить с помощью следующей конфигурации: name=excludeDefaultConstructor, value=true или false
Пример 1
В следующем примере отчет создается для coverage-data/coverage.coveragedata с файлом контрольной версии coverage-data/blfile.coveragedata, отчет сохраняется в файле coverage-reports, а фильтр line_coverage_threshold применяется с порогом в 80 процентов. Конструктор по умолчанию исключается из анализа охвата кода.
<code-coverage-report outputDir="coverage-reports/"
coverageDataFile="coverage-data/coverage.coveragedata"
baseLineFiles="coverage-data/blfile.coveragedata">
<filters>
<filter type="line_coverage_threshold" value="80"/>
</filters>
<configurations>
<configuration name="excludeDefaultConstructor" value="true"/>
</configurations>
</code-coverage-report>
Пример 2
В следующем примере отчет создается для файлов coverage1.coveragedata и coverage2.coveragedata с при это файлами контрольных версий blfile1.coveragedata и blfile2.coveragedata; отчет сохраняется в файле coverage-reports. Конструктор по умолчанию включается в анализ.
<code-coverage-report outputDir="coverage-reports/"
coverageDataFile="coverage-data/coverage1.coveragedata;coverage-data/coverage2.coveragedata"
baseLineFiles="coverage-data/blfile1.coveragedata;coverage-data/blfile2.coveragedata">
</code-coverage-report>
Просмотр результатов охвата кода в рабочей среде
Как просмотреть результаты охвата кода сценария Ant в рабочей среде:
- Импортируйте файл с результатами охвата кода:
- Выберите Файл > Импорт...
- Выберите Охват кода > файл данных охвата кода
- Нажмите кнопку Далее
- Выберите для импорта тип Файловая система
- Нажмите кнопку Далее
- Укажите расположение файла с данными охвата (coverage_data.coveragedata в вышеприведенном примере), имя папки, в которую будет выполнен импорт, и проект, связанный с файлом данных охвата
- Нажмите кнопку Готово. Затем необходимо будет повторно скомпоновать проект, если в нем ранее не был включен охват кода.
- Создайте отчет охвата кода:
- Выберите Выполнить > Охват кода > Создать отчет...
- Выберите один или несколько запусков Java в столбце Имя
- Выберите создание отчета в формате Eclipse или HTML
- Нажмите кнопку Запустить
Примечание: вместо того, чтобы выбрать файлы с данными охвата, можно щелкнуть правой кнопкой мыши и выбрать Охват кода > Создать отчет.... Укажите расположение проекта и папки для отчета и нажмите кнопку Готово.
Выключение охвата кода
Для того чтобы выключить встраивание кода в классы с помощью задачи Ant, повторно скомпилируйте проект или замените файлы .class файлами .class.bak, если была включена опция saveBackups.
Связанные концепции
Индикаторы охвата кода
Связанные задачи
Включение охвата кода
Настройка уровней и фильтров охвата кода
Настройка индикаторов охвата кода
Анализ отчетов охвата кода
(C) Copyright IBM Corporation 2007, 2008. Все права защищены.