Skip to content

Hematite

Latest
Compare
Choose a tag to compare
@joakim-brannstrom joakim-brannstrom released this 05 Jun 09:13
· 13 commits to master since this release
563a3f0

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 with 0.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 the timeout 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.