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

В. Что означает строка с частичным охватом (выделена желтым индикатором)?

О. Строка с частичным охватом означает, что выполняются не все ветви кода.

Ниже приведены примеры:

  1. Обработчики исключительной ситуации:

  2. try {
    methodA() // исключительная ситуация в methodA
    } catch (Exception e) {..}

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

  3. Общий код в конструкторе:
  4. В этом примере строка 4 имеет частичный охват. Обратите внимание, что код инициализации переменной экземпляра выполняется всегда, независимо от того, какой конструктор создает экземпляр объекта. Компилятор помещает код инициализации в оба конструктора. Поэтому код можно представить следующим образом:

    Поскольку используется только один конструктор, другой участок кода не выполняется, и показан частичный охват.

В. Почему в отчетах охвата кода общее число строк для пакета может отличаться от общего числа строк для классов этого пакета?

О. При подсчете строк для пакета общие строки методов не считаются дважды.

В. Почему определения классов (например, public class Foo {..}) показаны как неохваченные (красным) или охваченные частично (желтым)?

О. Если класс не имеет явного конструктора по умолчанию, то компилятор создаст этот конструктор, и, будучи неявным, он может быть связан с этой строкой кода. Кроме того, при наличии кода со статической инициализацией (например, статические поля), компилятор создает блоки статической инициализации, которые также могут быть связаны с этой строкой.

В. Почему индикаторы охвата на панели Структура пакетов показаны красным, хотя процент охвата превышает установленные пороги?

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

В. Какие строки исключаются из охвата кода?

О. Следующие строки не включаются в подсчет при охвате и при вычислении процента:

В. Что такое блоки и охват блоков?

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

Блоки заканчиваются такими инструкциями, как branch, call, throw и return.

В. Почему при отладке приложений с включенным охватом кода отладчик заходит в llc_probe.class, а не в ожидаемый метод?

О. Так работает сбор данных при охвате. Для исправления этой ситуации используйте пошаговые фильтры: