@@ -60,13 +60,23 @@ class File extends AbstractNode
6060 /**
6161 * @var int
6262 */
63- private $ numTestedTraits = 0 ;
63+ private $ numClasses = null ;
6464
6565 /**
6666 * @var int
6767 */
6868 private $ numTestedClasses = 0 ;
6969
70+ /**
71+ * @var int
72+ */
73+ private $ numTraits = null ;
74+
75+ /**
76+ * @var int
77+ */
78+ private $ numTestedTraits = 0 ;
79+
7080 /**
7181 * @var int
7282 */
@@ -223,7 +233,21 @@ public function getNumExecutedLines()
223233 */
224234 public function getNumClasses ()
225235 {
226- return count ($ this ->classes );
236+ if ($ this ->numClasses === null ) {
237+ $ this ->numClasses = 0 ;
238+
239+ foreach ($ this ->classes as $ class ) {
240+ foreach ($ class ['methods ' ] as $ method ) {
241+ if ($ method ['executableLines ' ] > 0 ) {
242+ $ this ->numClasses ++;
243+
244+ continue 2 ;
245+ }
246+ }
247+ }
248+ }
249+
250+ return $ this ->numClasses ;
227251 }
228252
229253 /**
@@ -243,7 +267,21 @@ public function getNumTestedClasses()
243267 */
244268 public function getNumTraits ()
245269 {
246- return count ($ this ->traits );
270+ if ($ this ->numTraits === null ) {
271+ $ this ->numTraits = 0 ;
272+
273+ foreach ($ this ->traits as $ trait ) {
274+ foreach ($ trait ['methods ' ] as $ method ) {
275+ if ($ method ['executableLines ' ] > 0 ) {
276+ $ this ->numTraits ++;
277+
278+ continue 2 ;
279+ }
280+ }
281+ }
282+ }
283+
284+ return $ this ->numTraits ;
247285 }
248286
249287 /**
@@ -484,14 +522,14 @@ protected function calculateStatistics()
484522 if ($ trait ['executableLines ' ] > 0 ) {
485523 $ trait ['coverage ' ] = ($ trait ['executedLines ' ] /
486524 $ trait ['executableLines ' ]) * 100 ;
525+
526+ if ($ trait ['coverage ' ] == 100 ) {
527+ $ this ->numTestedClasses ++;
528+ }
487529 } else {
488530 $ trait ['coverage ' ] = 100 ;
489531 }
490532
491- if ($ trait ['coverage ' ] == 100 ) {
492- $ this ->numTestedClasses ++;
493- }
494-
495533 $ trait ['crap ' ] = $ this ->crap (
496534 $ trait ['ccn ' ],
497535 $ trait ['coverage ' ]
@@ -518,14 +556,14 @@ protected function calculateStatistics()
518556 if ($ class ['executableLines ' ] > 0 ) {
519557 $ class ['coverage ' ] = ($ class ['executedLines ' ] /
520558 $ class ['executableLines ' ]) * 100 ;
559+
560+ if ($ class ['coverage ' ] == 100 ) {
561+ $ this ->numTestedClasses ++;
562+ }
521563 } else {
522564 $ class ['coverage ' ] = 100 ;
523565 }
524566
525- if ($ class ['coverage ' ] == 100 ) {
526- $ this ->numTestedClasses ++;
527- }
528-
529567 $ class ['crap ' ] = $ this ->crap (
530568 $ class ['ccn ' ],
531569 $ class ['coverage ' ]
0 commit comments