HOVEL // module 01.17
Module 01.17 Payload provider / Integrated

Formatting and Linting

Run quality workflows through Task from the repository root. The underlying formatters, linters, Python runtime, and C toolchain are pinned Bazel inputs; no Picblobs virtual environment or host linter installation is required.

# Apply formatting
task picblobs:fmt

# Read-only formatting and Python/Bazel lint checks
task picblobs:fmt-check
task picblobs:lint-check

# Full Picblobs CI gate
task picblobs:ci

# Optional C static analysis target
task --dir modules/picblobs lint:c

Optional repository hooks can be installed with task hooks:install. They call Task-backed checks rather than exposing the underlying tool commands.

Formatters and linters

Language Tool Configuration
C/H files clang-format modules/picblobs/.clang-format
C/H files clang-tidy modules/picblobs/.clang-tidy and Bazel lint aspects
Python Ruff formatter and linter modules/picblobs/ruff.toml
C and Python Lizard complexity checks modules/picblobs/tools/lint.py and modules/picblobs/tools/lizard_baseline.txt

Complexity

# Check the complete declared source set
task picblobs:lint-check

# Run the lint materializer and forward an explicit source selection
task picblobs:lint -- src/payload/hello.c python/tests/test_python_api.py

The Bazel-managed lint target runs Lizard with a maximum cyclomatic complexity number (CCN) of 10. Its declared input set excludes build artifacts, virtual environments, and generated output trees. Explicit Picblobs-relative paths forwarded after -- narrow the materializer to those sources without bypassing the Task/Bazel toolchain.