>Code coverage tells you which lines of script (or set of scripts) have been executed during a request. With this information you can for example find out how good your unit tests are.
##Related Settings
**xdebug.coverage_enable**
Type: _boolean, Default value: 1, Introduced in Xdebug >= 2.2_
If this setting is set to 0, then Xdebug will not set-up internal structures to allow code coverage. This speeds up Xdebug quite a bit, but of course, Code Coverage Analysis won't work.
Related Functions
**boolean xdebug_code_coverage_started()**
_Returns whether code coverage is active._
Returns whether code coverage has been started.
**Example:**
```
<?php
var_dump(xdebug_code_coverage_started());
xdebug_start_code_coverage();
var_dump(xdebug_code_coverage_started());
?>
```
**Returns:**
```
bool(false)
bool(true)
```
**array xdebug_get_code_coverage()**
_Returns code coverage information_
Returns a structure which contains information about which lines were executed in your script (including include files). The following example shows code coverage for one specific file:
**Example:**
```
<?php
xdebug_start_code_coverage();
function a($a) {
echo $a * 2.5;
}
function b($count) {
for ($i = 0; $i < $count; $i++) {
a($i + 0.17);
}
}
b(6);
b(10);
var_dump(xdebug_get_code_coverage());
?>
```
**Returns:**
```
array
'/home/httpd/html/test/xdebug/docs/xdebug_get_code_coverage.php' =>
array
5 => int 1
6 => int 1
7 => int 1
9 => int 1
10 => int 1
11 => int 1
12 => int 1
13 => int 1
15 => int 1
16 => int 1
18 => int 1
```
**void xdebug_start_code_coverage( [int options] )**
_Starts code coverage_
This function starts gathering the information for code coverage. The information that is collected consists of an two dimensional array with as primary index the executed filename and as secondary key the line number. The value in the elements represents whether the line has been executed or whether it has unreachable lines.
The returned values for each line are:
+ 1: this line was executed
+ -1: this line was not executed
+ -2: this line did not have executable code on it
Value -1 is only returned when the XDEBUG_CC_UNUSED is enabled and value -2 is only returned when both XDEBUG_CC_UNUSED and XDEBUG_CC_DEAD_CODE are enabled.
This function has two options, which act as a bitfield:
>XDEBUG_CC_UNUSED
>>Enables scanning of code to figure out which line has executable code. Without this option you the returned array will only have lines in them that were actually executed.
>XDEBUG_CC_DEAD_CODE
>>Enables branch analyzes to figure out whether code can be executed.
Enabling those options make code coverage drastically slower.
You can use the options as shown in the following example.
**Example:**
```
<?php
xdebug_start_code_coverage( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE );
?>
```
**void xdebug_stop_code_coverage( [int cleanup=true] )**
_Stops code coverage_
This function stops collecting information, the information in memory will be destroyed. If you pass "false" as argument, then the code coverage information will not be destroyed so that you can resume the gathering of information with the xdebug_start_code_coverage() function again.