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
上記コーディングは、コードアナライザーからの警告をトリガーしません。