getLineColumn

Найдите местоположения начала и конца кода MATLAB, участвующих в генерации кода

Описание

пример

[startLoc,endLoc] = getLineColumn(obj) возвращает индексы линий и столбцов первого и последнего символов MATLAB® код, описанный obj в тексте файла, содержащего код. Код, описанный obj является Функцией MATLAB или методом, участвующим в генерации кода.

пример

[startLoc,endLoc] = getLineColumn(obj_message) возвращает индексы линии и столбца первого и последнего символов кода MATLAB, которые вызвали сообщение генерации кода, описанное в obj_message.

Примеры

свернуть все

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

Определите функцию MATLAB foo:

function [b,c] = foo(a)
b = svd(a,0);
c = bar(a);
end

function c = bar(a)
c = inv(a);
end

Сгенерируйте статическую библиотеку C для foo. Задайте вход как строковый скаляр. Экспортируйте информацию отчета генерации кода в переменную info в вашем базовом рабочем пространстве MATLAB.

codegen -config:lib foo -args {"A string scalar"} -reportinfo info

Генерация кода прекращается, потому что строковый скаляр не является допустимым входом для функций MATLAB svd и inv. Генератор кода создает информационный объект отчета info в базовом рабочем пространстве MATLAB.

Свойство info.Functions является двумерным массивом. info.Functions(1) содержит описание функции MATLAB foo. info.Functions(2) содержит описание функции MATLAB bar.

Для проверки функции вручную bar, сначала отобразите текст файла, содержащего bar.

info.Functions(2).File.Text
    'function [b,c] = foo(a)
     b = svd(a,0);
     c = bar(a);
     end
     
     function c = bar(a)
     c = inv(a);
     end
     '

Использование getLineColumn для определения местоположения начала и конца функции bar в этом тексте. Область выхода startLoc содержит индексы линия и столбец первого символа bar. Область выхода endLoc содержит индексы линия и столбец последнего символа bar.

[startLoc,endLoc]=getLineColumn(info.Functions(2))
startLoc = 

  struct with fields:

      Line: 6
    Column: 1


endLoc = 

  struct with fields:

      Line: 8
    Column: 3

Создайте информационный объект отчета для неудачного процесса генерации кода. Затем вы найдете часть кода MATLAB, которая вызвала сообщение об ошибке.

Определите функцию MATLAB foo:

function b = foo(a)
b = svd(a,0);
end

Сгенерируйте статическую библиотеку C для foo. Задайте вход как строковый скаляр. Экспортируйте информацию отчета генерации кода в переменную info в вашем базовом рабочем пространстве MATLAB.

codegen -config:lib foo -args {"A string scalar"} -reportinfo info

Генерация кода прекращается, потому что строковый скаляр не является допустимым входом для функции MATLAB svd. Генератор кода создает информационный объект отчета info в базовом рабочем пространстве MATLAB.

Свойство info.Messages является двумерным массивом, содержащим описания двух сообщений генерации кода. Проверьте описание первого сообщения.

info.Messages(1)
  Message with properties:

    Identifier: 'Coder:toolbox:unsupportedClass'
          Type: 'Error'
          Text: 'Function 'svd' is not defined for values of class 'string'.'
          File: [1×1 coder.CodeFile]
    StartIndex: 26
      EndIndex: 33

Чтобы вручную просмотреть сегмент кода MATLAB, вызвавший это сообщение об ошибке, сначала отобразите текст файла, связанный с этим сообщением об ошибке.

info.Messages(1).File.Text
'function b = foo(a)
 b = svd(a,0);
 end
 '

Использование getLineColumn для определения начала и конца части кода, вызвавшей сообщение об ошибке. Область выхода startLoc содержит индексы линий и столбцов первого символа сегмента кода. Область выхода endLoc содержит индексы линий и столбцов последнего символа сегмента кода.

[startLoc,endLoc] = getLineColumn(info.messages(1))
startLoc = 

  struct with fields:

      Line: 2
    Column: 5


endLoc = 

  struct with fields:

      Line: 2
    Column: 12
Эти местоположения соответствуют началу и концу вызова функции 'svd(a,0)' в тексте foo.m.

Входные параметры

свернуть все

Объект, описывающий функцию MATLAB или метод в классе MATLAB, который участвует в генерации кода, заданный как одно из следующего:

A coder.Message объект, описывающий ошибку, предупреждение или информационное сообщение, полученное во время генерации кода из кода MATLAB. См. Кодер. Свойства сообщения.

Выходные аргументы

свернуть все

Массив структур с двумя полями: Line и Column.

  • startLoc.Line - индекс линии первого символа кода MATLAB в тексте файла, содержащего код.

  • startLoc.Column - индекс столбца первого символа кода MATLAB в тексте файла, содержащего код.

Массив структур с двумя полями: Line и Column.

  • endLoc.Line - индекс линии последнего символа кода MATLAB в тексте файла, содержащего код.

  • endLoc.Column - индекс столбца последнего символа кода MATLAB в тексте файла, содержащего код.

Введенный в R2019a