Skip to content

file_starts_with

Byte-level prefix / suffix check. Works on any bytes (binary safe, unlike file_header).

Check-only: a fix would risk silently duplicating a near-matching prefix. Pair with file_prepend / file_append explicitly if you want auto-repair.

OptionTypeRequiredDefaultDescription
prefixstringyesRequired prefix, matched byte-for-byte.

Plus the common paths, level, id, and when fields. This table is generated from the JSON Schema; option types and defaults are authoritative.

The rule fires on this repository:

src/
src/no_header.rs
src/ok.rs
src/wrong_spdx.rs
src/no_header.rs
fn x() {}
src/ok.rs
// SPDX-License-Identifier: MIT
fn main() {}
src/wrong_spdx.rs
// SPDX-License-Identifier: GPL-3.0
fn y() {}

With this .alint.yml:

version: 1
rules:
- id: spdx-header
kind: file_starts_with
paths: "src/**/*.rs"
prefix: "// SPDX-License-Identifier: MIT\n"
level: error

alint check reports:

Terminal window
--- src/no_header.rs -----------------------------------------------------------
x error spdx-header
1:1 file does not start with the required prefix
--- src/wrong_spdx.rs ----------------------------------------------------------
x error spdx-header
1:1 file does not start with the required prefix
Summary (2 violations):
x 2 errors
0 passing * 1 failing

This repository is compliant:

src/
src/a.rs
src/b.rs
src/a.rs
// SPDX-License-Identifier: MIT
fn main() {}
src/b.rs
// SPDX-License-Identifier: MIT
fn x() {}

With this .alint.yml:

version: 1
rules:
- id: spdx-header
kind: file_starts_with
paths: "src/**/*.rs"
prefix: "// SPDX-License-Identifier: MIT\n"
level: error

alint check reports:

Terminal window
v All 1 rule(s) passed.