主要内容

校验码错误和警告使用代码分析器

MATLAB®代码分析器可以自动检查您的代码的编码问题。您可以查看警告和错误消息关于你的代码,并修改您的文件基于消息。消息自动更新,不断可以看到如果您的更改地址的消息中提到的问题。一些消息提供额外信息,自动代码修正,或两者兼而有之。

使连续代码检查

使连续的代码检查,选项卡,环境部分中,点击首选项。选择MATLAB>代码分析器,然后选择使集成警告和错误消息复选框。设置突显出选项强调警告和错误

当启用连续代码检查,MATLAB显示警告和错误消息的代码编辑器和编辑器。例如,样例文件lengthofline.m包含几个错误和警告。将代码复制到编辑器并保存文件lengthofline.m

lengthofline.m代码

视图代码分析器状态文件

当你在编辑器中打开一个文件或现场编辑消息指示器栏顶部的指标显示了整个代码分析器状态的文件。

消息指示器 描述
红色错误符号

文件包含语法错误或其他重大问题。

黄色的警告标志

文件包含警告或改进的机会,但没有错误。

绿色复选标记符号

文件没有包含任何错误、警告或改进的机会。

例如,在lengthofline.m,消息指示器红色错误符号,这意味着文件包含至少一个错误。

lengthofline文件在编辑器中与红色错误符号显示在指示栏

视图代码分析器的消息

去第一个代码片段包含一个消息,单击消息指示器。确认代码片段是在红色下划线为错误或橙色警告和改进机会。如果文件包含一个错误,单击消息指示器将显示你第一个错误。

例如,在lengthofline.m,当你点击消息指示器,光标线47,第一个发生错误。MATLAB显示错误的错误标记旁边的那条线指示器栏。多个消息可以代表一个问题或多个问题。处理一个消息可能地址。或者,你地址后,其他消息可能会改变或者你需要做什么可以更加明朗。

lengthofline文件在编辑器中单击消息后指标。三个错误显示错误标记在指示器栏旁边。

去下一个代码片段包含信息,单击消息指示器。您还可以单击标记在指示器栏标记的线代表。例如,单击第一个标记在指示器栏lengthofline.m。光标移动到第21行的开始。

查看消息的代码片段,将鼠标指针移中突显出的代码片段。或者,你可以你的光标位置在强调代码片段和新闻Ctrl + M。如果额外的信息是可用的消息,消息包含一个细节按钮。单击按钮来显示额外信息和任何建议用户操作。

lengthofline文件在编辑器中显示一个警告消息详细信息按钮

在代码中解决问题

对于每个消息在代码文件,修改代码解决这个问题在消息。当你修改代码,消息指示器和突显出更新,以反映您所作的改变,即使你不保存文件。

例如,在47行lengthofline.m消息显示,分隔符不平衡。当你移动箭头键在每个分隔符,MATLAB似乎并不表明不匹配。然而,代码分析检测的分号数据{3}(,),并把它解释为结束。

lengthofline文件在编辑器中单击消息后指标。三个错误显示错误标记在指示器栏旁边。

解决问题的47个,改变数据{3}(,){3}数据(:)。单一改变地址的所有信息联机47岁并且下划线不再出现。因为更改删除唯一错误的文件,消息指示器的顶部禁止更改红色错误符号黄色的警告标志,这表明只有警告和潜在的改进仍然存在。

对于一些消息,MATLAB表明自动修复可以应用来解决这个问题。如果可以自动修复问题,代码片段和消息包含一个突出显示修复按钮。

lengthofline文件在编辑器中显示一条警告消息,修复按钮

例如,在27日行lengthofline.m,将鼠标在强调和突出显示的代码片段刺激。包括一个显示的消息修复按钮。

如果你知道如何解决这个问题,也许从之前的经验,单击修复按钮或按Alt + Enter。如果您不熟悉这个问题,右键单击突出显示的代码。第一项在上下文菜单中显示了建议的修复。选择项应用修复。

lengthofline文件在编辑器中显示上下文菜单。第一项菜单中建议的修复。

如果存在问题的多个实例,应用MATLAB可以提供建议解决问题的所有实例。应用解决问题的所有实例,右键单击并选择突出显示的代码修复(n)这个问题的实例。所有建议修复该选项不可用。

之后你修改代码来处理所有的消息或禁用指定消息,消息指示器就会变成绿色。看到示例文件,lengthofline2.m,解决所有消息。

lengthofline2.m代码

使用代码分析器分析文件应用程序

自从R2022b

您可以创建一个报告的代码分析器所有文件到一个文件夹中使用的消息代码分析器应用程序。

打开应用程序:

  • MATLAB将来发布:应用程序选项卡,在MATLAB点击应用程序图标:代码分析器的应用图标

  • MATLAB命令提示:输入codeAnalyzer

代码分析器的应用表现出整体的总结问题和代码卫生细节

识别并在文件中存储的问题codeIssues对象

自从R2022b

您可以使用codeIssues以编程方式在代码中发现和存储问题。的codeIssues对象存储问题发现的MATLAB代码分析器。发现的问题在一个或多个指定的文件或文件夹可以进行排序和过滤,以编程方式在命令行上或交互的代码分析器的应用。

例如,您可以生成一个codeIssues对象包含指定文件中的问题:

问题= codeIssues (“test.m”)
问题= codeIssues属性:日期:10月18 - - 2022 14:18:54发布:“R2023a文件:C: \ MyCode \测试。m”CodeAnalyzerConfiguration:“活跃”问题:[3×10表]SuppressedIssues:[0×11表]问题表预览位置严重Fixability描述CheckID LineStart LineEnd ColumnStart ColumnEnd FullFilename说__________ ____________________________________________________________________________________________累积_____ ___________ _________”_____________测试。m”信息手册》在每个循环迭代变量似乎改变大小。考虑preallocating速度。”AGROW 3 3 1 3 "C:\MyCode\test.m" "test.m" info auto "Add a semicolon after the statement to hide the output (in a script)." NOPTS 6 6 3 3 "C:\MyCode\test.m" "test.m" info auto "string('...') is not recommended. Use "..." instead." STRQUOT 8 8 1 13 "C:\MyCode\test.m"

使用代码分析文件问题的工具MATLAB在线

MATLAB在线™,您可以使用代码问题工具来查看代码错误和警告信息。代码问题工具显示编码MATLAB代码分析器发现的问题,因为它会自动检查您的代码。

打开代码问题的工具,去编辑器住编辑器选项卡,和分析部分中,点击代码问题。默认情况下,代码问题工具打开右边的桌面。要隐藏代码问题工具,单击代码问题侧边栏的图标。

代码问题工具显示0 lengthofline中发现的错误和13个警告。m文件。MATLAB在线桌面右栏图标显示的代码问题。

您可以改变消息显示在顶部的代码问题工具使用选项的工具:

  • 显示信息为当前文件或所有打开的文件——使用下拉列表的左上的代码问题工具来选择是否显示当前文件的错误和警告或所有打开的文件。例如,为所有打开的文件显示错误和警告,在下拉列表中,选择打开的文件

  • 显示或隐藏的错误和警告——使用错误按钮和警告按钮右上角的代码问题工具来显示或隐藏的错误和警告。例如,只显示错误,单击错误按钮并警告按钮掉了。

  • 过滤消息通过短信——使用下面的搜索框下拉列表过滤列表的消息文本。例如,包含这个词只显示消息变量,输入这个词变量在搜索领域。

调整代码分析器消息指标和消息

您可以指定哪些类型的编码问题突显出最适合你当前的发展阶段。例如,当第一个编码,你可能更愿意强调只有错误,因为警告可能会受到干扰。改变强调偏好,选项卡,环境部分中,点击首选项。选择MATLAB>代码分析器,然后选择一个突显出选择。

你也可以调整你看到消息在分析你的代码。代码分析不提供完美的每种情况的信息。有时候,你可能不想改变基于消息的代码。如果你不想改变代码,你不希望看到具体的指标和消息,你可以压制他们。例如,第一个消息在48行示例文件lengthofline.m终止语句用分号来抑制输出(功能)。添加一个分号的一份声明中抑制输出,是一种常见的做法。代码分析警告您行产生输出,但是没有终止分号。如果你想查看输出线48,不添加分号作为消息显示。

你可以抑制(关闭)指标在这些方面警告和错误消息:

  • 抑制在当前文件的一个实例的信息。

  • 抑制在当前文件的所有实例的信息。

  • 抑制在所有文件的所有实例的信息。

你不能抑制错误消息等语法错误。

抑制在当前文件的一个实例的信息

你可以抑制特定的实例代码分析器消息在当前文件。例如,抑制消息在48行示例文件lengthofline.m,右键单击第一个强调在48行并选择抑制“终止语句用分号…”>在这条线上

评论% #好< NOPRT >出现在年底,这指示MATLAB抑制终止语句用分号来抑制输出(功能)行代码分析器消息。下划线和马克在指示器栏消失的消息。

如果一行包含两个消息,你不想显示,右键单击每个单独强调并从上下文菜单中选择适当的条目。的% #好吧语法扩展。例如,抑制两线48的示例文件的消息lengthofline.m添加评论% #好< NBRAK NOPRT >结束的时候。

即使代码分析器偏好设置来启用这个消息,具体的实例没有出现,因为抑制消息% #好吧优先于偏好设置。如果你决定你想要显示的终止语句用分号来抑制输出(功能)代码分析器消息行,删除% #好< NOPRT >从线。

抑制在当前文件的所有实例的信息

你可以抑制特定的所有实例代码分析器消息在当前文件。例如,抑制所有实例的消息在48行示例文件lengthofline.m,右键单击第一个强调在48行并选择抑制“终止语句用分号…”>在这个文件中

评论% #好< * NOPRT >出现在最后的线,指示MATLAB压制的所有实例终止语句用分号来抑制输出(功能)在当前文件代码分析器的信息。强调,标志着在消息指示器栏对应于这个消息消失。

如果一行包含两个消息,你不想显示在当前文件,右键单击每个单独强调并从上下文菜单中选择适当的条目。的% #好吧语法扩展。例如,抑制两线48的示例文件的消息lengthofline.m添加评论% #好< * NBRAK, * NOPRT >

即使代码分析器偏好设置来启用这个消息,消息没有出现,因为% #好吧优先于偏好设置。如果你决定你想要显示的所有实例终止语句用分号来抑制输出(功能)代码分析器消息在当前文件,删除% #好< * NOPRT >从线。

抑制在所有文件的所有实例的信息

你可以禁用所有实例代码分析器消息的所有文件。例如,抑制所有实例的所有文件信息联机48示例文件lengthofline.m,右键单击第一个强调在48行并选择抑制“终止语句用分号…”>在所有文件。这个选项修改代码分析器的偏好。

如果你知道哪些消息你想压制,你可以禁用直接使用代码分析器的偏好:

  1. 选项卡,环境部分中,点击首选项

  2. 选择MATLAB>代码分析器

  3. 搜索的信息找到你想要压制的。

  4. 明确相关的复选框每个消息你想压制在所有文件。

  5. 点击好吧

保存和重用代码分析器消息设置

你可以设置选项来启用或禁用某些代码分析器的消息,然后将这些设置保存到一个文件中。当你想要使用一个设置文件与一个特定的文件,你选择它从代码分析器的偏好。设置文件仍然有效,直到你选择另一个设置文件。通常,您更改设置文件当你有一个子集的文件你想使用一个特定的设置文件。

将设置保存到一个文件中:

  1. 选项卡,环境部分中,点击首选项

  2. 选择MATLAB>代码分析器

  3. 启用或禁用特定消息或消息的类别。

  4. 点击操作按钮中,选择另存为,然后保存设置三种文件。

  5. 点击好吧

您可以重用这些设置为任何MATLAB文件,或提供给另一个用户的设置文件。使用保存的设置:

  1. 选项卡,环境部分中,点击首选项

  2. 选择MATLAB>代码分析器

  3. 打开活动设置列表并选择浏览

  4. 选择任何你的设置文件。

    你选择的设置为所有MATLAB文件一直有效,直到你选择另一组代码分析器设置。

启用自定义检查和配置现有的检查

自从R2023a

您可以配置现有的检查显示在MATLAB代码分析器和添加自定义编辑器的检查通过将一个文件命名codeAnalyzerConfiguration.json在一个资源文件夹。配置文件是有效的在包含资源文件夹的文件夹和子文件夹。

您可以修改现有的代码分析仪检查,包括检查是否启用了及其严重程度,信息文本,和参数检查是否有,如限制输入和输出参数的数量为一个函数。你也可以创建自定义检查触发使用特定功能时。配置代码分析仪检查的更多信息,请参阅配置代码分析器

验证您的codeAnalyzerConfiguration.json配置文件格式是否正确使用功能matlab.codeanalysis.validateConfiguration

理解代码包含隐含的信息

如果你收到包含抑制消息的代码,您可能想要审查的消息,而无需unsuppress第一个吃螃蟹的人。消息可能会处于抑制状态有下列原因:

  • 一个或多个% #好<问题>指示在一行代码,抒发指定的消息<问题>

  • 一个或多个% #好< *问题>指令在一个抒发消息指定的文件<问题>

  • 消息被清除代码分析器偏好窗格。

  • 消息默认是禁用的。

确定为什么消息受到抑制的电话codeIssues文件作为输入。

问题= codeIssues (“myFile.m”)

输出,问题将有一个属性,SuppressedIssues,包含一个表列出所有文件内的抑制问题。审查与每一期相关的信息来理解为什么它是抑制/

理解代码分析的局限性

代码分析是一个有价值的工具,但它有一些限制:

  • 代码分析有时未能生成代码分析器消息你期望他们的地方。

    通过设计,代码分析试图最小化错误消息返回的数量,即使这种行为使一些问题去未被发现。

  • 代码分析有时产生的消息并不适用于您的情况。

    单击细节为消息按钮显示额外的信息可以帮助您确定如果消息适用于您的情况。错误消息几乎都是问题。然而,许多警告建议看一些不同寻常的代码,但在你的情况可能是正确的。

    抑制一个警告消息如果你确定消息并不适用于您的情况。抑制消息如果你的原因是微妙的或模糊的,包括一个评论的基本原理。这样,那些阅读代码的人意识到这种情况。

    有关更多信息,请参见调整代码分析器消息指标和消息

区分函数名和变量名

代码分析不能总是区分函数名和变量名。下面的代码,如果启用了代码分析器的消息,代码分析返回的消息,代码分析仪不能确定xyz是一个变量或函数,并假设它是一个函数。无法做出决定,因为代码分析xyz没有明显的值分配给它。然而,代码可能会放置工作区中的值,代码分析不能检测。

函数y = foo (x)。y = xyz (x);结束

例如,在下面的代码中,xyz可以是一个函数或一个变量从MAT-file加载。代码分析无法测定。

函数y = foo (x)负载abc。垫y = xyz (x);结束
变量也可能是未被发现的,当你使用代码分析eval,evalc,evalin,或assignin功能。

如果代码分析错误的变量函数,做以下之一:

  • 初始化变量,这样代码分析并不把它当作一个函数。

  • 负载函数显式地指定变量名负载命令行。例如:

    函数y = foo (x)负载abc。垫xyz y = xyz (x);结束

区分结构和处理对象

代码分析不能总是区分结构和处理对象。在以下代码中,如果x是一个结构,你可能期望一个代码分析器消息,表明结构的代码没有使用更新后的值。如果x是一个处理对象,然而,这段代码可以是正确的。

函数foo (x) x。= 3;结束

代码分析不能确定x是一个结构或一个处理对象。减少的数量不正确的信息,代码分析返回前面的代码没有消息,即使它可能包含一个微妙的和严重的错误。

区分内置函数和重载函数

如果在一个类或一些内置函数重载道路,代码分析器消息可能适用于内置的函数,而不是调用重载函数。在这种情况下,抑制消息上看来或抑制整个文件。

抑制信息的信息,请参阅调整代码分析器消息指标和消息

确定变量的大小或形状

代码分析确定变量的类型的能力有限和矩阵的形状。代码分析可能产生适当的消息对于最常见的情况,如向量。然而,这些消息可能不适合不太常见的情况下,比如矩阵。

分析类定义与父类

代码分析器功能检查有限类定义与父类。例如,代码分析仪不能总是确定类是一个处理类,但它有时可以验证自定义属性中使用一个类是否继承自一个父类的属性。在分析类定义时,代码分析器试图使用信息从超类,但通常无法获得足够的信息来做出一定的决心。

分析类方法

大多数类方法必须包含至少一个参数是一个对象的类的方法。但这一观点并不总是第一个参数。时,代码分析可以确定一个参数是一个对象类的定义,并能做各种检查。例如,代码分析可以检查属性和方法名称存在,是否拼写正确。然而,当代码分析不能确定,一个对象是一个类的参数定义,那么它不能提供这些检查。

启用MATLAB编译器部署消息

你可以切换显示或隐藏MATLAB编译器部署消息当你工作文件通过改变代码分析器偏爱这个消息类别。你的选择可能取决于你是否正在被部署的文件。改变这种偏好也在编辑器中更改设置。同样,在编辑器中更改设置这种偏好的变化。但是,如果代码分析器的偏好是开放当你在编辑器中修改设置,更改没有反映在preferences窗口。无论你在编辑器中更改设置或Preferences窗口,改变适用于编辑器和代码分析报告。

要启用MATLAB编译器™部署的消息:

  1. 选项卡,环境部分中,点击首选项

  2. 选择MATLAB>代码分析器

  3. 单击搜索字段旁边的向下箭头,然后选择显示消息类别>MATLAB编译器(部署)消息

  4. 单击启用类别按钮的右边MATLAB编译器(部署)消息分类标题。

  5. 明确的个人信息,你不想显示为您的代码。

  6. 决定你是否想保存这些设置,所以你可以重用他们下次你文件部署工作。

的设置三种文件,该文件可以创建中描述保存和重用代码分析器消息设置,包括该设置的状态。

另请参阅

||

相关的话题

外部网站