Skip to content

Drizzle

Compare
Choose a tag to compare
@joakim-brannstrom joakim-brannstrom released this 13 May 18:38
· 833 commits to master since this release
5cc805a

New features for dextool mutate

  • Check that all files to mutate are writable.
  • Check periodically that the test suite, without any mutants, execute OK. If
    not, rollback the last tested mutants.
  • Save what test_cmd killed a mutant. This is only activated if test case
    analyzers are used.
  • Prioritize testing of unknown mutants.
  • Check overload/halt conditions when running a schema for each mutant that is
    tested. Previously it was only done when selecting a new schema.
  • Construct larger mutant scheman. Previously they where at most one
    translation unit. Now they can span multiple translation units (e.g. *.cpp).
    This mean that each schema contain more mutants thus the overall mutation
    testing time is reduced.
  • Continuously save the result (every 20minute) the tested mutants of a
    schema. This should reduce the overall memory usage and means that if the
    schema is interrupted only the result from the last 20 minutes (at the most)
    are lost.
  • Modernize the html layout theme.
  • Prioritize mutants to test based on how much they affect the source code in
    order to quicker give actionable feedback to the user. Based on the
    assumption that a large mutant that survive is important to kill.
  • Change high interest mutants to reporting those that affect the most src
    code and has survive. Previously it was those that had survived the most
    test suite executions but this was never used by the users. The hope is that
    those that are reported as high interest are actually useful, interesting
    to look at and kill.
    Also allows the number of high interest mutants that are shown to be
    changed.
  • Automatically force a re-analyze of all files when a new version of the tool
    is installed and dextool mutate analyze is executed.
  • Automatically save the mutation score after each test run when all mutants
    are tested. This is then used to plot a trend.
  • The HTML report and console print a SyncStatus. It shows how "in sync" the
    tested mutants are with the code changes and test suite changes.
    The further apart they are the less "trustworthy" is the report. Because
    lets say the test suite is changed to now kill a mutant that is marked as
    alive.

Fixes for dextool mutate

  • Fix bugs in schema code generation such that more scheman compile.
  • Fix bug where the dependency tracking via included headers used the wrong
    path for headers included from the current directory (#include "foo.hpp").
  • Fix bug where a mutant that span multiple lines in the html report is shown
    on one line. It makes it hard to read.
  • Removed delete of case branches in switch statements. The language C/C++ and
    the Clang AST make it hard to generate correct mutants and schematan. The
    effort needed to make it work in all cases is still great. It is further a
    bit unnecessary because SDL will delete individual statements in the
    branches thus well. It doesnt't really give that much to be able to delete
    whole branches.
  • Not all mutant schematan for binary operators where generated which meant
    that speedup opportunities where lost. With this fix all binary operators
    should have a schema generated for them which speeds up dcr, ror, aor mutant
    operators.
  • Fix the size of the database when schematas are saved by compressing them on
    the fly. Reduced the size up to 90% of a database.
  • Add support for C++17 structural binding in schematas.
  • Enable scheman which mutate const variables in C/C++.
  • Fix mutation of C++ lamba expressions.
  • Fix libclang bindings. The enum CXCursorKind is not backward or forward
    compatible. Because of this dextool now have a binding for each version it
    supports. What happend where that the analyzed AST could, if the wrong
    binding is used, contain seemingly random nodes which mean that the
    mutations where waaaay off.
  • Fix schematas inside return-statements and when a condition contain pointers.
  • Measuring the runtime of the test suite is now done multithreaded. It is too
    slow and pessimistic to do single threaded. It was previously changed to
    single threaded because the load of the host computer could vary and lead to
    falsely classify mutants as timeout. But with the feature --load-behavior slowdown this is no longer a problem. Thus changing back to multithreaded
    to speedup both the start and overall mutation testing.
  • Remove returnFalse/returnTrue mutants because they are redundant, overlap
    with normal true/false.
  • Stop generating the equivalent mutant sdl when it deletes empty scopes.