Skip to content

Limestone

Latest
Compare
Choose a tag to compare
@joakim-brannstrom joakim-brannstrom released this 09 Dec 08:30
· 144 commits to master since this release

Lots of changes. The user visible highlight is the significant improvements to
the HTML report. Everything has been improved from the overview to the file
mutant navigation. It is now a much more pleasent experience to read the
report.

The significant behavior change with this release is the removal of --mutant.
Allowing test and report to use other mutantion operators than what where
used during the analyze phase both resulted in a higher implementation
complexity and surprising user behavior. The new behavior is that what has been
analyzed is tested and reported. It is both more logical as implemented and how
it is used.

Fixes

  • Updated support to llvm-14. This fix should make dextool automatically work
    with future versions of llvm as long as the C bindings that are used by
    dextool are unchanged.
  • Bindings updated to support llvm-15.

New features for dextool mutate

  • Annotating each line with NOMUT for mutants to ignore may end up being too
    much clutter in the source code. It may even be unfeasible to add on the line
    because it may become too long. Therefor two new annotation types are added.
    NOMUTNEXT to ignore the mutants on the next line and NOMUTBEGIN/NOMUTEND
    to ignore mutants in a whole block of code.
  • (html report) Auto detect when javascript is deactivated to print a warning.
    This is mainly for Jenkins servers wherein the security settings may have
    activated CSP. The HTML report look really bad and isn't working as
    expected. For a new user it may seem like it should be "this bad". The auto
    detect thus print show a warning to the user and a hint of how to solve it
    if CSP is the problem.
  • Add support for constant replacement of floating point numbers.
  • (html report) Improve the sortable tables
  • (html report) Improve how mutants that span multiple lines are displayed.
  • (html report) Remove buggy treemap.
  • (html report) Display an explanation for the mutation operator abbreviations
    when hovering with the mouse.
  • (html report) Display how an individual files mutation score have changed
    compared to the last 7 days average. This is to help in identifying negative
    trends.
  • (html report) Display coverage information.
  • (html report) Move help text and explanations to a popup dialog (I) to
    reduce the clutter.
  • (html report) When clicking on a mutant choose the smallest mutants under
    the cursors. This is to fix the annoying behavior wherein the first mutant
    where chosen which could be one that span multiple lines. It is hardly ever
    that one that is of interest. If the mouse is over e.g. a + then the
    expected behavior is to show the AOR mutants under the cursor (-).
  • (html report) Deduplicate mutants that have the same source code
    transformation to make it easier to find the relevant mutant to look.
  • (html report) Fix scrolling in a file report. Scrolling with the mouse do
    not change the mutant except when the mouse is over the window showing the
    mutants on the current line.
  • (html report) Fix the web browsers "back" button when looking at a file report.
  • The CLI parameter --mutant has been removed from test and report
    command groups.
  • (html report) The test cases in the info box in the file report is now a
    link to the detailed test case report.
  • Automatically trigger a full analyze when the configuration is changed.

Fixes for dextool mutate

  • (html report) Fix sortable tables in chrome.
  • Coverage info could accumulate infinitely in the database, wrong foreign key.
  • Changed the checksum of mutants from 128bit to 64bit to simplify the DB
    schema, implementation and slightly improve the performance.
  • Fixed a bug when sorting mutants by datetime which resulted in e.g. "testing
    oldest mutant" not working as it should.
  • The trend graph for file changes is redesigned to show when a files mutation
    score last changed. It should make it easier to understand why the mutation
    score have changed because it points to the files that are changed.
  • --load-behavior halt sometimes failed because the threadpool used for
    tests did not properly shutdown. Added a background thread that triggers after
    10 minutes to forcefully shutdown dextool. This is mainly an issue when
    dextool is running on a shared CI server and it becomes overloaded. It is hard
    to reproduce but the server probably run out of memory.
  • Fix coverage bug where a mutant where not re-tested if only tests changed
    such that the mutant is not covered.
  • Improve scheman. Moved the schema generator from analyze to test phase to
    make use of the internal worklist. The worklist contains what mutants to test.
    The scheman are now built up from fragments containing mutants that are in the
    worklist. This result in more mutants that are tested for each schema. A rough
    test show a 50% reduction of the number of scheman needed which mean a
    sometimes huge reduction in test time. A side effect of this is that the
    analyze phase use a lot less memory.
  • Analyze phase where not stable. The same mutants where not saved to the
    database even if no source code where changed. Luckily the bug where in the
    SQL schema definition which prohibited the same mutant kind to affect one and
    the same source code location.