Comments (8)
In my todo list there was an idea to implement if removal
mutator, so IMO removing any if/elseif
conditions completely would be a great addition to the mutator set.
and could be another mutator that set it to true
need to think more about it with some examples, probably worth trying to implement and check what it brings
from infection.
Yes, I also thought about if/else removal
. What do you think is a better idea? Removal or setting it to false? IMO it would bring the same value. It seems to me that. removing if
will be hard to implement.
I also thought about boolean conditions (&&
and ||
) that are not in if
/elseif
statements. It could be done in the next PR. But I need to think about it or try to implement POC.
-$var = $a && $b;
+$var = false;
from infection.
It seems to me that. removing if will be hard to implement.
Ok, I have to take those words back.. I thought that there is no empty node, but I found it in repo Node\Stmt\Nop
. So let me know which approach, in your opinion, would be better ;)
EDIT: but there is still problem when there is elseif statement. It will produce syntax error.
from infection.
let's try with changing condition to false
then rather than removing. But feel free to change the strategy if removing will work better for some reason
from infection.
I'm afraid I'm going to upset you all. I think came up before, and the biggest argument against these mutations was that they are very easy to kill (or downright impossible), very obvious from the coverage report, and most of the time they are going to waste CPU cycles, skewing the metrics.
Here are all mutations this example currently generates: https://infection-php.dev/r/3w26
If I had a branch like this in my code, it is probably because it was added as an optimization to avoid costly code paths. So if I have to kill the mutation proposed here, I'm supposed to remove an optimization because there's no way to test it. How can we argue this is a good thing?
from infection.
@sanmai you are right, I agree with you. Most of these mutation would not be useful but there will be a lot of it
from infection.
@manhunto did you do some analysis and have examples?
from infection.
No, It is just my assumption and when I thought about it may be true. I will do more research after two weeks because I'm on holidays now
from infection.
Related Issues (20)
- Investigate is it possible to check duplicates of generated mutators (physical and logical) HOT 5
- Infection needs to be adapted for `phpunit.xml` schema change in PHPUnit 10.1 HOT 1
- No GPG Signature for Phive. HOT 2
- Error infection phpunit 10.1 in Schema PHPUNIT. HOT 1
- [False-positive] Mutations on PHP Attributes are not killed HOT 1
- Do not mutate `instanceof` in `assert()` HOT 7
- Attributes on parameters of method signature are not detected as part of method signature HOT 7
- Implement real-time reporting for Infection
- Infection can't run custom Test Framework extensions because TestFrameworkTypes is hardcoded
- Allow Infection to run without a pre-existing Test Framework configuration file
- Error "Expected a value identical to 1. Got: 62" when using PHPUnit 10.2 HOT 10
- Syntax error: infection drops required parentheses HOT 1
- git-diff on tests to trigger corresponding covered source files? HOT 1
- Session Interference Issue with Magento 1.9 on PHP 8.0.29 using Infection 0.26.19 HOT 2
- Infection wrongly claims "continue to break" mutation would be uncovered HOT 17
- Checking fail if config not in root directory (testFramework=codeception)
- Add new GitLab (Code Climate) code quality JSON logger.
- Release tag shows incorrect version HOT 2
- MulEqual with -1 cannot be fixed HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from infection.