Значение каждой записи в таблице methodLineTables
соответствует номеру строки в исходном файле, на который ссылается строка данных
classSourceFile, содержащая номер исходной строки исполняемого модуля. Например, пятая
запись таблицы соответствует пятой строке исполняемого модуля.
Пример строки methodLineTables:
#51+1201#75+11,41
Что означает эта запись:
- Цифры, следующие сразу после символа решетки ("#"), представляют собой полный номер строки в исходном коде для класса. В данном примере первый исполняемый модуль в первом методе класса находится на строке 51.
- Каждая цифра за знаком плюса ("+") соответствует числу строк, которые следует добавить к предыдущему номеру строки для получения номера строки следующего исполняемого модуля. В приведенном примере цифры вслед за знаком плюса (+1201) используются для подсчета номеров строк для исполняемых модулей со второго по пятый:
- 51 + 1 = 52 - номер строки второго исполняемого модуля
- 52 + 2 = 54 - номер строки третьего исполняемого модуля
- 54 + 0 = 54 - номер строки четвертого исполняемого модуля (два исполняемых блока в одной строке исходного кода)
- 54 + 1 = 55 - номер строки пятого исполняемого модуля
- Если значение для увеличения номера строки является отрицательным или превышает 9, то задается полный номер строки исполняемого модуля. В нашем примере шестой исполняемый модуль находится на строке 75, что на 20 превышает номер строки предыдущего исполняемого модуля, равный 55. В этом случае для шестого исполняемого модуля следует указать полный номер строки, после чего вновь начнется относительный подсчет номера строки (#75+11):
- 75 = номер строки шестого исполняемого модуля
- 75 + 1 = 76 - номер строки седьмого исполняемого модуля
- 76 + 1 = 77 - номер строки восьмого исполняемого модуля
- Запятая (",") означает завершение одного метода и начало другого. Цифры и символы, следующие за запятой, обрабатываются также, как и раньше. В нашем примере номер строки первого исполняемого модуля второго метода на 4 превышает последний номер строки, подсчитанный для первого метода, таким образом относительный подсчет номера строки продолжается после запятой(,41):
- 77 + 4 = 81 - номер строки первого исполняемого модуля второго метода
- 81 + 1 = номер строки второго исполняемого модуля второго метода: 82
Примечание:Информация об исходном коде
может быть указана не для всех исполняемых модулей. Некоторые из них создаются
компилятором и используют семантику языка Java. Например, для обработки исключительных
ситуаций, инициализации или синхронизации. Такие исполняемые модули будут
иметь полный номер строки, равный нулю в строке methodLineTables. Равный нулю полный номер строки указывает, что сведения о номере строки недоступны. Если метод не содержит информации о номерах строк, у него будет лишь один
исполняемый модуль под номером ноль.
Ниже приведены дополнительные примеры строк methodLineTables и их значения:
Строка methodLineTables |
Значение |
+5 |
Если номер строки первого исполняемого модуля первого метода меньше десяти, то строка начинается с символа плюса, и отсчет идет с нулевой строки. В этом примере номер строки первого исполняемого модуля будет равен 5. |
+0 |
Если у первого метода отсутствует
информация об исходном коде, то строка начинается с +0. Все фрагменты датчика
executableUnit, применяемые к такому методу, будут вставлены только один раз, в начало
метода. |
...#437,#457+123... |
Если первый исполняемый модуль метода начинается спустя более чем 9 строк после последнего исполняемого модуля предыдущего метода, следует использовать запятую, знак плюса и номер строки для первого исполняемого модуля нового метода. В данном примере первый исполняемый модуль начинается спустя 20 строк после последнего исполняемого модуля предыдущего метода. |
...#437,+2... |
Для последнего исполняемого модуля метода можно использовать знак решетки ("#"), тогда как первый исполняемый модуль следующего метода находится на небольшом удалении от него. В данном примере последний исполняемый модуль одного метода начинается на строке 437, а первый исполняемый модуль следующего метода начинается на строке 439. |