• Stars
    star
    1,950
  • Rank 23,766 (Top 0.5 %)
  • Language
    Ruby
  • License
    Other
  • Created over 12 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automated code reviews via mutation testing - semantic code coverage.

mutant

Build Status Gem Version Discord

What is Mutant?

An automated code review tool, with a side effect of producing semantic code coverage metrics.

Think of mutant as an expert developer that simplifies your code while making sure that all tests pass.

That developer never has a bad day and is always ready to jump on your PR.

Each reported simplification signifies either:

A) A piece of code that does more than the tests ask for. You can probably use the simplified version of the code. OR:

B) If you have a reason to not take the simplified version as it violates a requirement: There was no test that proves the extra requirement. Likely you are missing an important test for that requirement.

On extensive mutant use A) happens more often than B), which leads to overall less code enter your repository at higher confidence for both the author and the reviewer.

BTW: Mutant is a mutation testing tool, which is a form of code coverage. But each reported uncovered mutation is actually a call to action, just like a flag in a code review would be.

Getting started:

  • Start with reading the nomenclature. No way around that one, sorry.
  • Then select and setup your integration, also make sure you can reproduce the examples in the integration specific documentation.
  • Use mutant during code reviews and on CI in incremental mode.
  • Do not merge code with new alive mutations. If you really must bypass: Add the subjects with open problems to the ignored subjects.

Operating Systems

Mutant is supported and tested under Linux and Mac OS X.

Ruby Versions

Mutant supports multiple ruby versions at different levels:

  • Runtime, indicates mutant can execute on a specific Ruby Version / implementation.
  • Syntax, depends on Runtime support, and indicates syntax new to that Ruby version can be used.
  • Mutations, depends on Syntax support, and indicates syntax new to that Ruby version is being analysed.

Supported indicates if a specific Ruby version / Implementation is actively supported. Which means:

  • New releases will only be done if all tests pass on supported Ruby versions / implementations.
  • New features will be available.
Implementation Version Runtime Syntax Mutations Supported
cRUBY/MRI 3.0 ✔️ ✔️ ✔️ ✔️
cRUBY/MRI 3.1 ✔️ ✔️ ✔️ ✔️
cRUBY/MRI 3.2 ✔️ ✔️ ✔️ ✔️
cRUBY/MRI 3.3 ✔️ ✔️ ✔️ ✔️
jruby TBD 📧 📧 📧 📧
mruby TBD 📧 📧 📧 📧
cRUBY/MRI < 3.0

Labels:

  • ✔️ Supported.
  • ⚠️ Experimental Support.
  • 🔜 Active work in progress.
  • 📧 Planned, please contact me on interest.
  • ⛔ Not being planned, or considered, still contact me on interest.

Licensing

Mutant is commercial software, with a free usage option for opensource projects. Opensource projects have to be on a public repository.

Commercial projects have to pay a monthly or annual subscription fee.

Opensource usage

Usage is free and does not require a signup. But it requires the code is under an opensource license and public. Specify --usage opensource on the CLI or usage: opensource in the config file.

Commercial usage

Commercial use requires payment via a subscription and requires a signup. See pricing for available plans.

After payment pecify --usage commercial on the CLI or usage: commercial in the config file.

Pricing

Mutant is free for opensource use!

For commercial use mutants pricing is subscription based.

Currency Duration Cost Payment Methods
USD 1 month 90$ Credit Card
USD 1 year 900$ Credit Card, ACH transfer
EUR 1 month 90€ Credit Card, SEPA Direct Debit
EUR 1 year 900€ Credit Card, SEPA Direct Debit, SEPA Transfer

Costs are per developer using mutant on any number of repositories.

Volume subscriptions with custom plans are available on request.

Should you want to procure a commercial mutant subscription please mail me to start the payment process.

Please include the following information:

  • Your business invoice address.
  • A payment email address, if different from your email address.
  • Only for the EU: A valid VAT-ID is required, no sales to private customers to avoid the horrors cross border VAT / MOSS. VAT for EU customers outside of Malta will use reverse charging.

Also feel free to ask any other question I forgot to proactively answer here.

Also checkout the commercial FAQ.

Topics

Communication

Try the following:

Sponsoring

Mutant, as published in the opensource version, would not exist without the help of contributors spending lots of their private time.

Additionally, the following features where sponsored by organizations:

  • The mutant-minitest integration was sponsored by Arkency
  • Mutant's initial concurrency support was sponsored by an undisclosed company that does currently not wish to be listed here.

Legal

Contents of this repository are maintained by:

Schirp DSO LTD
Director: Markus Schirp
Email: [email protected]
Vat-ID: MT24186727
Registration: C80467

Office address:
2, Carob Lane,
Sir Harry Luke Street
Naxxar NXR 2209,
Malta

Registred Address
Phoenix Business Centre,
The Penthouse,
Old Railway Track,
Santa Venera SVR9022,
Malta

More Repositories

1

unparser

Turn Ruby AST into semantically equivalent Ruby source
Ruby
310
star
2

anima

Object initializer from attributes hash
Ruby
173
star
3

stratosphere

Haskell EDSL and type-checker for AWS CloudFormation templates
Haskell
162
star
4

vanguard

External validations for ruby objects
Ruby
120
star
5

concord

Mixin to ease compositions in ruby
Ruby
112
star
6

devtools

The rake ci task!
Ruby
64
star
7

inflecto

Inflector for ruby
46
star
8

auom

Algebra with units of measurement.
Ruby
27
star
9

axiom-mongo-adapter

An MongoDB adapter for Axiom
Ruby
11
star
10

esearch

A ruby driver for elasticsearch that is ONLY A DRIVER.
Ruby
11
star
11

axiom-arango-adapter

An ArangoDB adapter for Axiom
Ruby
8
star
12

mhs

Haskell tooling megarepo
Haskell
8
star
13

axiom-elasticsearch-adapter

An Elasticsearch adapter for Axiom.
Ruby
8
star
14

mprelude-rb

Ruby
7
star
15

to_source

Generator for equivalent source from rubinius AST
Ruby
7
star
16

aql

The ArangoDB AQL AST and to_source implementation
Ruby
7
star
17

ruby-cdb

Ruby cdb reader and writer
C
6
star
18

guard-mutant

Mutant integration for guard
Ruby
6
star
19

mapper

A simple mapper without a latin name. (abandoned)
Ruby
6
star
20

axiom-fuzzer

A fuzzer for axiom relations
Ruby
6
star
21

assets

Playground for a nicer asset system
Ruby
6
star
22

response

Build HTTP responses
Ruby
5
star
23

request

Abstract not only the rack env in something more nice
Ruby
5
star
24

pgt

SQL Golden Testing Tool for postgresql
Haskell
5
star
25

ffprobe

Ruby wrapper around ffprobe
Ruby
4
star
26

eventstorm

unfinished zmq based event aggregation framework
Ruby
4
star
27

tasty-mgolden

A different golden testing provider for tasty.
Haskell
4
star
28

morpher

Transformation of ruby data-structures with optionally traced evaluation
Ruby
4
star
29

rz

Ruby ZeroMQ based jobserver with truly pulling workers
Ruby
3
star
30

openapi

OpenAPI datatypes
Haskell
3
star
31

axiom-sexp

Generate and load veritas relations from / to s-expressions
Ruby
3
star
32

lht

Lambda haskell tool / builds static binaries inside alpine containers
Haskell
3
star
33

db-migrations

Haskell Database Migrations for Postgresql
Haskell
3
star
34

ducktrap

The old soon to be unmaintained ducktrap. Successor is mbj/morpher
Ruby
3
star
35

source-constraints

GHC plugins to constrain the haskell source
Haskell
3
star
36

stack-deploy

Tooling around cloudformation templates
Haskell
3
star
37

variable

Ruby concurrency variables MVar and IVar
Ruby
2
star
38

mutant-rails-example

Mutant with rails example
Ruby
2
star
39

conversions

Haskell type conversions, another one.
Haskell
2
star
40

cbt

Container backend tool
2
star
41

devtools-hs

Haskell development tooling
Haskell
2
star
42

navigation

A web navigation dry up package
Ruby
1
star
43

sitemap_xml

Incomplete sitemap xml generator
Ruby
1
star
44

sunits

Depreciated sunits repo. Only used since some of my older projects will install from here!
Ruby
1
star
45

dump-parser

Simple and dump string 2 value DSL
Ruby
1
star
46

custom-resource

Custom CloudFormation Resources
Haskell
1
star
47

tinymagick

Simple ruby wrapper around imagemagick tools "identify" and "mogrify"
Ruby
1
star
48

html

Because XSS-free HTML generation is not about String#html_safe?
Ruby
1
star
49

mprelude

Very minimal prelude
Haskell
1
star
50

mcake

Ruby
1
star
51

dm-annoing-modificators

Modification methods that raise on failure for datamapper.
Ruby
1
star
52

apk-build

My APK overlay and builder
Shell
1
star