Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我有一个涉及许多m文件和mdl文件的复杂的MATLAB-Simulink项目。一些m文件定义了在其他m文件中使用的变量(我知道设计不好,但这是旧代码)。还有一些不再使用的功能。
我需要一种自动的方法来查找未使用的变量和函数,以便可以删除它们并简化整个过程。理想情况下,我应该具有一个脚本/工具,该脚本/工具将项目的根目录名称作为输入,扫描子目录中的所有文件,并输出所有未在任何m文件或mdl文件中使用的变量和函数。 我知道我可以找到mdl文件中未使用的变量(请参见提示和技巧-Simulink模型中的跟踪变量 )。我想将该方法应用于项目中的所有文件。 我检测未在m文件中使用的变量的想法是将所有m文件临时组合到一个文件中,并在其上运行mlint 。还有更好的主意吗? 回答: 除了完成将所有m文件粘贴到一个文件中以运行MLINT的繁琐(并且可能容易出错)的任务之外 ,您还有其他一些选择... 如果所有文件都放在一个文件夹中,最简单的方法是转到“当前文件夹”浏览器,单击“ 操作”按钮 ![]() ![]() 这将打开一个新窗口,显示当前目录中每个m文件的MLINT结果: ![]() 如果您希望使用脚本来自动化该过程,而不必单击菜单选项,那么MathWorks File Exchange上的一些提交( 此处和此处 )似乎是在目录结构上递归地工作,而不是单个目录。 另外,这是一些示例代码,它们将对单个目录执行您想要的操作: 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。 更多&回答... |
![]() |
![]() |