Skip to content

Commit 3b5702f

Browse files
Fix metrics for empty methods
1 parent b4179ad commit 3b5702f

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

src/Lib/IO/MetricsFactory.php

+5
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ public static function getMethodMetrics(DOMXPath $xpath, DOMNode $fileNode): arr
105105

106106
$metrics = [];
107107
foreach ($methodNodes as $methodNode) {
108+
$complexity = (int)XMLUtil::getAttribute($methodNode, 'complexity');
109+
if ($complexity === 0) {
110+
continue;
111+
}
108112
$methodName = XMLUtil::getAttribute($methodNode, 'name') ?? '';
109113
$lineNumber = (int)XMLUtil::getAttribute($methodNode, 'num');
110114
$count = (int)XMLUtil::getAttribute($methodNode, 'count');
@@ -117,6 +121,7 @@ public static function getMethodMetrics(DOMXPath $xpath, DOMNode $fileNode): arr
117121

118122
/**
119123
* @param DOMNodeList<DOMNode>|false $statementNodes
124+
*
120125
* @return int[]
121126
*/
122127
private static function getCoveredStatements(DOMNodeList|false $statementNodes): array

tests/Unit/Lib/IO/MetricsFactoryTest.php

+9-8
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ public function testGetMethodMetrics(): void
7474
<line num="33" type="stmt" count="1"/>
7575
<line num="34" type="stmt" count="0"/>
7676
<line num="35" type="stmt" count="0"/>
77+
<line num="45" type="method" name="isEmpty" visibility="public" complexity="0" crap="0" count="0"/>
7778
</file>
7879
</project>
7980
</coverage>';
@@ -112,15 +113,15 @@ public static function multiFilesDataProvider(): array
112113
return [
113114
'second coverage is used' => [
114115
'<file name="utTestFile.php">
115-
<line num="1" type="method" name="methodName" count="2"/>
116+
<line num="1" type="method" name="methodName" complexity="1" count="2"/>
116117
<line num="2" type="stmt" count="2"/>
117118
<line num="3" type="stmt" count="0"/>
118119
<line num="4" type="stmt" count="0"/>
119120
<line num="5" type="stmt" count="0"/>
120121
<metrics loc="11" ncloc="11" statements="4" coveredstatements="1"/>
121122
</file>',
122123
'<file name="utTestFile.php">
123-
<line num="1" type="method" name="methodName" count="1"/>
124+
<line num="1" type="method" name="methodName" complexity="1" count="1"/>
124125
<line num="2" type="stmt" count="1"/>
125126
<line num="3" type="stmt" count="0"/>
126127
<line num="4" type="stmt" count="1"/>
@@ -133,15 +134,15 @@ public static function multiFilesDataProvider(): array
133134
],
134135
'second count is higher' => [
135136
'<file name="utTestFile.php">
136-
<line num="1" type="method" name="methodName" count="1"/>
137+
<line num="1" type="method" name="methodName" complexity="1" count="1"/>
137138
<line num="2" type="stmt" count="1"/>
138139
<line num="3" type="stmt" count="1"/>
139140
<line num="4" type="stmt" count="1"/>
140141
<line num="5" type="stmt" count="1"/>
141142
<metrics loc="11" ncloc="11" statements="4" coveredstatements="1"/>
142143
</file>',
143144
'<file name="utTestFile.php">
144-
<line num="1" type="method" name="methodName" count="2"/>
145+
<line num="1" type="method" name="methodName" complexity="1" count="2"/>
145146
<line num="2" type="stmt" count="1"/>
146147
<line num="3" type="stmt" count="0"/>
147148
<line num="4" type="stmt" count="1"/>
@@ -164,12 +165,12 @@ public static function multiFilesDataProvider(): array
164165
'first 100 %' => [
165166
'<file name="utTestFile.php">
166167
<metrics loc="11" ncloc="11" statements="1" coveredstatements="1"/>
167-
<line num="1" type="method" name="methodName" count="1"/>
168+
<line num="1" type="method" name="methodName" complexity="1" count="1"/>
168169
<line num="2" type="stmt" count="1"/>
169170
</file>',
170171
' <file name="utTestFile.php">
171172
<metrics loc="11" ncloc="11" statements="0" coveredstatements="0"/>
172-
<line num="1" type="method" name="methodName" count="1"/>
173+
<line num="1" type="method" name="methodName" complexity="1" count="1"/>
173174
</file>',
174175
1,
175176
100.0,
@@ -178,13 +179,13 @@ public static function multiFilesDataProvider(): array
178179
'second 100%' => [
179180
'<file name="utTestFile.php">
180181
<metrics loc="11" ncloc="11" statements="2" coveredstatements="0"/>
181-
<line num="1" type="method" name="methodName" count="1"/>
182+
<line num="1" type="method" name="methodName" complexity="1" count="1"/>
182183
<line num="2" type="stmt" count="0"/>
183184
<line num="3" type="stmt" count="0"/>
184185
</file>',
185186
'<file name="utTestFile.php">
186187
<metrics loc="11" ncloc="11" statements="2" coveredstatements="2"/>
187-
<line num="1" type="method" name="methodName" count="1"/>
188+
<line num="1" type="method" name="methodName" complexity="1" count="1"/>
188189
<line num="2" type="stmt" count="1"/>
189190
<line num="3" type="stmt" count="1"/>
190191
</file>',

0 commit comments

Comments
 (0)