文档

checkcode

检查MATLAB为可能的问题编写代码文件

语法

checkcode(文件名)
checkcode (filenameN filename1…)
checkcode (___、option1 optionN……)
信息= checkcode (___“结构”)
味精= checkcode (___, '字符串')
___= checkcode(___

描述

例子

checkcode (文件名显示信息文件名报告潜在的问题和代码改进的机会。这些消息有时称为代码分析器消息。消息中的行号是一个超链接,您可以单击它直接到编辑器中的该行。确切的文本checkcodeMessages在不同版本之间可能会有一些更改。

checkcode (文件名1、……文件名N)显示每个指定的消息文件名

例子

checkcode (___选项1、……选项N)根据指定的选项标志修改返回的消息。例如,指定“id”请求与每条消息一起返回的消息ID。您可以使用前面语法中的任何输入参数指定选项。

例子

信息= checkcode (___“结构”)返回信息作为n——- - - - - -1结构数组,n是找到的消息的数量。

味精= checkcode (___, '字符串')以字符向量的形式返回信息。

如果您省略“结构”“字符串”参数并指定输出参数,则默认行为为“结构”

___filepaths) = checkcode (___同样的回报filepaths,文件名的绝对路径。您可以指定filepaths用的“结构”“字符串”选项。

例子

全部折叠

运行checkcode在示例文件中lengthofline.m.的代码分析器消息lengthofline.m在命令窗口中。

checkcode (“lengthofline”
l21 (c1 -9):赋给变量nothandle的值可能没有使用。L 22 (C 12-15): NUMEL(x)通常比PROD(SIZE(x))快。l23 (C 5-11):变量“notline”似乎在每次循环迭代中改变大小。考虑预先分配速度。L 23 (C 44-49):使用STRCMPI(str1,str2)代替在调用STRCMP时使用UPPER/LOWER。l27 (c12 -15): NUMEL(x)通常比PROD(SIZE(x))快。l33 (c13 -16):变量“data”在每次循环迭代中都改变大小。考虑预先分配速度。l33 (c24 -31):使用动态字段名与结构代替GETFIELD。L 37 (C 29):在(标量)条件语句中使用||代替|作为OR运算符。 L 38 (C 47): Use || instead of | as the OR operator in (scalar) conditional statements. L 39 (C 47): Use || instead of | as the OR operator in (scalar) conditional statements. L 42 (C 13-15): The variable 'dim' appears to change size on every loop iteration. Consider preallocating for speed. L 44 (C 13-15): The variable 'dim' appears to change size on every loop iteration. Consider preallocating for speed. L 47 (C 52): Invalid syntax at ';'. Possibly, a ')' is missing. L 47 (C 53): Invalid syntax at ')'. Possibly, a ']' is missing. L 47 (C 54): Parse error at ']': usage might be invalid MATLAB syntax. L 48 (C 17): Terminate statement with semicolon to suppress output (in functions). L 48 (C 23): Use of brackets [] is unnecessary. Use parentheses to group, if needed.

运行checkcode在示例文件中lengthofline.m.包括消息id并将结果存储在结构中。

信息= checkcode (“lengthofline”“id”
信息=带有字段的17x1结构数组:Id消息修复行列

查看第一条消息的值

信息(1)
ans =结构体字段:id: 'NASGU'消息:'赋给变量'nothandle'的值可能未使用。' fix: 0行:21列:[1 9]

运行checkcode在示例文件中lengthofline.m使用“本体”选择。MATLAB®显示文件的麦凯布复杂度,然后是代码分析器的消息lengthofline.m

checkcode (“lengthofline”“本体”
L 1 (c23 -34):“棱线”的麦凯布复杂度是12。l21 (c1 -9):赋给变量nothandle的值可能没有使用。L 22 (C 12-15): NUMEL(x)通常比PROD(SIZE(x))快。l23 (C 5-11):变量“notline”似乎在每次循环迭代中改变大小。考虑预先分配速度。L 23 (C 44-49):使用STRCMPI(str1,str2)代替在调用STRCMP时使用UPPER/LOWER。l27 (c12 -15): NUMEL(x)通常比PROD(SIZE(x))快。l33 (c13 -16):变量“data”在每次循环迭代中都改变大小。考虑预先分配速度。l33 (c24 -31):使用动态字段名与结构代替GETFIELD。 L 37 (C 29): Use || instead of | as the OR operator in (scalar) conditional statements. L 38 (C 47): Use || instead of | as the OR operator in (scalar) conditional statements. L 39 (C 47): Use || instead of | as the OR operator in (scalar) conditional statements. L 42 (C 13-15): The variable 'dim' appears to change size on every loop iteration. Consider preallocating for speed. L 44 (C 13-15): The variable 'dim' appears to change size on every loop iteration. Consider preallocating for speed. L 47 (C 52): Invalid syntax at ';'. Possibly, a ')' is missing. L 47 (C 53): Invalid syntax at ')'. Possibly, a ']' is missing. L 47 (C 54): Parse error at ']': usage might be invalid MATLAB syntax. L 48 (C 17): Terminate statement with semicolon to suppress output (in functions). L 48 (C 23): Use of brackets [] is unnecessary. Use parentheses to group, if needed.

通过创建和指定设置文件来抑制特定的消息。例如,文件lengthofline.m包括几行使用|而不是||作为操作符。默认情况下,checkcode这些线。

checkcode (“lengthofline”
l21 (c1 -9):赋给变量nothandle的值可能没有使用。L 22 (C 12-15): NUMEL(x)通常比PROD(SIZE(x))快。l23 (C 5-11):变量“notline”似乎在每次循环迭代中改变大小。考虑预先分配速度。L 23 (C 44-49):使用STRCMPI(str1,str2)代替在调用STRCMP时使用UPPER/LOWER。l27 (c12 -15): NUMEL(x)通常比PROD(SIZE(x))快。l33 (c13 -16):变量“data”在每次循环迭代中都改变大小。考虑预先分配速度。l33 (c24 -31):使用动态字段名与结构代替GETFIELD。L 37 (C 29):在(标量)条件语句中使用||代替|作为OR运算符。 L 38 (C 47): Use || instead of | as the OR operator in (scalar) conditional statements. L 39 (C 47): Use || instead of | as the OR operator in (scalar) conditional statements. L 42 (C 13-15): The variable 'dim' appears to change size on every loop iteration. Consider preallocating for speed. L 44 (C 13-15): The variable 'dim' appears to change size on every loop iteration. Consider preallocating for speed. L 47 (C 52): Invalid syntax at ';'. Possibly, a ')' is missing. L 47 (C 53): Invalid syntax at ')'. Possibly, a ']' is missing. L 47 (C 54): Parse error at ']': usage might be invalid MATLAB syntax. L 48 (C 17): Terminate statement with semicolon to suppress output (in functions). L 48 (C 23): Use of brackets [] is unnecessary. Use parentheses to group, if needed.

创建一个设置文件,该设置文件禁止标记使用|作为操作符。

  1. 首页选项卡,环境部分,单击首选项按钮。

  2. 选择代码分析器在左窗格中。

  3. 默认设置,在美学和可读性Section,清除信息在(标量)条件语句中使用而不是|作为OR操作符

  4. 输入mysettings.txt作为文件名,并将其保存到当前文件夹。

  5. 按下取消按钮切换到首选项面板,而不更改活动设置。

运行checkcode在示例文件上使用自定义设置文件mysettings.txt.的消息在(标量)条件语句中使用而不是|作为OR操作符被抑制,并且在消息列表中不再可见。

checkcode (“lengthofline”“配置= mysettings.txt”
l21 (c1 -9):赋给变量nothandle的值可能没有使用。L 22 (C 12-15): NUMEL(x)通常比PROD(SIZE(x))快。l23 (C 5-11):变量“notline”似乎在每次循环迭代中改变大小。考虑预先分配速度。L 23 (C 44-49):使用STRCMPI(str1,str2)代替在调用STRCMP时使用UPPER/LOWER。l27 (c12 -15): NUMEL(x)通常比PROD(SIZE(x))快。l33 (c13 -16):变量“data”在每次循环迭代中都改变大小。考虑预先分配速度。l33 (c24 -31):使用动态字段名与结构代替GETFIELD。l42 (c13 -15):变量“dim”在每次循环迭代中都改变大小。 Consider preallocating for speed. L 44 (C 13-15): The variable 'dim' appears to change size on every loop iteration. Consider preallocating for speed. L 47 (C 52): Invalid syntax at ';'. Possibly, a ')' is missing. L 47 (C 53): Invalid syntax at ')'. Possibly, a ']' is missing. L 47 (C 54): Parse error at ']': usage might be invalid MATLAB syntax. L 48 (C 17): Terminate statement with semicolon to suppress output (in functions). L 48 (C 23): Use of brackets [] is unnecessary. Use parentheses to group, if needed.

输入参数

全部折叠

文件名,指定为字符向量或字符向量的单元格数组。文件名可以包含部分路径,但必须位于搜索路径中的文件夹或当前文件夹中。

如果文件名是一个单元格数组,MATLAB®显示每个文件的信息。

请注意

不能组合文件名的单元格数组和字符数组。例如,你不能有{“lengthofline”,“车”},“collatz”作为输入。

例子:“lengthofline”

例子:{“lengthofline”,“车”}

显示选项,指定为这些值之一。选项可以以任何顺序出现。

选项 描述
“id” 请求消息ID,其中ID是一个字符向量。返回到结构时,输出也具有id字段,它是与消息关联的ID。
“-fullpath” 假设输入文件名是绝对路径,那么checkcode不试图定位它们。
“-notok”

运行checkcode对于所有的行文件名,即使是那些以。结尾的行checkcode抑制指令,% #好吧

的信息% #好吧以及从程序内部抑制消息,见调整代码分析器消息指标和消息

“本体” 显示文件中每个函数的McCabe复杂度(也称为圈复杂度)。一般来说,较低的复杂度值表示程序更容易理解和修改。有证据表明,具有较高复杂性值的程序更有可能包含错误。通常,您可以通过将一个函数划分为更小、更简单的函数来降低它的复杂性。有些人主张拆分复杂度值超过10的程序。

' config =settingsfile

“配置=工厂”

使用指定的设置文件覆盖默认的活动设置文件。如果指定的文件不在当前文件夹中,请提供文件的完整路径。

有关创建设置文件的信息,请参见保存和重用代码分析器消息设置如果指定的文件无效,checkcode返回一条消息,指示它无法打开或读取指定的文件。在这种情况下,checkcode使用出厂默认设置。

若要忽略所有设置文件并使用出厂默认首选项设置,请指定“配置=工厂”

输出参数

全部折叠

消息信息,返回为n——- - - - - -1结构数组,n返回的消息的数量checkcode命令。如果指定多个文件名作为输入,或者指定单元格数组作为输入,信息包含结构的单元格数组。

描述

消息

描述代码分析捕获的可疑结构的消息。

行号向量,指示消息应用到文件的哪些行。

列号(列区段)的两列数组,指示消息应用于文件的哪些列。数组的第一列指定编辑器中消息开始的列。数组的第二列指定编辑器中消息结束的列。在双列数组中,消息的每一个出现都有一行。

消息信息,作为字符向量返回。如果指定多个文件名作为输入,或者指定单元格数组作为输入,味精包含一个字符向量,其中每个文件的信息由10个等号字符、一个空格、文件名、一个空格和10个等号字符分隔。

例子:========== C: \ MyMatlabFiles \车。米 ==========

文件的绝对路径,指定为字符向量的单元格数组。MATLAB列出了filepaths以与指定的输入文件相同的顺序。

提示

若要强制代码分析器忽略一行代码,请使用% #好吧在队伍的最后。您可以在标记之后添加注释。

unsuppressed1 = 10%这一行会被捕获suppressed2 = 20% #ok这一行不会被捕获suppressed3 = 30% #ok这一行不会被捕获

介绍了R2011b

这个话题有帮助吗?