class project_metricclass¶
A project granularity metric class.
The project granularity metric classes are managed by project_metricclass_manager .
- For a manually computed metric, your plug-in should:
- Create a new metric class with
project_metricclass_manager.create().- Compute values for the metric.
- As values are computed, report them to the hub with
project_metricclass.report().- If necessary, retract metric values with with
project_metricclass.retract().
- If you want CodeSonar to compute and report metric values automatically, use a metric function decorator.
You can retrieve metric values with project_metricclass.value(), and examine metric properties with project_metricclass.description(), project_metricclass.tag(), and project_metricclass.flags().
For more information about metrics in CodeSonar, see the Metrics manual page.
project_metricclass Members¶
| Constructors | none |
| Methods | __cmp__(), __eq__(), __ge__(), __gt__(), __hash__(), __le__(), __lt__(), __ne__(), __repr__(), __str__(), allowed(), always_discarded(), description(), flags(), report(), retract(), tag(), value() |
project_metricclass Details¶
-
class
cs.project_metricclass¶ A
projectgranularity metric class.-
__cmp__(other)¶ Comparison function for
project_metricclass, with respect to a stable overall ordering.Parameters: other ( project_metricclass) – Theproject_metricclassobject to compare against.Return type: int Returns: An integer N such that: - N<0 if
self<other - N==0 if
self==other - N>0 if
self>other
selfandotherwill only compare equal if they are the sameproject_metricclassobject.>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm2 = next(projmetrics) >>> pm2 <cs.metricclass TL> >>> pm1.__cmp__(pm2) -1
- N<0 if
-
__eq__(b)¶ Equality operator for
project_metricclass.Parameters: b ( project_metricclass) – Theproject_metricclassobject to compare against.Return type: bool Returns: Trueifselfequal tob,Falseotherwise.>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm2 = next(projmetrics) >>> pm2 <cs.metricclass TL> >>> pm1 == pm2 False
-
__ge__(b)¶ Greater-than-or-equal operator for
project_metricclass.Parameters: b ( project_metricclass) – Theproject_metricclassobject to compare against.Return type: bool Returns: Trueifself>=b,Falseotherwise.>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm2 = next(projmetrics) >>> pm2 <cs.metricclass TL> >>> pm1 >= pm2 False
-
__gt__(b)¶ Greater-than operator for
project_metricclass.Parameters: b ( project_metricclass) – Theproject_metricclassobject to compare against.Return type: bool Returns: Trueifself>b,Falseotherwise.>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm2 = next(projmetrics) >>> pm2 <cs.metricclass TL> >>> pm1 > pm2 False
-
__hash__()¶ Get a hash value for this
project_metricclass.Return type: int >>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> hash(pm1) 1823793984
-
__le__(b)¶ Less-than-or-equal operator for
project_metricclass.Parameters: b ( project_metricclass) – Theproject_metricclassobject to compare against.Return type: bool Returns: Trueifself<=b,Falseotherwise.>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm2 = next(projmetrics) >>> pm2 <cs.metricclass TL> >>> pm1 <= pm2 True
-
__lt__(b)¶ Less-than operator for
project_metricclass.Parameters: b ( project_metricclass) – Theproject_metricclassobject to compare against.Return type: bool Returns: Trueifself<b,Falseotherwise.>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm2 = next(projmetrics) >>> pm2 <cs.metricclass TL> >>> pm1 < pm2 True
-
__ne__(b)¶ Inequality operator for
project_metricclass.Parameters: b ( project_metricclass) – Theproject_metricclassobject to compare against.Return type: bool Returns: Falseifselfequal tob,Trueotherwise.>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm2 = next(projmetrics) >>> pm2 <cs.metricclass TL> >>> pm1 != pm2 True
-
__repr__()¶ Get a representation of a
project_metricclassobject that includes information useful for debugging.Return type: str Returns: The string representation. >>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> repr(pm1) '<cs.metricclass LCom>'
-
__str__()¶ Get a simple string representation of a
project_metricclassobject.Return type: str Returns: The string representation. >>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> str(pm1) 'LCom'
-
allowed()¶ Check: are METRIC_FILTER settings such that reported instances of this metric class will be submitted to the hub?
Return type: bool Returns: Trueif reported instances of the class will be submitted to the hub,Falseotherwise.If you have defined a custom metric class
Cin a plug-in, you can use a test based onC.allowed() to avoid unnecessary work in the case whereCis ignored.This is the complement of
project_metricclass.always_discarded().>>> v0 = project_metricclass_manager.metricclasses() >>> v1 = v0.__next__() >>> v1.allowed() True
-
always_discarded()¶ Check: are METRIC_FILTER settings such that instances of this metric class will always be ignored?
Return type: bool Returns: Trueif all instances of the class are being discarded,Falseotherwise.If you have defined a custom metric class
Cin a plug-in, you can use a test based onC.always_discarded() to avoid unnecessary work in the case whereCis ignored.This is the complement of
project_metricclass.allowed().>>> v0 = project_metricclass_manager.metricclasses() >>> v1 = v0.__next__() >>> v1.always_discarded() False
-
description()¶ Get the description (longer, human readable identifier) for a metric class (
project_metricclass).Return type: str Returns: The description, as a string. For example, CodeSonar ships with built-in
projectgranularity metric class Include file instances.- its tag is “InclF”
- its description is “Include file instances”
>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm1.description() 'Lines with Comments'
-
flags()¶ Get the
metricclass_flagsfor aproject_metricclass.Return type: metricclass_flagsReturns: The metricclass_flags.>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1.flags() <cs.metricclass_flags auto>
-
report(elt, val)¶ Report a metric value to the hub.
Parameters: - elt (
project) – The element that the metric value is associated with. - val (float) – The value to report.
Return type: NoneType
Raises: result.ERROR_INVALID_PHASE_FOR_OPERATIONif called during a traversal phase that is not consistent with themetricclass_flagsfor the project_metricclass. See themetricclass_flags.POST_ANALYSISdocumentation for more information.result.FILTERED_OUTif the project_metricclass is filtered out by a METRIC_FILTERdiscardrule.result.ERROR_INVALID_SLAVE_OPERATIONif called from a CodeSonar slave process.
You do not need to call this method if the metric class was created with a metric function decorator. In that case, CodeSonar will automatically report the values calculated using the decorated function.
>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm1.value(project.current()) 1.0 >>> pm1.report(project.current(), 2) [Mon May 17 12:42:42 2021 15268] Spawning CSPQP_MAIN cs_postq process. >>> pm1.value(project.current()) 2.0
- elt (
-
retract(elt)¶ Retract a metric value.
Parameters: elt (
project) – The element for which the value will be retracted.Return type: NoneType
Raises: result.ERROR_INVALID_PHASE_FOR_OPERATIONif called outside the drop traversal phase.result.ELEMENT_NOT_PRESENTif retraction did not occur for any other reason.result.ERROR_INVALID_SLAVE_OPERATIONif called from a CodeSonar slave process.
In typical usage,
project_metricclass.retract()is called during the drop traversal (that is, by a drop visitor).>>> v0 = project_metricclass_manager.metricclasses() >>> v1 = v0.next() >>> v2 = project.current() >>> v1.retract(v2)
-
tag()¶ Get the tag (short string identifier) for a metric class (
project_metricclass).Return type: str Returns: The short tag, as a string. The tag will usually be only a few characters long. Retrieve the metric class description with
project_metricclass.description()for a longer string that is generally more human-readable.For example, CodeSonar ships with built-in
projectgranularity metric class Include file instances.- its tag is “InclF”
- its description is “Include file instances”
>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm1.tag() 'LCom'
-
value(elt)¶ Get the value of a metric.
Parameters: elt (
project) – The element for which the metric value is required.Return type: float
Returns: The metric value for
elt.Raises: result.FILTERED_OUTif the project_metricclass is filtered out by a METRIC_FILTERdiscardrule.result.METRIC_NOT_COMPUTEDif a value for the metric has not been computed. This can happen if the project_metricclass was not created withmetricclass_flags.AUTOand a value has not been reported withproject_metricclass.report(), or if the project_metricclass was not created withmetricclass_flags.POST_ANALYSISbutproject_metricclass.value()is called during the serial depth-first traversal or parallel-depth first traversal.
>>> projmetrics = project_metricclass_manager.metricclasses() >>> pm1 = next(projmetrics) >>> pm1 <cs.metricclass LCom> >>> pm1.value(project.current()) 1.0 >>> pm1.report(project.current(), 2) [Mon May 17 12:42:42 2021 15268] Spawning CSPQP_MAIN cs_postq process. >>> pm1.value(project.current()) 2.0
-