КОД MATLAB предупреждения анализатора

Предупреждения синтаксиса и имена свойства

Анализатор кода MATLAB® помогает вам оптимизировать свой код и избежать синтаксических ошибок, в то время как вы пишете код. Полезно понять некоторые правила, что Анализатор кода применяется в его анализе кода определения класса. Это понимание помогает вам избежать ситуаций, в которых MATLAB позволяет код, который является нежелательным.

Предупреждения Конфликта Переменной/Имени свойства

Анализатор кода предупреждает об использовании имен переменных в методах, которые совпадают с именами свойств. Например, предположите, что класс задает свойство под названием EmployeeName и в этом классе, существует метод, который использует EmployeeName в качестве переменной:

properties
   EmployeeName
end
methods
   function someMethod(obj,n)
      EmployeeName = n;
   end
end

В то время как предыдущей функцией является легальный код MATLAB, она приводит к предупреждениям Анализатора кода по двум причинам:

  • Значение EmployeeName никогда не используется

  • EmployeeName является именем свойства, которое используется в качестве переменной

Если функциональный someMethod содержал следующий оператор вместо этого:

obj.EmployeeName = n;

Анализатор кода не генерирует предупреждений.

Если вы изменяете someMethod на:

function EN = someMethod(obj)
   EN = EmployeeName;
end

Анализатор кода возвращает только одно предупреждение, предполагая, что вы можете на самом деле хотеть обратиться к свойству EmployeeName.

В то время как этой версией someMethod является легальный код MATLAB, сбивает с толку давать свойству то же имя как функция. Поэтому Анализатор кода обеспечивает предупреждение, предполагающее, что вы можете предназначить оператор, чтобы быть:

EN = obj.EmployeeName;

Исключение к Правилу Переменной/Имени свойства

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

function EmployeeName = someMethod(obj)
   EmployeeName = obj.EmployeeName;
end

Анализатор кода не предупреждает, когда имя переменной совпадает с именем свойства, когда переменная:

  • Переменная ввода или вывода

  • Глобальная или персистентная переменная

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

function EmployeeName = someMethod(obj)
   EmployeeName = EmployeeName; % Forgot to include obj.
end

не инициировал предупреждение от Анализатора кода.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте