如何自动将Matlab脚本转换为Matlab函数?

时间:2018-03-14 03:39:23

标签: matlab parsing debugging sed static-analysis

我的问题如下:

我有很多(~1000)相互调用的Matlab脚本,这些脚本编写得非常糟糕,经常会破坏彼此的环境并且通常变得无法管理。

我遇到这个问题的原因之一是我需要编写覆盖其中很大一部分的测试套件。幸运的是,对于他们中的大多数人来说,正确性的主要标准是'他们不会崩溃。

在循环中逐个运行它们通常不是一种选择,因为它们会定期调用clear classesclose allclc,阴影内置函数和运算符等等。

所以我最初的目标是找到一种在某种孤立环境中运行matlab脚本的方法,但我没有找到一种好方法。 (建议欢迎,但这不是主要问题。)

因为无论如何我都需要将它们全部转换为函数,我正在寻找一些方法来自动地,或者至少半自动地进行。

我的意思是半自动:

  1. 只需添加一行function varargout = $filename( varargin )作为文件的第一行,end作为最后一行。这至少会使它们作为具有feval的函数和所有这些函数运行,并且(更重要的是)防止它们损坏测试运行器。
  2. 执行第1点并扫描文件以引用未声明的变量并将其添加为函数参数。这也应该是可行的,因为变量的名称是已知的。这无助于识别输出变量,但仍然会提供很多帮助。例如,我们可以将整个工作区打包成一个大输出结构。
  3. 执行第2点的运行时版本。这样一种魔法转换器'实际上可以跟踪执行环境(工作空间)并识别哪些变量被隐式用作输入参数'一个脚本,以后会用到'输出参数'。这个选项看起来像EXPHARD,但是在实践中,少量的调用应该不会太糟糕。
  4. 第1点我可以使用sed来实现自己,因为我也可以摆脱所有clear classesclc,但选项2和3似乎更难。有没有至少与选项2或3类似的东西?

0 个答案:

没有答案