Предупреждения анализатора кода 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

не запускает предупреждение от анализатора кода.

Похожие темы