Skip to content
GitHub

bino lint

bino lint validates your report manifests against the schema and runs content lint rules without executing queries or generating PDFs. This is useful for quick validation during development or in CI pipelines.

bino lint [flags]

Common flags:

  • --work-dir – report bundle directory (default: .).
  • --out-dir – output directory for lint logs (default: dist).
  • --lint-log-format – lint log file format: text (default) or json.
  • --execute-queries – execute dataset queries and validate data (slower but catches data issues).
  • --fail-on-warnings – exit with non-zero code if any warnings are found (useful for CI).

No lint finding fails the command on its own, whatever severity it reports — only a rule you re-grade to "error" in bino.toml does, see Lint rules.

Lint all manifests in the current directory:

bino lint

Lint a specific project:

bino lint --work-dir ./reports

Output JSON log for CI integration:

bino lint --lint-log-format json

Execute queries and validate data:

bino lint --execute-queries

By default, bino lint only validates manifest structure without executing queries. When you need to validate actual data, use the --execute-queries flag:

bino lint --execute-queries

This will:

  1. Execute all DataSet queries
  2. Validate query results against the DataSet schema
  3. Report data validation warnings alongside lint findings

Data validation checks include:

  • Type validation (strings vs numbers)
  • Enum validation (operation must be "+" or "-")
  • Date format validation (ISO 8601)
  • Dependent required fields (e.g., rowGroup requires rowGroupIndex)

Note: --execute-queries is slower than regular lint because it runs actual queries. Use it when you need to verify data correctness, not just manifest structure.

bino lint exits with code 0 unless one of the following holds. The command checks them in this order:

ConditionSuppressible via [lint]?
The engine-version pin is incompatible with this CLIYes — disable = ["engine-version-incompatible"] turns the check off
Manifests failed to load or failed schema validationNo — disable hides the individual lines, the command still fails
A rule you raised with [lint.severity] to "error" produced a findingn/a — this is the opt-in
--fail-on-warnings and any remaining finding or data validation warningFindings you lowered to "info" do not count

The [lint] table lives in bino.toml; see Lint rules for the full semantics. Without that table, nothing but the first two rows and --fail-on-warnings can fail the command, exactly as before. bino build is not affected by [lint] at all: it prints the findings that survive disable, but no finding has ever failed a build.

Use --fail-on-warnings to exit with code 1 if any warnings are found:

# CI-friendly: fail if there are any lint or data validation warnings
bino lint --execute-queries --fail-on-warnings

By default:

  • bino build runs lint rules automatically. Use --no-lint to skip.
  • bino preview does not run lint rules. Use --lint to enable.
  • Lint rules – reference of all available lint rules.
  • bino build – build reports (includes lint by default).
  • bino preview – preview reports with optional lint.