Giter Site home page Giter Site logo

Comments (8)

maks-rafalko avatar maks-rafalko commented on June 2, 2024

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.

manhunto avatar manhunto commented on June 2, 2024

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.

manhunto avatar manhunto commented on June 2, 2024

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.

maks-rafalko avatar maks-rafalko commented on June 2, 2024

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.

sanmai avatar sanmai commented on June 2, 2024

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.

manhunto avatar manhunto commented on June 2, 2024

@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.

maks-rafalko avatar maks-rafalko commented on June 2, 2024

@manhunto did you do some analysis and have examples?

from infection.

manhunto avatar manhunto commented on June 2, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.