Repository navigation
Code Quality
Beez enforces style and safety through Makefile targets. CI runs the same pipeline as make all (see Submitting Changes).
Reports are written under report/:
| Subdirectory | Target | Tooling |
|---|---|---|
report/test/ |
test |
CTest |
report/format/ |
format-check |
clang-format, cmake-format |
report/lint/ |
lint |
clang-tidy, cmake-format |
report/analyze/ |
analyze |
cppcheck, clang-tidy |
report/security/ |
security |
clang-tidy security checks, cppcheck |
report/coverage/ |
coverage |
gcovr HTML report |
report/sanitize/ |
sanitize |
ASan/UBSan test run |
report/fuzz/ |
fuzzer-smoke |
libFuzzer stats |
Clear reports: make clean-reports.
make format # apply clang-format + cmake-format
make format-check # CI mode (dry-run, fails on diff)Formatted paths:
- All
*.cpp,*.hpp,*.hundersrc/,include/,tests/ - Listed
CMakeLists.txtfiles (root and subprojects)
Config files: .clang-format at repo root; cmake-format via cmakelang.
make lint # full clang-tidy pass via scripts/lint.sh
make lint-stale # incremental (changed or previously failed files)
make lint-stale-clean # reset incremental cache
make tidy # clang-tidy only, all filesRequires a configured build directory with compile_commands.json (make setup).
make analyze # cppcheck + clang-tidy (scripts/analyze.sh)make security # security-focused clang-tidy + cppcheck rulesmake coverageConfigures a Debug build with BUILD_COVERAGE=ON, runs tests, generates HTML under report/coverage/.
Target: line coverage on src/ must be ≥ 85%. CI enforces this via scripts/coverage-report.sh (MIN_LINE_COVERAGE, default 85). The summary step checks src/ only; the HTML report also includes tests/.
# Local check before a PR
make coverage
# Open report/coverage/index.html
# Temporary lower threshold for experiments only
MIN_LINE_COVERAGE=80 make coveragemake sanitizeDebug build with AddressSanitizer and UndefinedBehaviorSanitizer, then runs the full test suite.
make fuzzer-smokeBuilds fuzz_lua_dsl and runs against committed corpus seeds for FUZZER_TIME seconds (default 30).
make allRuns in order:
buildtestformat-checklintanalyzesecuritycoveragesanitizefuzzer-smoke
Definition of done for features: make all exits zero and line coverage on src/ is at least 85%.
| Goal | Command |
|---|---|
| Quick compile check | make build |
| Fast feedback on one file |
make lint-stale after make build
|
| Format before commit | make format |
| Reproduce CI locally | STRICT_CI=1 ./scripts/ci.sh |
-
Testing - what
test,coverage, andsanitizeexecute - Submitting Changes - CI workflow on GitHub
- Feature Development Workflow - when to run QA during development
Quick Reference · Glossary · FAQ
- Fundamentals
- Core Concepts
- Project Layout
- First Pipeline
- Phases and Scopes
- How Phases and Scopes Work
- Selecting with Phases and Scopes
- Designing Phases and Scopes
- Parallel Execution and Dependencies
- Configuration
- Configuration Overview
- Global User Config
- Project Config
- Environment Variables
- Performance Settings
- Cache Settings
- Config Reference
- CLI
- CLI Overview
- Running Targets
- Filtering by Phase
- Running a Single Step
- Listing Entities
- Output and Logging Flags
- Cache and Maintenance Flags
- Meta and Utility Commands
-
Project Scaffolding —
beez --init(embedded Tempify) - CLI Flag Reference
- Lua DSL
- DSL Overview
- Plugin System — Plugins, Config DSL, Standard-Workflows
- Step Declaration
- Task Declaration
- Workflow Declaration
- Order Declaration
- Configure Step
- ReqPack Declaration
- Beez API
- Step Context
- DSL Patterns
- Caching
- Caching Overview
- Step Cache
- Success Cache
- Glob Metadata Cache
- Artifact Patterns
- Cache Keys and Invalidation
- Cache Storage and Maintenance
- Caching Troubleshooting
- UI and Output
- Output Modes
- Progress and Animation
- Colors and Themes
- Run Summaries
- Logging and Log Files
- Development and Contribution
- Building and Setup
- Repository Layout
- Testing
- Code Quality
- Feature Development Workflow
- Submitting Changes