matlab - 在 MATLAB-Simulink 项目中查找未使用的变量和函数

标签 matlab simulink

我有一个复杂的 MATLAB-Simulink 项目,涉及许多 m 文件和 mdl 文件。一些 m 文件定义了在其他 m 文件中使用的变量(我知道这是糟糕的设计,但它是遗留代码)。还有一些不再使用的功能。

我需要一种自动查找未使用的变量和函数的方法,以便我可以删除它们并使整个事情变得不那么复杂。理想情况下,我应该有一个脚本/工具,它将项目的根目录名称作为输入,扫描子目录中的所有文件,并输出所有未在任何 m 文件或 mdl 文件中使用的变量和函数。

我知道我可以找到未在 mdl 文件中使用的变量(参见 Tips and Tricks - Tracking Variables in a Simulink Model )。我想将该方法应用于项目中的所有文件。

我检测未在 m 文件中使用的变量的想法是临时将所有 m 文件合并到一个文件中并运行 mlint在上面。有更好的想法吗?

最佳答案

无需执行将所有 m 文件粘贴到一个文件中来运行的繁琐(且可能容易出错)的任务 MLINT ,您还有其他一些选择...

如果您将所有文件都放在一个文件夹中,最简单的方法是转到“当前文件夹”浏览器,单击操作 按钮alt text ,然后选择报告 > 代码分析器报告

alt text

这将打开一个新窗口,显示当前目录中每个 m 文件的 MLINT 结果:

alt text

如果您更愿意使用脚本自动执行该过程,而不必单击菜单选项,则可以在 MathWorks 文件交换(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。

关于matlab - 在 MATLAB-Simulink 项目中查找未使用的变量和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4678085/

相关文章:

C++ : NLopt COBYLA as compared to Matlab fmincon

matlab - 在 Matlab 中的图像上绘制矩形

matlab - Simulink:PID Controller - 反饱和计算和钳位之间的区别?

c - simulink 编码器 c 文件到 simulink 模型

matlab - 如何从另一个脚本调用 'call' Matlab 函数

matlab - 如何在 Simulink Matlab 功能 block 中使用 syms

image - MATLAB:如何更改imhist的颜色和窗口的大小?

c - 使用 SImulink 生成的 C 代码中的强制宏定义

matlab - 是否可以在不运行 Matlab 脚本的情况下在 Simulink 中设置参数?

matlab - Simulink 仿真引擎如何工作?