Skip to content

Commit

Permalink
Automate docs generation
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexDenisov committed Dec 1, 2019
1 parent 2425533 commit 7545bbd
Show file tree
Hide file tree
Showing 14 changed files with 589 additions and 28 deletions.
5 changes: 4 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
cmake_minimum_required(VERSION 3.7.0)

set (MULL_VERSION 0.5.0)

project(Mull
VERSION 0.5.0
VERSION ${MULL_VERSION}
LANGUAGES C CXX
)

Expand Down Expand Up @@ -199,3 +201,4 @@ add_subdirectory(tools)
add_subdirectory(tests)
add_subdirectory(vendor/googletest)
add_subdirectory(vendor/libirm)
add_subdirectory(docs)
15 changes: 15 additions & 0 deletions docs/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
add_custom_target(generate-cli-options-doc
COMMAND $<TARGET_FILE:mull-cxx> --dump-cli > generated/CLIOptions.rst
DEPENDS mull-cxx
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
)

add_custom_target(generate-mutators-doc
COMMAND $<TARGET_FILE:mull-cxx> --dump-mutators > generated/Mutators.rst
DEPENDS mull-cxx
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
)

add_custom_target(build-docs
DEPENDS generate-mutators-doc generate-cli-options-doc
)
4 changes: 3 additions & 1 deletion docs/CommandLineReference.rst
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
Command Line Reference
======================
======================

.. include:: generated/CLIOptions.rst
4 changes: 3 additions & 1 deletion docs/SupportedMutations.rst
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
Supported Mutation Operators
============================
============================

.. include:: generated/Mutators.rst
3 changes: 3 additions & 0 deletions docs/_static/custom.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
td p {
margin-right: 20px;
}
21 changes: 14 additions & 7 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,25 @@
# import sys
# sys.path.insert(0, os.path.abspath('.'))

import re
import guzzle_sphinx_theme

# -- Project information -----------------------------------------------------

project = 'Mull'
copyright = '2019, Alex Denisov'
author = 'Alex Denisov'
def project_version():
with open("../CMakeLists.txt") as f:
for line in f:
m = re.search('MULL_VERSION (\d.\d.\d)', line)
if m:
return m.group(1)

# The full version, including alpha/beta/rc tags
release = '0.5.0'
project = 'Mull'
copyright = '2019, Mull Project'
author = 'Alex Denisov <alex@lowlevelbits.org>, Stanislav Pankevich <s.pankevich@gmail.com>'

version = project_version()
release = version
print("Generating docs for Mull" + version)

# -- General configuration ---------------------------------------------------

Expand Down Expand Up @@ -52,8 +60,6 @@
extensions.append("guzzle_sphinx_theme")
html_theme = 'guzzle_sphinx_theme'

# html_theme = 'pyramid'

html_theme_options = {
"project_nav_name": "Mull",
}
Expand All @@ -63,4 +69,5 @@
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
html_css_files = [ 'custom.css' ]
master_doc = 'index'
168 changes: 168 additions & 0 deletions docs/generated/CLIOptions.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
--workers number How many threads to use

--dry-run Skips real mutants execution. Disabled by default

--cache-dir directory Where to store cache (defaults to /tmp/mull-cache)

--disable-cache Disables cache (enabled by default)

--report-name filename Filename for the report (only for supported reporters). Defaults to <timestamp>.<extension>

--report-dir directory Where to store report (defaults to '.')

--reporters reporter Choose reporters:

:IDE: Prints compiler-like warnings into stdout

:SQLite: Saves results into an SQLite database

:Elements: Generates mutation-testing-elements compatible JSON file

--compdb-path filename Path to a compilation database (compile_commands.json) for junk detection

--compilation-flags string Extra compilation flags for junk detection

--ld-search-path directory Library search path

--include-path regex File/directory paths to whitelist (supports regex)

--exclude-path regex File/directory paths to ignore (supports regex)

--sandbox sandbox Choose sandbox approach:

:None: No sandboxing

:Watchdog: Uses 4 processes, not recommended

:Timer: Fastest, Recommended

--test-framework framework Choose test framework:

:GoogleTest: Google Test Framework

:CustomTest: Custom Test Framework

:SimpleTest: Simple Test (For internal usage only)

--mutators mutator Choose mutators:

Groups:
:all: cxx_all, experimental

:cxx_all: cxx_assignment, cxx_increment, cxx_decrement, cxx_arithmetic, cxx_logical, cxx_comparison, cxx_boundary

:cxx_arithmetic: cxx_minus_to_noop, cxx_add_to_sub, cxx_sub_to_add, cxx_mul_to_div, cxx_div_to_mul, cxx_rem_to_div

:cxx_arithmetic_assignment: cxx_add_assign_to_sub_assign, cxx_sub_assign_to_add_assign, cxx_mul_assign_to_div_assign, cxx_div_assign_to_mul_assign, cxx_rem_assign_to_div_assign

:cxx_assignment: cxx_bitwise_assignment, cxx_arithmetic_assignment, cxx_const_assignment

:cxx_bitwise: cxx_bitwise_not_to_noop, cxx_and_to_or, cxx_or_to_and, cxx_xor_to_or, cxx_lshift_to_rshift, cxx_rshift_to_lshift

:cxx_bitwise_assignment: cxx_and_assign_to_or_assign, cxx_or_assign_to_and_assign, cxx_xor_assign_to_or_assign, cxx_lshift_assign_to_rshift_assign, cxx_bitwise_rshift_assign_to_lshift_assign

:cxx_boundary: cxx_le_to_lt, cxx_lt_to_le, cxx_ge_to_gt, cxx_gt_to_ge

:cxx_comparison: cxx_eq_to_ne, cxx_ne_to_eq, cxx_le_to_gt, cxx_lt_to_ge, cxx_ge_to_lt, cxx_gt_to_le

:cxx_const_assignment: cxx_assign_const, cxx_init_const

:cxx_decrement: cxx_pre_dec_to_pre_inc, cxx_post_dec_to_post_inc

:cxx_default: cxx_increment, cxx_arithmetic, cxx_comparison, cxx_boundary

:cxx_increment: cxx_pre_inc_to_pre_dec, cxx_post_inc_to_post_dec

:cxx_logical: cxx_logical_and_to_or, cxx_logical_or_to_and

:experimental: negate_mutator, remove_void_function_mutator, scalar_value_mutator, replace_call_mutator

Single mutators:
:cxx_add_assign_to_sub_assign: Replaces += with -=

:cxx_add_to_sub: Replaces + with -

:cxx_and_assign_to_or_assign: Replaces &= with \|=

:cxx_and_to_or: Replaces & with |

:cxx_assign_const: Replaces 'a = b' with 'a = 42'

:cxx_bitwise_not_to_noop: Replaces ~x with x

:cxx_bitwise_rshift_assign_to_lshift_assign: Replaces >>= with <<=

:cxx_div_assign_to_mul_assign: Replaces /= with \*=

:cxx_div_to_mul: Replaces / with *

:cxx_eq_to_ne: Replaces == with !=

:cxx_ge_to_gt: Replaces >= with >

:cxx_ge_to_lt: Replaces >= with <

:cxx_gt_to_ge: Replaces > with >=

:cxx_gt_to_le: Replaces > with <=

:cxx_init_const: Replaces 'T a = b' with 'T a = 42'

:cxx_le_to_gt: Replaces <= with >

:cxx_le_to_lt: Replaces <= with <

:cxx_logical_and_to_or: Replaces && with ||

:cxx_logical_or_to_and: Replaces || with &&

:cxx_lshift_assign_to_rshift_assign: Replaces <<= with >>=

:cxx_lshift_to_rshift: Replaces << with >>

:cxx_lt_to_ge: Replaces < with >=

:cxx_lt_to_le: Replaces < with <=

:cxx_minus_to_noop: Replaces -x with x

:cxx_mul_assign_to_div_assign: Replaces \*= with /=

:cxx_mul_to_div: Replaces * with /

:cxx_ne_to_eq: Replaces != with ==

:cxx_or_assign_to_and_assign: Replaces \|= with &=

:cxx_or_to_and: Replaces | with &

:cxx_post_dec_to_post_inc: Replaces x-- with x++

:cxx_post_inc_to_post_dec: Replaces x++ with x--

:cxx_pre_dec_to_pre_inc: Replaces --x with ++x

:cxx_pre_inc_to_pre_dec: Replaces ++x with --x

:cxx_rem_assign_to_div_assign: Replaces %= with /=

:cxx_rem_to_div: Replaces % with /

:cxx_rshift_to_lshift: Replaces << with >>

:cxx_sub_assign_to_add_assign: Replaces -= with +=

:cxx_sub_to_add: Replaces - with +

:cxx_xor_assign_to_or_assign: Replaces ^= with \|=

:cxx_xor_to_or: Replaces ^ with |

:negate_mutator: Negates conditionals !x to x and x to !x

:remove_void_function_mutator: Removes calls to a function returning void

:replace_call_mutator: Replaces call to a function with 42

:scalar_value_mutator: Replaces zeros with 42, and non-zeros with 0

0 comments on commit 7545bbd

Please sign in to comment.