8

多くの m ファイルと mdl ファイルを含む複雑な MATLAB-Simulink プロジェクトがあります。一部の m ファイルは、他の m ファイルで使用される変数を定義します (設計が悪いことはわかっていますが、レガシー コードです)。使わなくなった機能もあります。

未使用の変数と関数を自動的に見つけて、それらを削除し、全体の複雑さを少し軽減できる方法が必要です。理想的には、プロジェクトのルート ディレクトリの名前を入力として受け取り、サブディレクトリ内のすべてのファイルをスキャンし、m ファイルまたは mdl ファイルで使用されていないすべての変数と関数を出力するスクリプト/ツールが必要です。

mdl ファイルで使用されていない変数を見つけることができることはわかっています (ヒントとコツ - Simulink モデルで変数を追跡するを参照)。その方法をプロジェクト内のすべてのファイルに適用したいと思います。

m ファイルで使用されていない変数を検出する私の考えは、すべての m ファイルを一時的に 1 つのファイルに結合し、mlintを実行することです。より良いアイデアはありますか?

4

1 に答える 1

8

すべての m ファイルを 1 つに貼り付けてMLINTを実行するという面倒な (そして潜在的にエラーが発生しやすい) タスクを実行する代わりに、他にいくつかのオプションがあります...

すべてのファイルが 1 つのフォルダーにある場合、最も簡単な方法は、現在のフォルダー ブラウザーに移動し、[アクション] ボタンをクリックして、[レポート] > [コード アナライザー レポート代替テキスト]を選択することです。

代替テキスト

これにより、現在のディレクトリ内の各 m ファイルの MLINT 結果を表示する新しいウィンドウが開きます。

代替テキスト

メニュー オプションをクリックする代わりに、スクリプトを使用してプロセスを自動化したい場合は、MathWorks ファイル交換 (ここここ)にいくつかの提出物があります。ディレクトリ。

さらに、単一のディレクトリに対して必要なことを行うサンプルコードを次に示します。

dirData = dir;                 %# Get data on the current directory contents
fileIndex = ~[dirData.isdir];                 %# Get an index for the files
fileNames = {dirData(fileIndex).name};        %# Get the file names
[~,~,ext] = cellfun(@fileparts,fileNames,...  %# Get the file extensions
                    'UniformOutput',false);
mFileIndex = strcmp(ext,'.m');                %# Get an index for the m-files
cellfun(@mlint,fileNames(mFileIndex));        %# Run MLINT on each m-file

この方法でファイル名 (およびパス) のコレクションを拡張して、ディレクトリ ツリーで再帰的に操作し、収集した結果のファイル セットに対して MLINT を実行できます。

于 2011-01-18T15:40:25.663 に答える