使用MATLAB代码分析器帮助编写可部署代码
本周,客座博主Jacob将介绍如何使用基于matlab的工具来开发从一开始就可以部署的应用程序。
部署的应用程序依赖于MATLAB编译器运行时(MCR)执行。MCR与MATLAB在一些微妙但重要的方面有所不同。你会发现部署基于matlab的应用程序要容易得多你的代码考虑到这些差异。通过阅读本文,您可以了解如何开发可部署的应用程序我们的文档而且博客文章.为了帮助您跟踪所有细节,我们正在努力将这些信息中的一些推入我们的开发工具中。我们增强用于部署的第一个工具是MATLAB代码分析器,mlint.
内容
开启部署消息
代码分析器检查MATLAB代码,以检测可能的问题或改进。的代码分析器集成进入MATLAB编辑器,以便您可以在开发代码时看到它的建议。
代码分析器建议分为几个类别(您可以通过Code analyzer Preferences微调显示哪些消息)。
MATLAB编译器(部署)消息当您使用某些可能无法部署的函数时提醒您。但是,您以前可能没有注意到这些消息,因为默认情况下这个类别是禁用的。为了启用这类消息:
捕获不可部署的代码
启用部署消息后,代码分析器可以帮助检测您何时正在开发有问题的代码。例如,编写可部署代码使用下面的代码作为示例,这些代码可以编译,但在运行时产生不希望看到的结果:
cd mathFcns z = add(x,y);cd . ./stringFcns s = add(s1,s2);
的两个实例都高亮显示在MATLAB编辑器中cd命令。将光标悬停在带下划线的单词上,您将查看警告消息:
MCC使用CD功能是有问题的。
此外,如果单击消息,您将得到解释和建议的操作。在这种情况下,建议的操作是避免使用CD命令。
代码分析器的局限性
代码分析器可以帮助捕获许多不可部署代码的实例。的大多数实例都涉及到的使用已知问题函数就像cd,目录或帮助.
事实上,代码分析器首选项中的默认设置窗口显示了代码分析器可能显示的所有可能消息。阅读这些消息可以帮助您理解代码分析器可能捕获的代码结构。
虽然代码分析器是检测一些不可部署代码实例的有用工具,但它不能检测所有实例。例如,考虑下面的例子,它导致没有警告或错误消息:
set(gca, 'ButtonDownFcn', 'LogButtonPress');
此代码在部署时可能会导致失败,因为MATLAB编译器的依赖分析(depfun)无法察觉LogButtonPress必须包含在应用程序中的函数。要使此代码在部署模式下工作,必须显式地包含LogButtonPress在编译时(通过使用——一个开关在世纪挑战集团).在这种情况下,代码分析器受到了与MATLAB Compiler依赖分析相同的一些限制——无法理解字符串的内容。
使用代码分析器,但不要依赖它
代码分析器可以帮助您编写可部署的代码,但它不能代替理解编译过程或在MATLAB中运行应用程序与在MATLAB中运行应用程序有何不同MCR.这种理解最终为编写可部署代码提供了最好的基础。
然而,即使您不能完全依赖代码分析器来保证可部署的代码,您仍然可以使用它来快速捕获实例,否则可能需要长时间的调试来纠正。毕竟,在开发过程中发现的问题的修复成本通常比在应用程序部署时发现的问题要低得多。
您认为代码分析器应该对其他MATLAB编码模式发出部署警告吗?让我们知道在这里.