@@ -103,11 +103,6 @@ class PHP_CodeCoverage_Report_HTML_Node_File extends PHP_CodeCoverage_Report_HTM
103103 */
104104 protected $ classes = array ();
105105
106- /**
107- * @var integer
108- */
109- protected $ numClasses = 0 ;
110-
111106 /**
112107 * @var integer
113108 */
@@ -116,12 +111,12 @@ class PHP_CodeCoverage_Report_HTML_Node_File extends PHP_CodeCoverage_Report_HTM
116111 /**
117112 * @var integer
118113 */
119- protected $ numMethods = 0 ;
114+ protected $ numMethods = NULL ;
120115
121116 /**
122117 * @var integer
123118 */
124- protected $ numTestedMethods = 0 ;
119+ protected $ numTestedMethods = NULL ;
125120
126121 /**
127122 * @var string
@@ -208,7 +203,7 @@ public function getNumExecutedLines()
208203 */
209204 public function getNumClasses ()
210205 {
211- return $ this ->numClasses ;
206+ return count ( $ this ->classes ) ;
212207 }
213208
214209 /**
@@ -228,6 +223,18 @@ public function getNumTestedClasses()
228223 */
229224 public function getNumMethods ()
230225 {
226+ if ($ this ->numMethods === NULL ) {
227+ $ this ->numMethods = 0 ;
228+
229+ foreach ($ this ->classes as $ class ) {
230+ foreach ($ class ['methods ' ] as $ method ) {
231+ if ($ method ['executableLines ' ] > 0 ) {
232+ $ this ->numMethods ++;
233+ }
234+ }
235+ }
236+ }
237+
231238 return $ this ->numMethods ;
232239 }
233240
@@ -238,6 +245,19 @@ public function getNumMethods()
238245 */
239246 public function getNumTestedMethods ()
240247 {
248+ if ($ this ->numTestedMethods === NULL ) {
249+ $ this ->numTestedMethods = 0 ;
250+
251+ foreach ($ this ->classes as $ class ) {
252+ foreach ($ class ['methods ' ] as $ method ) {
253+ if ($ method ['executableLines ' ] > 0 &&
254+ $ method ['coverage ' ] == 100 ) {
255+ $ this ->numTestedMethods ++;
256+ }
257+ }
258+ }
259+ }
260+
241261 return $ this ->numTestedMethods ;
242262 }
243263
@@ -399,12 +419,16 @@ public function render($target, $title, $charset = 'UTF-8', $lowUpperBound = 35,
399419 $ testedClassesPercent = 0 ;
400420 }
401421
422+ $ numMethods = 0 ;
402423 $ numTestedMethods = 0 ;
403- $ numMethods = count ($ classData ['methods ' ]);
404424
405425 foreach ($ classData ['methods ' ] as $ method ) {
406- if ($ method ['executedLines ' ] == $ method ['executableLines ' ]) {
407- $ numTestedMethods ++;
426+ if ($ method ['executableLines ' ] > 0 ) {
427+ $ numMethods ++;
428+
429+ if ($ method ['executedLines ' ] == $ method ['executableLines ' ]) {
430+ $ numTestedMethods ++;
431+ }
408432 }
409433 }
410434
@@ -439,50 +463,51 @@ public function render($target, $title, $charset = 'UTF-8', $lowUpperBound = 35,
439463 );
440464
441465 foreach ($ classData ['methods ' ] as $ methodData ) {
442- if ($ methodData ['executedLines ' ] ==
443- $ methodData ['executableLines ' ]) {
444- $ numTestedMethods = 1 ;
445- $ testedMethodsPercent = 100 ;
446- } else {
447- $ numTestedMethods = 0 ;
448- $ testedMethodsPercent = 0 ;
449- }
466+ if ($ methodData ['executableLines ' ] > 0 ) {
467+ if ( $ methodData [ ' executedLines ' ] == $ methodData ['executableLines ' ]) {
468+ $ numTestedMethods = 1 ;
469+ $ testedMethodsPercent = 100 ;
470+ } else {
471+ $ numTestedMethods = 0 ;
472+ $ testedMethodsPercent = 0 ;
473+ }
450474
451- $ items .= $ this ->doRenderItem (
452- array (
453- 'name ' => sprintf (
454- ' <a href="#%d">%s</a> ' ,
455-
456- $ methodData ['startLine ' ],
457- htmlspecialchars ($ methodData ['signature ' ])
458- ),
459- 'numClasses ' => '' ,
460- 'numTestedClasses ' => '' ,
461- 'testedClassesPercent ' => '' ,
462- 'numMethods ' => 1 ,
463- 'numTestedMethods ' => $ numTestedMethods ,
464- 'testedMethodsPercent ' => sprintf (
465- '%01.2f ' , $ testedMethodsPercent
466- ),
467- 'numExecutableLines ' => $ methodData ['executableLines ' ],
468- 'numExecutedLines ' => $ methodData ['executedLines ' ],
469- 'executedLinesPercent ' => PHP_CodeCoverage_Util::percent (
470- $ methodData ['executedLines ' ],
471- $ methodData ['executableLines ' ],
472- TRUE
473- ),
474- 'crap ' => PHP_CodeCoverage_Util::crap (
475- $ methodData ['ccn ' ],
476- PHP_CodeCoverage_Util::percent (
477- $ methodData ['executedLines ' ],
478- $ methodData ['executableLines ' ]
479- )
480- )
481- ),
482- $ lowUpperBound ,
483- $ highLowerBound ,
484- 'method_item.html '
485- );
475+ $ items .= $ this ->doRenderItem (
476+ array (
477+ 'name ' => sprintf (
478+ ' <a href="#%d">%s</a> ' ,
479+
480+ $ methodData ['startLine ' ],
481+ htmlspecialchars ($ methodData ['signature ' ])
482+ ),
483+ 'numClasses ' => '' ,
484+ 'numTestedClasses ' => '' ,
485+ 'testedClassesPercent ' => '' ,
486+ 'numMethods ' => 1 ,
487+ 'numTestedMethods ' => $ numTestedMethods ,
488+ 'testedMethodsPercent ' => sprintf (
489+ '%01.2f ' , $ testedMethodsPercent
490+ ),
491+ 'numExecutableLines ' => $ methodData ['executableLines ' ],
492+ 'numExecutedLines ' => $ methodData ['executedLines ' ],
493+ 'executedLinesPercent ' => PHP_CodeCoverage_Util::percent (
494+ $ methodData ['executedLines ' ],
495+ $ methodData ['executableLines ' ],
496+ TRUE
497+ ),
498+ 'crap ' => PHP_CodeCoverage_Util::crap (
499+ $ methodData ['ccn ' ],
500+ PHP_CodeCoverage_Util::percent (
501+ $ methodData ['executedLines ' ],
502+ $ methodData ['executableLines ' ]
503+ )
504+ )
505+ ),
506+ $ lowUpperBound ,
507+ $ highLowerBound ,
508+ 'method_item.html '
509+ );
510+ }
486511 }
487512 }
488513
@@ -595,10 +620,6 @@ protected function calculateStatistics()
595620 $ method ['coverage ' ] = 100 ;
596621 }
597622
598- if ($ method ['coverage ' ] == 100 ) {
599- $ this ->numTestedMethods ++;
600- }
601-
602623 $ method ['crap ' ] = PHP_CodeCoverage_Util::crap (
603624 $ method ['ccn ' ], $ method ['coverage ' ]
604625 );
@@ -846,11 +867,7 @@ protected function processClasses()
846867
847868 $ this ->startLines [$ method ['startLine ' ]] = &$ this ->classes [$ className ]['methods ' ][$ methodName ];
848869 $ this ->endLines [$ method ['endLine ' ]] = &$ this ->classes [$ className ]['methods ' ][$ methodName ];
849-
850- $ this ->numMethods ++;
851870 }
852-
853- $ this ->numClasses ++;
854871 }
855872 }
856873
@@ -881,8 +898,6 @@ protected function processFunctions()
881898
882899 $ this ->startLines [$ function ['startLine ' ]] = &$ this ->classes ['* ' ]['methods ' ][$ functionName ];
883900 $ this ->endLines [$ function ['endLine ' ]] = &$ this ->classes ['* ' ]['methods ' ][$ functionName ];
884-
885- $ this ->numMethods ++;
886901 }
887902 }
888903}
0 commit comments