mull icon indicating copy to clipboard operation
mull copied to clipboard

On the way to v1.0

Open AlexDenisov opened this issue 4 years ago • 9 comments

This issue is supposed to be a place to discuss what needs to be implemented for version 1.0. These should include show-stoppers but can also include nice-to-haves. We'll need to decide which ones belong to which group.

Everyone is encouraged to share their ideas and suggestions. I'll start.


  • [x] Multithreading support: mull itself is multithreaded, but if the program under test is multithreaded, then Mull may produce non-deterministic results. Currently, Mull gathers the code coverage based on call trees. In a single-threaded program (most of the time) the call tree is deterministic (i.e., the order of the calls is the same from run to run). A possible solution is to use another, 'linear' coverage approach: to only collect whether the function was executed or not. It has some drawbacks but will give the most deterministic behavior. Not needed anymore
  • [x] TLS support: this is being in the works currently #745. Not needed anymore
  • [x] Diff reporter: Mull has several reporters (mutation elements, SQLite, CLI). it would be very nice to also have a reporter that produces git-like patches so that they can be applied to the source code or used as part of CI integration. Related #587.
  • [ ] CI integration: mull can be run as part of the CI process, but the integration is not trivial and does not have smooth CI integration. Directly related to #738.
  • [x] Diff-based mutation filter: at the moment, Mull does not respect version control systems. For better CI integration it is essential to filter out mutants that are unrelated to a pull or merge request.
  • [x] Non covered mutants: as described here #636.
  • [x] More test frameworks: it would be nice to have more test frameworks supported. Related #174 #175 #191 #492 #746. More suggestions are very welcome. Cannot support it anymore
  • [ ] AST-based mutations: after a lot of considerations we decided that AST-based mutations (based on Clang plugins) are the must-have.

The above list is not exhaustive and may be extended.

AlexDenisov avatar Oct 16 '20 09:10 AlexDenisov

  • Smooth junk detection: currently, Mull requires a user to provide 'implicit' C/C++ header search paths manually. It would be nice if we can automate this process in a transparent way.

AlexDenisov avatar Oct 16 '20 09:10 AlexDenisov

Great to collect all the important features in one ticket. Would it be useful to also create a v1.0 Label or Milestone to mark PRs and issues which are part of this effort?

jnohlgard avatar Oct 16 '20 11:10 jnohlgard

That's a good idea. I'll create a milestone and a label. I guess for the milestone to work I'd also need to create an issue per each feature/task.

AlexDenisov avatar Oct 16 '20 12:10 AlexDenisov

About the diff filter, are we talking something like clang-tidy-diff? https://clang.llvm.org/extra/doxygen/clang-tidy-diff_8py_source.html

chgans avatar Oct 16 '20 20:10 chgans

About the diff filter, are we talking something like clang-tidy-diff? https://clang.llvm.org/extra/doxygen/clang-tidy-diff_8py_source.html

That is correct.

AlexDenisov avatar Oct 17 '20 19:10 AlexDenisov

Vote for "Add ability to catch mutants using tests written on other languages #778"

ligurio avatar Nov 18 '20 08:11 ligurio

More test frameworks: it would be nice to have more test frameworks supported. Related #174 #175 #191 #492 #746. More suggestions are very welcome.

It is definitely good for those who use these frameworks. But I believe it would be a nightmare for Mull maintainers to support and test all of these frameworks. I would suggest to generalize integration with test frameworks (no ideas how) or simplify integration that will allow users easily integrate without changing Mull source code.

Also there is a report published by Jetbrains where developers answered on question "Which unit-testing frameworks do you regularly use, if any?". Below is a distribution of different unit testing frameworks for C and C++:

image Source: C language:

image Source: C++ language

ligurio avatar Dec 07 '20 08:12 ligurio

Dropping JIT is certainly on the list #798.

AlexDenisov avatar Dec 29 '20 10:12 AlexDenisov

Yet another follow-up: since the JIT is gone there is no special need for multithreading and TLS support. Also, we cannot have/don't need explicit test frameworks support anymore.

I edited the original comment to reflect the current state.

AlexDenisov avatar Jan 07 '21 23:01 AlexDenisov