All Projects → mbj → Mutant

mbj / Mutant

Licence: other
Automated code reviews via mutation testing - semantic code coverage.

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Mutant

Infection
PHP Mutation Testing library
Stars: ✭ 1,575 (-12.21%)
Mutual labels:  coverage, mutation-testing, mutant
Gradle Pitest Plugin
Gradle plugin for PIT Mutation Testing
Stars: ✭ 144 (-91.97%)
Mutual labels:  static-analysis, coverage, mutation-testing
Humbug
Humbug is a Mutation Testing framework for PHP to measure the real effectiveness of your test suites and assist in their improvement. It eats Code Coverage for breakfast.
Stars: ✭ 1,159 (-35.4%)
Mutual labels:  coverage, mutation-testing
Pitest
State of the art mutation testing system for the JVM
Stars: ✭ 1,185 (-33.95%)
Mutual labels:  coverage, mutation-testing
Fake ftp
A fake FTP server for use with ruby tests
Stars: ✭ 77 (-95.71%)
Mutual labels:  rspec, minitest
Intellidroid
A targeted input generator for Android that improves the effectiveness of dynamic malware analysis.
Stars: ✭ 46 (-97.44%)
Mutual labels:  static-analysis, dynamic-analysis
Vscode Ruby Test Adapter
A Ruby test adapter extension for the VS Code Test Explorer
Stars: ✭ 50 (-97.21%)
Mutual labels:  rspec, minitest
Mutest
fork of mutant with inline disable comments and a few different mutations.
Stars: ✭ 75 (-95.82%)
Mutual labels:  rspec, mutation-testing
Rubocop Rspec
Code style checking for RSpec files
Stars: ✭ 603 (-66.39%)
Mutual labels:  static-analysis, rspec
With model
Dynamically build an Active Record model (with table) within a test context
Stars: ✭ 119 (-93.37%)
Mutual labels:  rspec, minitest
Lurker
📖 The ultimate tool for documenting and testing APIs in Rails
Stars: ✭ 120 (-93.31%)
Mutual labels:  rspec, minitest
Aruba
Test command-line applications with Cucumber-Ruby, RSpec or Minitest. The most up to date documentation can be found on Cucumber.Pro (https://app.cucumber.pro/projects/aruba)
Stars: ✭ 900 (-49.83%)
Mutual labels:  rspec, minitest
Habomalhunter
HaboMalHunter is a sub-project of Habo Malware Analysis System (https://habo.qq.com), which can be used for automated malware analysis and security assessment on the Linux system.
Stars: ✭ 627 (-65.05%)
Mutual labels:  static-analysis, dynamic-analysis
Email Spec
Collection of RSpec/MiniTest matchers and Cucumber steps for testing email in a ruby app using ActionMailer or Pony
Stars: ✭ 1,142 (-36.34%)
Mutual labels:  rspec, minitest
R2frida
Radare2 and Frida better together.
Stars: ✭ 610 (-66%)
Mutual labels:  static-analysis, dynamic-analysis
Mobile Security Framework Mobsf
Mobile Security Framework (MobSF) is an automated, all-in-one mobile application (Android/iOS/Windows) pen-testing, malware analysis and security assessment framework capable of performing static and dynamic analysis.
Stars: ✭ 10,212 (+469.23%)
Mutual labels:  static-analysis, dynamic-analysis
Ruby Type Inference
Dynamic definitions and types provider for ruby static analysis
Stars: ✭ 129 (-92.81%)
Mutual labels:  static-analysis, dynamic-analysis
Knapsack
Knapsack splits tests evenly across parallel CI nodes to run fast CI build and save you time.
Stars: ✭ 430 (-76.03%)
Mutual labels:  rspec, minitest
Crosshair
An analysis tool for Python that blurs the line between testing and type systems.
Stars: ✭ 586 (-67.34%)
Mutual labels:  static-analysis, dynamic-analysis
Bap
Binary Analysis Platform
Stars: ✭ 1,385 (-22.8%)
Mutual labels:  static-analysis, dynamic-analysis

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 2.6 ✔️ ✔️ ✔️ ✔️
cRUBY/MRI 2.7 ✔️ ✔️ ✔️ ✔️
cRUBY/MRI 3.0 ✔️ ✔️ ✔️ ✔️
jruby TBD 📧 📧 📧 📧
mruby TBD 📧 📧 📧 📧
cRUBY/MRI < 2.6

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 plan for opensource projects.

Commercial projects have to acquire a license per developer, with unlimited repositories per developer. CI usage for licensed developers is included.

Opensource projects have to acquire their free license per repository. That license will work for any contributor implicitly. Typically the project maintainer gets the license.

The license distribution happens through the mutant-license gem. Mutant installs without that dependency, but will not be very cooperative unless mutant-license is also available.

The license gem is dynamically generated per licensee and comes with a unique license gem source URL.

After signup for a license the following has to be added to your Gemfile replacing ${key} with the license key and ${plan} with com for commercial or oss for opensource usage.

source 'https://${plan}:${key}@gem.mutant.dev' do
  gem 'mutant-license'
end

The mutant license gem contains metadata that allows mutant to verify licensed use.

For commercial licenses mutant checks the git commit author or the configured git email to be in the set of licensed developers.

For opensource licenses mutant checks the git remotes against the licensed git repositories. This allows the project maintainer to sign up and not bother collaborators with the details.

There are, apart from initial license gem installation, no remote interaction for license validation.

Getting an Opensource license

As stated above: Opensource projects of any kind are free to use mutant.

Just mail me: Please include:

  • Just the git remote URL of your repository. Repository can be anywhere, must not be on Github, just has to be public.

I do not need any more details.

Pricing

Mutant is free for opensource use!

For commercial use mutants pricing is subscription based.

Currency No. Subscribers Duration Cost Payment Methods
USD any 1 month 30$ Credit Card
USD any 1 year 300$ Credit Card, ACH transfer
USD >20 custom custom Credit Card, ACH transfer, Wire transfer, custom
EUR any 1 month 25€ Credit Card, SEPA Direct Debit
EUR any 1 year 250€ Credit Card, SEPA Direct Debit, SEPA Transfer
EUR >20 custom custom Credit Card, SEPA Direct Debit, SEPA Transfer, custom

Should you want to procure a commercial mutant subscription please mail me.

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 customers outside of Malta will use reverse charging.
  • Per developer the git author email address as returned by git config user.email

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

Also checkout the commercial FAQ.

Pricing Why?

The idea is to charge 1$ per developer per day. Mutant reduces the time spend on code reviews.

This time saved should be worth way more than the 1$ per day.

EUR prices are set to mirror USD prices, but avoid conversion losses at the customer.

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].