文档

静态代码度量

关于静态代码度量

代码生成器执行静态分析生成的C或c++代码,并在静态代码度量报告部分的HTML代码生成报告。

你可以使用报告中的信息:

  • 找出文件的数量和每个文件中的代码行数。

  • 估计每个函数的代码行数和堆栈使用情况。

  • 比较每次更改模型或MATLAB时生成的文件、函数、变量和代码行数的差异®算法。

  • 根据全局变量的大小加上估计的堆栈大小,确定目标平台和堆栈的RAM分配。

  • 确定可能的性能慢点,例如最大的全局变量或在堆栈使用方面开销最大的调用路径。

  • 查看函数的圈复杂度,它计算通过函数的线性无关路径的数量。

  • 查看函数调用树。确定最长的调用路径,以估计最坏情况下的执行时间。

  • 查看所选代码替换库提供的目标函数如何在生成的代码中使用。

有关示例,请参见

静态代码度量分析

生成的代码的静态分析只在源代码上执行,而不执行程序。静态代码度量分析的结果包含在静态代码度量部分的HTML代码生成报告。如果从MATLAB代码生成MEX函数,则该报告不可用。

生成的源代码文件的静态分析:

  • 使用指定的C数据类型。对于仿真金宝app软件®模型中指定这些数据类型硬件实现>生产硬件窗格中的“配置参数”对话框。对于从MATLAB代码生成代码,您可以在硬件的标签。MATLAB编码器™“项目设置”对话框或使用代码生成配置对象。实际的目标代码度量可能因特定于目标的编译器和平台设置而有所不同。

  • 仅在指定时包含自定义代码。控件上指金宝app定自定义代码代码生成>自定义代码窗格中的模型配置。对于从MATLAB代码生成代码,您可以在调试的标签。MATLAB编码器“项目设置”对话框或使用代码生成配置对象。如果生成的代码包含标准C运行时库中不包含的特定于平台的文件,则生成错误报告。

  • 对于Si金宝appmulink模型,包括从引用模型生成的代码。

  • 对结构的所有成员使用1字节对齐,以估计全局和局部数据结构的大小。结构的大小是通过将其所有字段的大小相加来计算的。这个估计代表了结构的最小可能尺寸。

  • 将函数的自堆栈大小计算为函数内本地数据的大小,不包括输入参数。函数的累积堆栈大小是自身堆栈大小加上其调用函数的累积堆栈大小的最大值。例如,如果所调用函数的累积堆栈大小表示为accum_size1…accum_sizeN,则函数的累积堆栈大小为

    accumulated_stack_size = self_stack_size + max(accum_size1,…,accum_size)

  • 在估计函数的堆栈大小时,静态分析在递归调用的第一个实例时停止。的函数信息表指示在函数调用路径中何时发生递归。代码生成仅为statflow事件广播和图形化函数生成递归代码(如果将其编写为递归函数)。

  • 计算函数的圈复杂度为决策数加1:

    CC =决策数量+ 1
    以下构造添加了一个decision:

    • If语句

    • else if语句

    • Switch语句(每个语句1个决策情况下分支机构)

    • 循环语句:While, For, Do-while

    请注意

    上述结构中的布尔运算符不添加额外的决策。

  • 不包括ert_main.c,因为您可以选择提供您自己的c

查看生成代码中的静态代码度量和定义

当您在代码生成报告中查看代码时,要访问代码度量和定义,您可以使用以下工具:

  • 代码生成>报告窗格,如果选择静态代码度量复选框时,您可以将光标悬停在代码窗口中的全局变量和函数上,以查看代码度量信息。

  • 在代码窗口中,单击链接的变量或函数,将显示代码检查窗口。该窗口提供指向变量或函数定义的链接。在代码生成>报告窗格,如果您选择了静态代码度量复选框,还可以查看变量或函数的代码度量信息。

这个话题有用吗?