@@ -143,6 +143,89 @@ public function process(PHP_CodeCoverage $coverage, $target)
143143 );
144144 }
145145
146+ /**
147+ * Renders the Coverage Distribution Chart.
148+ *
149+ * @param array $classes
150+ */
151+ protected function classCoverageDistributionChart (array $ classes , $ target )
152+ {
153+ $ data = array (
154+ '0% ' => 0 ,
155+ '0-10% ' => 0 ,
156+ '10-20% ' => 0 ,
157+ '20-30% ' => 0 ,
158+ '30-40% ' => 0 ,
159+ '40-50% ' => 0 ,
160+ '50-60% ' => 0 ,
161+ '60-70% ' => 0 ,
162+ '70-80% ' => 0 ,
163+ '80-90% ' => 0 ,
164+ '90-100% ' => 0 ,
165+ '100% ' => 0
166+ );
167+
168+ foreach ($ classes as $ class ) {
169+ if ($ class ['coverage ' ] == 0 ) {
170+ $ data ['0% ' ]++;
171+ }
172+
173+ else if ($ class ['coverage ' ] == 100 ) {
174+ $ data ['100% ' ]++;
175+ }
176+
177+ else if ($ class ['coverage ' ] > 0 && $ class ['coverage ' ] <= 10 ) {
178+ $ data ['0-10% ' ]++;
179+ }
180+
181+ else if ($ class ['coverage ' ] > 10 && $ class ['coverage ' ] <= 20 ) {
182+ $ data ['10-20% ' ]++;
183+ }
184+
185+ else if ($ class ['coverage ' ] > 20 && $ class ['coverage ' ] <= 30 ) {
186+ $ data ['20-30% ' ]++;
187+ }
188+
189+ else if ($ class ['coverage ' ] > 30 && $ class ['coverage ' ] <= 40 ) {
190+ $ data ['30-40% ' ]++;
191+ }
192+
193+ else if ($ class ['coverage ' ] > 40 && $ class ['coverage ' ] <= 50 ) {
194+ $ data ['40-50% ' ]++;
195+ }
196+
197+ else if ($ class ['coverage ' ] > 50 && $ class ['coverage ' ] <= 60 ) {
198+ $ data ['50-60% ' ]++;
199+ }
200+
201+ else if ($ class ['coverage ' ] > 60 && $ class ['coverage ' ] <= 70 ) {
202+ $ data ['60-70% ' ]++;
203+ }
204+
205+ else if ($ class ['coverage ' ] > 70 && $ class ['coverage ' ] <= 80 ) {
206+ $ data ['70-80% ' ]++;
207+ }
208+
209+ else if ($ class ['coverage ' ] > 80 && $ class ['coverage ' ] <= 90 ) {
210+ $ data ['80-90% ' ]++;
211+ }
212+
213+ else if ($ class ['coverage ' ] > 90 ) {
214+ $ data ['90-100% ' ]++;
215+ }
216+ }
217+
218+ $ graph = new ezcGraphBarChart ;
219+ $ graph ->data ['data ' ] = new ezcGraphArrayDataSet ($ data );
220+ $ graph ->legend = FALSE ;
221+ $ graph ->xAxis ->label = 'Coverage ' ;
222+ $ graph ->yAxis ->label = '#Classes ' ;
223+
224+ $ graph ->render (
225+ 390 , 250 , $ target . '/ ' . 'class_coverage_distribution.svg '
226+ );
227+ }
228+
146229 /**
147230 * Returns the classes.
148231 *
0 commit comments