Simulink Halstead Difficulty Distribution
R2026bMetric ID
modeldesign.SimulinkMaintainability[slcomp.HalsteadDifficultyDistribution]
Description
This metric returns a histogram showing how many Simulink® design layers in each unit fall into each Halstead difficulty range. Halstead difficulty measures how error-prone a design is based on the number of distinct block types and signal connections. Higher values indicate designs that are more difficult to understand and maintain. Use this metric to identify units where Simulink design layers may benefit from refactoring.
Supported Artifacts
This metric collects metric results for Units in the project. To control what the dashboard classifies as a unit, see Categorize Models in Hierarchy as Components or Units.
Computation Details
Operators and Operands
An operator specifies an action that influences the content of a variable. An operand is the basic logical unit that the operator acts on.
The metric:
Uses the following definitions:
Ignores blocks that you comment out.
Halstead Difficulty Formula
The metric calculates the Halstead difficulty,
D, using the equation . n1 is the number of unique operators,
N2 is the total number of operands, and n2 is the
number of unique operands.
Collection
To collect data for this metric, execute the metric engine with the metric ID.
metric_engine = metric.Engine;
results = execute(metric_engine,"modeldesign.SimulinkMaintainability[slcomp.HalsteadDifficultyDistribution]")View the metric result values for a specific unit.
results(1).Value results(1).ScopeAlias
You can also collect all Simulink maintainability metrics at once by using the group ID.
results = execute(metric_engine,"modeldesign.SimulinkMaintainability[]")MetricID property of each result to identify which metric the result
belongs to.Results
The metric returns an array of objects, one for each unit in the project.
Use the metric.ResultValue property of the metric result object to view the metric
result values. Use the ScopeId and ScopeAlias
properties to identify which unit the result belongs to.
The ScopeAlias property returns the name of the unit.
The Value property returns an array of structures representing a
histogram. Each structure has these fields:
BinEdge— The Halstead difficulty range for the bin, such as'[0,5)'or'≥50'BinCount— The number of Simulink design layers in the unit whose Halstead difficulty falls within this range