Limestone
joakim-brannstrom
released this
09 Dec 08:30
·
163 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 andNOMUTBEGIN
/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
activatedCSP
. 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 fromtest
andreport
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.