@@ -120,6 +120,8 @@ public function process(PHP_CodeCoverage $coverage, $showColors = false)
120120 . $ colors ['lines ' ] . $ colors ['eol ' ] . ' Lines: ' . PHP_CodeCoverage_Util::percent ($ report ->getNumExecutedLines (), $ report ->getNumExecutableLines (), TRUE )
121121 . ' ( ' . $ report ->getNumExecutedLines () . '/ ' . $ report ->getNumExecutableLines () . ' ) ' . PHP_EOL . $ colors ['reset ' ] . $ colors ['eol ' ];
122122
123+ $ classCoverage = array ();
124+
123125 foreach ($ report as $ item ) {
124126 if (!$ item instanceof PHP_CodeCoverage_Report_Node_File) {
125127 continue ;
@@ -191,24 +193,57 @@ public function process(PHP_CodeCoverage $coverage, $showColors = false)
191193 $ namespace = '' ;
192194 }
193195
194- if ($ coveredClassStatements != 0 || $ this ->showUncoveredFiles || true ) {
195- $ output .= PHP_EOL . $ namespace . $ className
196- . PHP_EOL . ' Methods: ' . $ coveredMethods . '/ ' . count ($ class ['methods ' ])
197- . ' Lines: ' . $ classStatements . '/ ' . $ coveredClassStatements ;
196+ $ classCoverage [$ namespace . $ className ] = array (
197+ 'namespace ' => $ namespace ,
198+ 'className ' => $ className ,
199+ 'methodsCovered ' => $ coveredMethods ,
200+ 'methodCount ' => count ($ class ['methods ' ]),
201+ 'statementsCovered ' => $ coveredClassStatements ,
202+ 'statementCount ' => $ classStatements ,
203+ );
204+ }
205+ }
206+ ksort ($ classCoverage );
207+
208+ $ methodColor = '' ;
209+ $ linesColor = '' ;
210+ $ resetColor = '' ;
211+ foreach ($ classCoverage as $ fullQualifiedPath => $ classInfo ) {
212+ if ($ classInfo ['statementsCovered ' ] != 0 || $ this ->showUncoveredFiles || true ) {
213+ if ($ showColors ) {
214+ $ methodColor = $ this ->getCoverageColor ($ classInfo ['methodsCovered ' ], $ classInfo ['methodCount ' ]);
215+ $ linesColor = $ this ->getCoverageColor ($ classInfo ['statementsCovered ' ], $ classInfo ['statementsCovered ' ]);
216+ $ resetColor = $ colors ['reset ' ];
198217 }
199-
218+ $ output .= PHP_EOL . $ fullQualifiedPath . PHP_EOL
219+ . ' ' . $ methodColor . 'Methods: ' . $ this ->printCoverageCounts ($ classInfo ['methodsCovered ' ], $ classInfo ['methodCount ' ], 2 ) . $ resetColor . ' '
220+ . ' ' . $ linesColor . 'Lines: ' . $ this ->printCoverageCounts ($ classInfo ['statementsCovered ' ], $ classInfo ['statementCount ' ], 3 ) . $ resetColor
221+ ;
200222 }
201223 }
224+
202225 $ this ->outputStream ->write ($ output );
203226 return ;
204227
205228 }
206229
207230 protected function getCoverageColor ($ numberOfCoveredElements , $ totalNumberOfElements ) {
208231 if ($ totalNumberOfElements > 0 ) {
209- $ coverage = $ numberOfCoveredElements / $ totalNumberOfElements ;
232+ $ coverage = $ numberOfCoveredElements / $ totalNumberOfElements * 100 ;
233+ if ($ coverage > $ this ->highLowerBound ) {
234+ return $ this ->colors ['green ' ];
235+ } else if ($ coverage > $ this ->lowUpperBound ) {
236+ return $ this ->colors ['yellow ' ];
237+ }
210238 }
211239 return $ this ->colors ['red ' ];
212240 }
213241
242+ protected function printCoverageCounts ($ numberOfCoveredElements , $ totalNumberOfElements , $ presicion ) {
243+ $ format = '% ' . $ presicion . 's ' ;
244+ return PHP_CodeCoverage_Util::percent ($ numberOfCoveredElements , $ totalNumberOfElements , TRUE , TRUE )
245+ . ' ( ' . sprintf ($ format , $ numberOfCoveredElements ) . '/ ' . sprintf ($ format , $ totalNumberOfElements ) . ') ' ;
246+ }
247+
214248}
249+
0 commit comments