spa*_*omb 6 matlab refactoring dependencies function
我有一个大型项目,有40多个功能,而且每天都在增加.通常我会从不同的脚本多次引用一个函数.每隔一段时间,我会发现我需要为一个脚本编辑一个函数,然后我意识到我可能希望该函数对另一个脚本保持不变.显然这本身没问题; 我可以写一个新功能.但有时我不记得我是否在包含所有脚本的较大文件夹中的其他地方引用了该函数!
在MATLAB中有没有办法以某种方式找到文件夹中函数使用次数的计数?如果是这样,有没有办法跟踪它的引用位置?在此先感谢=).
为此,我通常使用"包含"选项查找文件功能(位于屏幕顶部的菜单中).特别是如果您的函数名称与公共变量名称不匹配,则此方法非常有效.
只需在整个matlab路径中搜索,或者在特定目录中搜索类似的内容myFun(,您将看到调用它的所有位置.在最坏的情况下,你也会发现一些没有被调用的地方.
MATLAB使用该depfun函数为依赖性跟踪提供支持.depfun告诉您运行给定函数需要哪些其他函数.
你问的是相反的问题:哪些函数需要给定的函数?
使用depfun,您可以执行反向查找.这是一个简单的例子:
function result = invdepfun(allFunctions, lookFor)
% Return all functions that depend on a given function
%
% Example: invdepfun({'myfun1', 'myfun2', 'myfun3'}, 'myfun4') returns all of
% 'myfun1', 'myfun2', 'myfun3' that use 'myfun4'.
filename = which(lookFor);
result = {};
for i = 1 : numel(allFunctions)
deps = depfun(allFunctions{i}, '-quiet');
if any(strcmpi(deps, filename))
result{end + 1} = allFunctions{i};
end
end
end
Run Code Online (Sandbox Code Playgroud)
您可以使用各种其他MATLAB函数(which,dir等)自动编译要传递给invdepfun第一个参数的所有函数的列表.
另请参阅文件交换上的这篇文章.