主要内容

本页采用了机器翻译。点击此处可查看英文原文。

MATLAB 哈尔斯特德复杂度

自 R2024a 起

度量 ID

slcomp.MATLABHalsteadComplexity

描述

Halstead 复杂度度量衡量代码的大小和复杂度,可以帮助您监控代码质量、识别设计中的复杂区域并解决软件可维护性问题。

使用此度量来统计 MATLAB® 代码中的运算符和操作数,并计算代码量和难度。

支持的工件

您可以针对Units组件收集此度量。要控制仪表板将哪些对象分类为单元或组件,请参阅将模型按层级结构分类为组件或单元

计算详细信息

运算符和操作数

运算符指定影响变量内容的操作。操作数是运算符作用的基本逻辑单元。

度量:

  • 使用以下定义:

    •  MATLAB 运算符

    •  MATLAB 操作数

  • 忽略您注释掉的代码。

  • 仅分析不包含语法错误的 MATLAB 代码。

哈尔斯特德卷

该度量使用公式 V=(N1+N2)×log2(n1+n2) 计算 Halstead 体积 V。其中,N1 为运算符总数,N2 为操作数总数,n1 为唯一运算符数,n2 为唯一操作数数。

霍尔斯特德难度

该度量使用公式 D=n12×N2n2 计算 Halstead 难度 Dn1 是唯一运算符的数量,N2 是操作数的总数,n2 是唯一操作数的数量。

收集

要收集此度量的数据,请执行度量引擎并使用度量 ID slcomp.MATLABHalsteadComplexitygetMetrics

metric_engine = metric.Engine;
execute(metric_engine,"slcomp.MATLABHalsteadComplexity");
results = getMetrics(metric_engine,"slcomp.MATLABHalsteadComplexity")

结果

此度量返回工程中各单元和组件中每个 MATLAB 设计层的度量结果。MATLAB 设计层是一个工件,就像 MATLAB 函数或方法一样,您可以使用 MATLAB 代码来实现它。

对于每个 MATLAB 设计层,该度量返回一个 metric.Result 对象,其属性包括:

  • Value - 包含以下字段的结构体:

    • Difficulty - 代码可读性和编写难度的估计值

    • TotalOperands - MATLAB 操作数的数量

    • TotalOperators - MATLAB 运算符的数量

    • UniqueOperands - 唯一 MATLAB 操作数的数量

    • UniqueOperators - 唯一 MATLAB 运算符的数量

    • Volume - 设计层的大小

  • Scope - 包含设计层信息的结构体

有关该度量如何计算度量结果的信息,请参阅 计算详细信息

参考

[1] Halstead, Maurice H. Elements of Software Science. New York: North Holland, 1979.

[2] Stürmer, Ingo, Hartmut Pohlheim, and Thorsten Rogier. 2010. "Berechnung und Visualisierung der Modellkomplexität bei der modellbasierten Entwicklung sicherheitsrelevanter Software." In Automotive - Safety & Security, edited by B. Keller et al., 69-82. Aachen: Shaker Verlag.

[3] Yu, Sheng, and Shijie Zhou. “A Survey on Metric of Software Complexity.” In 2010 2nd IEEE International Conference on Information Management and Engineering, 352–56, 2010. https://doi.org/10.1109/ICIME.2010.5477581.

另请参阅

对象

函数

主题