exponenta event banner

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