package org.pitest.mutationtest.filter; import java.util.Collection; import org.pitest.functional.F; import org.pitest.functional.FCollection; import org.pitest.functional.prelude.Prelude; import org.pitest.mutationtest.engine.MutationDetails; /** * Quick dirty hack to filter out some of the junk mutations * created for kotlin classes. These are mutations in autogenerated * methods not created by the programmer, such as the copy method * in data classes. * * For the amount assume that anything on line 0 of a kotlin class * is autogenerated. This won't catch everything and will probably * sometimes trigger when it shouldn't, but overall is a big * improvement for very little effort. * */ public class KotlinFilter implements MutationFilter { @Override public Collection<MutationDetails> filter( Collection<MutationDetails> mutations) { return FCollection.filter(mutations, Prelude.not(isKotlinJunkMutation())); } private static F<MutationDetails, Boolean> isKotlinJunkMutation() { return new F<MutationDetails, Boolean>() { @Override public Boolean apply(MutationDetails a) { return a.getFilename().toLowerCase().endsWith(".kt") && a.getLineNumber() == 0; } }; } }