MATLAB Code Analyzerが検索する新しいコードパターンを追加する方法はないと思います。既存の警告を表示または非表示にすることができます。
私は、コード分析のためにどのようなサードパーティのツールが存在するのかよく分かりません。汎用アナライザを自分で作成するのは難しいでしょう。 しかし、の場合、コード内で強調表示したいと思っていた非常に具体的で明確なパターンがいくつかあった場合は、regular expressions(悲惨な音楽と叫び声)で解析することができます。
これはしばしば困難ですが、実行可能です。例として、上記のパターンを探すこのコードを書いた。私は最初の非興味深い括弧のペアとその内容を削除することによって扱うことが多い括弧のセットを占めている。このような何かをやったときに管理する必要があるものの一つは:
function check_code(filePath)
% Read lines from the file:
fid = fopen(filePath, 'r');
codeLines = textscan(fid, '%s', 'Delimiter', '\n');
fclose(fid);
codeLines = codeLines{1};
% Remove sets of parentheses that do not encapsulate a logical statement:
tempCode = codeLines;
modCode = regexprep(tempCode, '\([^\(\)<>=~\|\&]*\)', '');
while ~isequal(modCode, tempCode)
tempCode = modCode;
modCode = regexprep(tempCode, '\([^\(\)<>=~\|\&]*\)', '');
end
% Match patterns using regexp:
matchIndex = regexp(modCode, 'numel\([^\(\)]+[<>=~\|\&]+[^\(\)]+\)');
% Format return information:
nMatches = cellfun(@numel, matchIndex);
index = find(nMatches);
lineNumbers = repelem(index, nMatches(index));
fprintf('Line %d: Potential incorrect use of NUMEL in logical statement.\n', ...
lineNumbers);
end
% Test cases:
% if numel(list < x)
% if numel(list) < x
% if numel(list(:,1)) < x
% if numel(list(:,1) < x)
% if (numel(list(:,1)) < x)
% if numel(list < x) & numel(list < y)
% if (numel(list) < x) & (numel(list) < y)
お知らせ私はいくつかを追加しましたテストケースをファイルの最後のコメントに追加します。メッセージは、第1〜第4、およびそこ以来、二回第六テストケースのために(自分の誤ったコードと一致し第六テストケースのためにリストされていることを
>> check_code('check_code.m')
Line 28: Potential incorrect use of NUMEL in logical statement.
Line 31: Potential incorrect use of NUMEL in logical statement.
Line 33: Potential incorrect use of NUMEL in logical statement.
Line 33: Potential incorrect use of NUMEL in logical statement.
お知らせ:私は自分自身にこのコードを実行すると、私はこれを取得しますその行には2つのエラーがあります)。
これはすべての状況で機能しますか?私はそうしないだろう。追加の状況に対処するために、正規表現パターンの複雑さを増やさなければならない可能性が高くなります。しかし、少なくともこれは、コードを解析する際に考慮する必要のある種類の例として役立ちます。
この[記事](http://undocumentedmatlab.com/blog/parsing-mlint-code-analyzer-output) – obchardon