joakim-brannstrom
released this
05 Jun 09:13
·
13 commits
to master
since this release
There are no new major features in this release but rather small improvements to the existing features. The most significant change is that this release contains a crucial bug fix when using a newer D compiler.
Fixes
- Bindings updated to support llvm-16 and 17.
- Fix failed parsing of internal compiler flags when the console languages
isn't English. - Fix segfault with dmd-2.106.0+
- Officially dropped support for llvm v4-13 because they are no longer tested
by CI. They may or may not work.
Fixes for dextool mutate
- It is problematic to inject mutant schema in C++ templates because it may be
highly likely that the resulting schema fail to compile. If it is likely or
not depend on the source code. Sometimes it works fine, sometimes it doesn't
Because dextool mutate is intended to be generically applicable this release
changes the schema generator to be conservative. If it is a C++ template
then do not inject a schema code in them. This may result in slower mutation
testing for some and faster for others. If it turns out to be a problem this
behavior may become configurable. - The unique identifier calculated by the relaxed algorithm didn't work
correctly for mutants in headers. It often lead to duplication of mutants
which lead to a misleading mutation score and made the tool many times
slower than it should have been. - Stopped generated statement delete mutants of
return;
because those
mutants overlap in behavior with other mutants thus they are redundant. An
example of such a mutant is the early return programming pattern.
void fn(int x) {
if (x > 42) { return; }
/* other stuff */
}
The mutant x>42
to false
is the same as deleting return;
. Because
mutation testing is a somewhat slow process it is better to generate less
mutants wherein every mutant that is generated are useful (exhibit a new
behavior giving useful insights to how the test suite can be improved).
- Add support for textual control structure in C++ such as
and
,or
. - The CR mutation operator replaced floats with an integer
0
which may
result in compilation errors. Fix now by replace with0.0
. - Fix schema phase that could stop prematurely when the database is accessed
from multiple instances in parallel. The database locks in that case but do
not retry at a later time which lead to the schema not finding any files to
inject the schema runtime in. - Remove deletion of whole if-statement. They are pretty redundant considering
that the bodies of each branch are deleted in turn. Less mutants that are
"productive" is better. - Timeout scale factor is now always applied in the schema phase.
- Fix bug where the timeout worklist wasn't purged of mutants that no longer
had thetimeout
status. - Add support for the spaceship operator in C++. Should improve the success
rate of compiling mutant scheman which in the end mean that the time to
finish mutation testing is faster. - Major fixes to mutant schema generation. Many of the scheman led to
compilation errors. All known problems have been fixed which should speedup
mutation testing alot. - Update jquery to v3.7.1 to fix three potential security vulnerabilities.
- Allow analysis of more complext code by not discarding the whole AST because
some AST branches have a "too high" depth. - Fix crash when running
dextool mutate test
with schemata activated but
there are no scheman.