Skip to content

Cleanup Kani's output #1194

@celinval

Description

@celinval

Requested feature: Provide a cleaner user interface by default and allow users to control its verbosity.
Use case: Kani output can be very verbose which makes it hard to read.

Test case: Kani prints 2000+ lines (400+ properties) in this testcase taken from tests/kani/Vectors/vector_extend.rs:

#[kani::proof]
fn main() {
    let mut v: Vec<u32> = Vec::new();
    v.extend(42..=42);
    assert!(v[0] == 42);
}

Proposed solution:

Provide the following verbosity options to kani and cargo-kani:

  • Default: Similar to today's output but without CBMC stats and only include user assertions for each harness.
  • --quiet: Similar interface to cargo test --quiet. I.e.:
running 5 harnesses
.....
verification result: ok. 5 passed; 0 failed; finished in 0.00s

with failure Kani displays the terse output for the failed tests:

running 5 harnesses
..F..
verification result: FAILED. 4 passed; 1 failed; finished in 0.00s

---- harness: <name> ----
VERIFICATION RESULT: 
 ** 1 of 100 failed (10 unreacheable)
Failed Checks: assertion failed: 1 + 1 == 3
 File: "/workspace/kani-project/kani/tests/ui/terse-output-format-fail/fail.rs", line 7, in main

VERIFICATION:- FAILED

failures:
    <harness_name>
  • --verbose: Today's default interface including all checks.
  • --debug: Verbose output that also include debug logs.
  • --raw: Hidden option to print CBMC's output as is. Implies debug.

For simplicity, I would prefer if we retire today's --output-format.

Alternative solution:

We could use --output-format [quiet | regular | verbose | debug | raw].

Metadata

Metadata

Assignees

No one assigned

    Labels

    [C] Feature / EnhancementA new feature request or enhancement to an existing feature.[E] User ExperienceAn UX enhancement for an existing feature. Including deprecation of an existing one.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions