View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0001830 | Xdebug | Code Coverage | public | 2020-08-10 19:37 | 2021-04-08 09:52 |
Reporter | Neunerlei | Assigned To | derick | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | won't fix | ||
Product Version | 2.9.5 | ||||
Target Version | 3.0dev | ||||
Summary | 0001830: "Use" Trait Statement marked as "executable" code | ||||
Description | Hello there, as described here: https://github.com/sebastianbergmann/php-code-coverage/issues/790 it seems to be the case, that xdebug reports lines with "use" statements, to include class traits, as executable, The issue only appears on PHP 7.3 and not PHP 7.4 (I switched to 7.4 and it works there) I hope this helps. | ||||
Tags | No tags attached. | ||||
Attached Files | |||||
Operating System | Linux | ||||
PHP Version | 7.3.10-7.3.14 | ||||
|
Hi! I'm going to need a short reproducible case. In this, please only include the code that has and uses the trait, and causes this issue with code overage. I don't need or want any PHP Unit test case, composer library, etc. cheers, |
|
I'm not an author of the code-coverage library. Therefore I can't give you the details. A.php: namespace Neunerlei\Arrays; class A ATrait.php namespace Neunerlei\Arrays; trait ATrait } In that case A.php:8 is marked as "not executed" I resolved the issue for me, by migrating to PHP 7.4 where everything works as expected. Martin |
|
I think I see the problem. Will have a good look tomorrow. Thanks! |
|
Sorry, that that "tomorrow" became 6 months later. I have had a long look at this, and I think I have come to the conclusion that I do not want to address this right now. Code coverage analyses which code can be executed when code coverage is active, and a new scope (script, method, or function) is seen for the first time. When code then runs, it modifies this information with whether code has been executed when specific lines have been hit. When code coverage was implemented, it was never meant to be stopped and started between every test, but rather, collect information for the whole execution as all the tests in one go. This means that it is now impossible to reset the internal collected information to the analysed stated (which line is executable etc). The only way would be to reanalyse everything. And that'd be so slow that nobody would ever want to do code coverage again. The only way to solve this is to split the "analyse what code can do what" and "collect which lines/etc have been hit" into two separate internal data stores, and merge that information when returning it with xdebug_get_code_coverage(). That's going to be a major undertaking (read: months), and I don't think I will have the time for that, considering all the other issues I want to fix, and features to add. Considering that you no longer have this problem with PHP 7.4, and that PHP 7.3 and older are no longer supported, I feel OK with closing this issue. |
Date Modified | Username | Field | Change |
---|---|---|---|
2020-08-10 19:37 | Neunerlei | New Issue | |
2020-08-11 12:26 | derick | Assigned To | => derick |
2020-08-11 12:26 | derick | Status | new => feedback |
2020-08-11 12:26 | derick | Note Added: 0005439 | |
2020-08-11 13:08 | Neunerlei | File Added: 2020-08-11 15_07_10-Code Coverage for _var_www_html_neunerlei_arrays_Classes_A.php.png | |
2020-08-11 13:08 | Neunerlei | Note Added: 0005440 | |
2020-08-11 13:08 | Neunerlei | Status | feedback => assigned |
2020-08-11 18:13 | derick | Status | assigned => confirmed |
2020-08-11 18:13 | derick | Note Added: 0005441 | |
2021-03-17 08:45 | derick | Target Version | => 3.0dev |
2021-04-08 09:52 | derick | Status | confirmed => resolved |
2021-04-08 09:52 | derick | Resolution | open => won't fix |
2021-04-08 09:52 | derick | Note Added: 0005822 |