2011-01-13 19 views
6

多くのmファイルとmdlファイルを含む複雑なMATLAB-Simulinkプロジェクトがあります。いくつかのmファイルは、他のmファイルで使用されている変数を定義しています(悪い設計ですが、それはレガシーコードです)。もはや使用されない関数もあります。MATLAB-Simulinkプロジェクトで未使用の変数と関数を見つけよう

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

私はmdlファイルで使われていない変数を見つけることができます(Tips and Tricks - Tracking Variables in a Simulink Model参照)。このメソッドをプロジェクトのすべてのファイルに適用したいと思います。

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

答えて

7

代わりMLINTを実行するために一つにM-ファイルのすべてを貼り付けるの退屈(および潜在的にエラーが発生しやすい)タスクを通過するのは、いくつかの他のオプションを持っている...

すべてのあなたを持っている場合ファイルを1つのフォルダに格納する場合、最も簡単な方法は、現在のフォルダブラウザに移動し、アクションボタンalt textをクリックし、レポート>コードアナライザレポートを選択します。

alt text

これは、現在のディレクトリ内の各M-ファイルのためMLINT結果を表示する新しいウィンドウが開きます:あなたはかなりのスクリプトを使用しての代わりに、プロセスを自動化したい場合

alt text

をメニューオプションをクリックするだけで、MathWorks File Exchange(herehere)には、単一のディレクトリではなくディレクトリ構造上で再帰的に動作するように思われるいくつかの提出物があります。ここ

追加で

は、あなたが単一のディレクトリのためにやりたいだろういくつかのサンプルコードです:

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 

あなたが実行し、operate recursively on a directory treeに、このようにファイル名(とパス)のコレクションを拡張することができあなたが収集した結果のファイルセットのMLINT。

+1

ありがとうございますが、これは問題の一部のみをカバーしています。 f1.mとf2.mの2つのファイルがあるとしましょう。 f1.mは以下の通りである。 b = 3; f2は、c = a * 2である。 bは使用されていませんが、コードアナライザのレポートではそのことは分かりません。 – Samil

+0

@サミール:それは問題です。それらは[関数](http://www.mathworks.com/help/techdoc/ref/function.html)ではないので、[スクリプト](http:// www .mathworks.com/help/techdoc/ref/script.html)。スクリプトはどのワークスペースでも実行できるので、どの変数がすでにそのワークスペースに存在するのか、またそのスクリプトのどの変数が別のスクリプトや関数によって後で使用されるのか分からないので、すべてのスクリプトファイルをまとめて何とかまず効果的にMLINTを実行します。私はスクリプトを扱う際に、別の方法を考えることはできません。 – gnovice

関連する問題