![]() |
在MATLAB-Simulink项目中查找未使用的变量和函数
我有一个涉及许多m文件和mdl文件的复杂的MATLAB-Simulink项目。一些m文件定义了在其他m文件中使用的变量(我知道设计不好,但这是旧代码)。还有一些不再使用的功能。
我需要一种自动的方法来查找未使用的变量和函数,以便可以删除它们并简化整个过程。理想情况下,我应该具有一个脚本/工具,该脚本/工具将项目的根目录名称作为输入,扫描子目录中的所有文件,并输出所有未在任何m文件或mdl文件中使用的变量和函数。 我知道我可以找到mdl文件中未使用的变量(请参见[URL="http://www.mathworks.com/company/newsletters/articles/tips-and-tricks-tracking-variables-in-a-simulink-model.html?issue=nn2010"]提示和技巧-Simulink模型中的跟踪变量[/URL] )。我想将该方法应用于项目中的所有文件。 我检测未在m文件中使用的变量的想法是将所有m文件临时组合到一个文件中,并在[URL="http://www.mathworks.com/help/techdoc/ref/mlint.html"]其[/URL]上运行[URL="http://www.mathworks.com/help/techdoc/ref/mlint.html"]mlint[/URL] 。还有更好的主意吗? [B]回答:[/B] 除了完成将所有m文件粘贴到一个文件中以运行[URL="http://www.mathworks.com/help/techdoc/ref/mlint.html"]MLINT[/URL]的繁琐(并且可能容易出错)的任务[URL="http://www.mathworks.com/help/techdoc/ref/mlint.html"]之外[/URL] ,您还有其他一些选择... 如果所有文件都放在一个文件夹中,最简单的方法是转到“当前文件夹”浏览器,单击“ [B]操作”[/B]按钮[IMG]https://i.stack.imgur.com/fMum2.png[/IMG] ,然后选择[B]报告>代码分析器报告[/B] 。 [IMG]https://i.stack.imgur.com/EdyZr.png[/IMG] 这将打开一个新窗口,显示当前目录中每个m文件的MLINT结果: [IMG]https://i.stack.imgur.com/7SJJV.png[/IMG] 如果您希望使用脚本来自动化该过程,而不必单击菜单选项,那么MathWorks File Exchange上的一些提交( [URL="http://www.mathworks.com/matlabcentral/fileexchange/11855-run-m-lint-on-a-directory-tree-and-filter-results"]此处[/URL]和[URL="http://www.mathworks.com/matlabcentral/fileexchange/23786-recursive-mlint"]此处[/URL] )似乎是在目录结构上递归地工作,而不是单个目录。 另外,这是一些示例代码,它们将对单个目录执行您想要的操作: 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 您可以通过这种方式扩展文件名(和路径)的收集,以[URL="https://stackoverflow.com/questions/2652630/how-to-get-all-files-under-a-specific-directory-in-matlab/2654459#2654459"]对目录树进行递归操作[/URL] ,然后对所收集的结果文件集运行MLINT。 [url=https://stackoverflow.com/questions/4678085]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:27。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.