Main Content

MATLAB コード アナライザーの警告

構文の警告とプロパティ名

MATLAB® のコード アナライザーは、コードを作成する場合に構文エラーを防ぎ、コードを最適化するのに便利です。効率よく作業するために、コード アナライザーによってクラス定義コードの分析に使用されるルールを理解しておくようにします。このルールを理解することで、MATLAB で不適切なコードが許可されるのを防ぐことができます。

変数/プロパティの名前の競合の警告

メソッド内でプロパティと同じ名前の変数を使用すると、コード アナライザーによる警告が発生します。たとえば、クラスが EmployeeName というプロパティを定義するとします。このクラス内で、EmployeeName を変数として使用するメソッドがあるものとします。

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

上記の関数は、正しい MATLAB コードですが、次の 2 つの理由のために警告が発生します。

  • EmployeeName の値がまったく使用されない。

  • EmployeeName は、変数として使用されるプロパティの名前である。

代わりに、関数 someMethod が、以下のステートメントを含む場合、

obj.EmployeeName = n;

コード アナライザーによる警告は発生しません。

someMethod を以下のように変更すると、

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

実際は EmployeeName プロパティを参照したいのではないかという旨の警告が 1 つだけ返されます。

このバージョンの someMethod は正しい MATLAB コードですが、関数と同じ名前をプロパティに使用すると混乱します。このため、実際には次のステートメントを意図しているのではないかという旨の警告が表示されます。

EN = obj.EmployeeName;

変数/プロパティ名の規則の例外

プロパティ値を返し、出力変数名に対してプロパティ名を使用する、メソッドを定義するものとします。以下に例を示します。

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

変数が以下のものである場合に、変数名がプロパティ名と同じであっても、コード アナライザーは警告しません。

  • 入力変数または出力変数

  • グローバル変数または永続変数

これらの特別のケースでは、プロパティ名でもある変数名を使用していることを、コード アナライザーは警告しません。したがって、以下のようなコーディングの誤りがあっても M-Lint は警告を生成しません。

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

上記コーディングは、コードアナライザーからの警告をトリガーしません。

関連するトピック