spdx-license-headers
Sørg for at hver kildefil deklarerer lisensen sin med en maskinlesbar SPDX-identifikator.
Regeldetaljer
Section titled “Regeldetaljer”Åpen kildekode-prosjekter drar nytte av lisensdeklarasjoner per fil — de overlever filutpakking, bunting og kopier-og-lim-scenarier der rot-LICENSE-filen ikke er til stede. Denne regelen verifiserer at hver TypeScript-kildefil starter med standard SPDX-hodekommentar.
Eksempler på feil kode
Section titled “Eksempler på feil kode”import { join } from "node:path";
export function resolvePath(base: string, rel: string): string { return join(base, rel);}Filen mangler SPDX-lisensidentifikator-hodet.
Eksempler på riktig kode
Section titled “Eksempler på riktig kode”// SPDX-License-Identifier: Apache-2.0// Copyright 2026 Archgateimport { join } from "node:path";
export function resolvePath(base: string, rel: string): string { return join(base, rel);}For filer med en shebang:
#!/usr/bin/env bun// SPDX-License-Identifier: Apache-2.0// Copyright 2026 Archgateimport { Command } from "commander";Regelimplementasjon
Section titled “Regelimplementasjon”/// <reference path="../rules.d.ts" />
export default { rules: { "spdx-header-present": { description: "All TypeScript source files must have an SPDX-License-Identifier header", async check(ctx) { const results = await Promise.all( ctx.scopedFiles.map(async (file) => { const content = await ctx.readFile(file); return { file, content }; }) );
for (const { file, content } of results) { if (content === null) continue;
// Check first 5 lines for the SPDX identifier (allows for shebang) const lines = content.split("\n").slice(0, 5); const hasSpdx = lines.some((line) => line.includes("SPDX-License-Identifier: Apache-2.0") );
if (!hasSpdx) { ctx.report.violation({ message: "Missing SPDX-License-Identifier header.", file, line: 1, fix: 'Add "// SPDX-License-Identifier: Apache-2.0" as the first line of the file', }); } } }, }, },} satisfies RuleSet;Tilpasning
Section titled “Tilpasning”- Endre lisensen: Erstatt
Apache-2.0med prosjektets SPDX-identifikator (f.eks.MIT,BSD-3-Clause) - Endre omfanget: Juster
files-glob-en i ADR-frontmatteren for å samsvare med kildekatalogene dine - Legg til opphavsrettssjekk: Utvid regelen til også å verifisere opphavsrettslinje-formatet
Når du bør bruke den
Section titled “Når du bør bruke den”Når prosjektet ditt er åpen kildekode og du ønsker entydige lisensdeklarasjoner per fil som gjenkjennes av samsvarsskannere (FOSSA, Snyk, Black Duck, npm license-checker).
Når du ikke bør bruke den
Section titled “Når du ikke bør bruke den”I proprietære/lukkede prosjekter der alle filer implisitt er “alle rettigheter forbeholdt”, eller når organisasjonen din bruker en annen lisensdeklarasjonsmekanisme som REUSE 3.0 .dep5-filer.