clang-contracts VS icontract-hypothesis

Compare clang-contracts vs icontract-hypothesis and see what are their differences.

clang-contracts

Experimental support for contracts programming in clang++ (by arcosuc3m)

icontract-hypothesis

Combine contracts and automatic testing. (by mristin)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
clang-contracts icontract-hypothesis
1 3
29 74
- -
10.0 0.0
over 5 years ago almost 2 years ago
C++ Python
GNU General Public License v3.0 or later MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

clang-contracts

Posts with mentions or reviews of clang-contracts. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-01-01.
  • Adding “invariant” clauses to C++ via GCC plugin to enable Design-by-Contract
    5 projects | news.ycombinator.com | 1 Jan 2023
    I'm the author, and even I think so. I'm more of an LLVM fan myself (though I can't not mention David Malcom's work on the GCC Static Analyzer).

    Ideally it wouldn't be a plugin at all, it'd be a language feature. We got Contracts and left out the most useful contract of them all, the stateful invariant!

    Originally, I started it as a Clang plugin, thinking that I could also implement support for the Contracts "[[pre]]" and "[[post]]" specification on top (or at least some minimal implementation of it.

    The difficulty seemed a lot greater to support pre/post attributes with expressions inside of them than [[invariant]] marker attributes.

    If people would like to use this from Clang, even without support for regular Contracts, I will publish a compatible Clang plugin.

    I think at some point there was support for Contracts in Clang, maybe longer term I'll try to get them working again? (I've no experience here)

    https://github.com/arcosuc3m/clang-contracts

    This fellow wrote a whole ~200 page thesis on this just as recently as 2018, such a shame for it to go to waste =/

    https://e-archivo.uc3m.es/bitstream/handle/10016/29231/TFG_J...

icontract-hypothesis

Posts with mentions or reviews of icontract-hypothesis. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-17.
  • Automated Unit Test Improvement Using Large Language Models at Meta
    6 projects | news.ycombinator.com | 17 Feb 2024
    https://github.com/mristin/icontract-hypothesis

    Nagini and deal-solver attempt to Formally Verify Python code with or without unit tests: https://news.ycombinator.com/item?id=39139198

    Additional research:

    "Fuzz target generation using LLMs" (2023)

  • Adding “invariant” clauses to C++ via GCC plugin to enable Design-by-Contract
    5 projects | news.ycombinator.com | 1 Jan 2023
    https://icontract.readthedocs.io/en/latest/usage.html#invari...

    For unit testing, there's icontract-hypothesis; with the Preconditions and Postconditions delineated by e.g. decorators, it's possible to generate many of the fuzz tests from the additional Design by Contract structure of the source.

    From https://github.com/mristin/icontract-hypothesis :

    > icontract-hypothesis combines design-by-contract with automatic testing.

    > It is an integration between icontract library for design-by-contract and Hypothesis library for property-based testing.

    > The result is a powerful combination that allows you to automatically test your code. Instead of writing manually the Hypothesis search strategies for a function, icontract-hypothesis infers them based on the function’s [sic] precondition

  • Pynguin – Allow developers to generate Python unit tests automatically
    4 projects | news.ycombinator.com | 31 May 2021
    Just in case you are looking for an alternative approach: if you write contracts in your code, you might also consider crosshair [1] or icontract-hypothesis [2]. If your function/method does not need any pre-conditions then the the type annotations can be directly used.

    (I'm one of the authors of icontract-hypothesis.)

    [1] https://github.com/pschanely/CrossHair

    [2] https://github.com/mristin/icontract-hypothesis

What are some alternatives?

When comparing clang-contracts and icontract-hypothesis you can also consider the following projects:

CMake - Mirror of CMake upstream repository

pynguin - The PYthoN General UnIt Test geNerator is a test-generation tool for Python

MIRAI - Rust mid-level IR Abstract Interpreter

CrossHair - An analysis tool for Python that blurs the line between testing and type systems.

gcc-invariant-plugin

Polyester.jl - The cheapest threads you can find!

AlphaCodium - Official implementation for the paper: "Code Generation with AlphaCodium: From Prompt Engineering to Flow Engineering""