Checker Tooling
Subcommand registration and entry points for the lotus-check unified
checker frontend.
Header: include/Checker/Framework/Subcommands.h
Implementation: tools/checker/
Build target: lotus-check
Overview
The Checker Tooling module provides the subcommand infrastructure for the
unified lotus-check binary. Each checker category registers an
llvm::cl::SubCommand with a descriptive name and help text, enabling
dispatch from a single entry point.
Note
These subcommands are an internal C++ option-registration mechanism. The
public command-line interface selects an engine with --engine=<name>
(e.g. lotus-check --engine=kint input.bc); the old lotus-check kint
input.bc subcommand form is rejected.
Checker Subcommands
File: Subcommands.h
Declares accessor functions for each subcommand (defined in
lib/Checker/Framework/Subcommands.cpp):
#include "Checker/Framework/Subcommands.h"
auto &sub = lotus::checker::tooling::genericSubCommand();
auto &sub = lotus::checker::tooling::kintSubCommand();
auto &sub = lotus::checker::tooling::taintSubCommand();
auto &sub = lotus::checker::tooling::concurrencySubCommand();
auto &sub = lotus::checker::tooling::pulseSubCommand();
auto &sub = lotus::checker::tooling::fitxSubCommand();
auto &sub = lotus::checker::tooling::saberSubCommand();
auto &sub = lotus::checker::tooling::aeSubCommand();
auto &sub = lotus::checker::tooling::symexSubCommand();
Registered Subcommands
Subcommand |
Engine selected via |
|---|---|
|
Run declarative and registry-backed checks |
|
Run the KINT integer checker |
|
Run the IFDS-based taint analysis |
|
Run the concurrency checker suite |
|
Run the Pulse checker |
|
Run the FiTx checker suite |
|
Run the Saber checker |
|
Run the abstract-execution checker |
|
Run the symbolic-execution checker |
Usage
./build/bin/lotus-check --engine=kint input.bc --checks=all
./build/bin/lotus-check --engine=concur input.bc --checks=data-race
Parameter namespaces
Options with one cross-engine contract remain global, for example
--checks, --log-level, --analysis-stats, and the shared reporting
options. Parameters whose semantics belong to an engine use the qualified form
--<engine>.<parameter>. For example, KINT summary behavior is configured by
--kint.summary-mode, while Pulse path solving is configured by
--pulse.smt. No unqualified compatibility aliases are provided.
Use lotus-check --list-parameters to print all global and engine groups,
or lotus-check --engine=<name> --help for one engine.
See Also
Checker Framework — Checker framework overview
KINT Numerical Bug Checker — KINT integer checker
Pulse Checker — Pulse biabductive checker
Saber Checker — Saber source-sink checker
Symbolic Execution Checker — symbolic-execution checker
IFDS Taint Checker — IFDS taint checker