Validador de Expressão SPDX
Valide expressões SPDX de licença ("(MIT OR Apache-2.0) AND BSD-3-Clause") com parser oficial, útil para package.json e Cargo.toml.
Operadores suportados: AND, OR, WITH, +, ( ). Útil para license em package.json e Cargo.toml.
Expressões de licença SPDX explicadas
Uma expressão de licença SPDX é uma pequena linguagem legível por máquina para declarar exatamente qual licença open-source (ou combinação de licenças) se aplica a um software. Ela aparece no campo license do package.json, em manifestos do Cargo, em Software Bills of Materials (SBOMs) e em cabeçalhos compatíveis com o REUSE. Validar uma expressão significa checar duas coisas: a gramática (operadores e parênteses) e os identificadores (são entradas reais da SPDX License List?).
Identificadores e operadores
Uma expressão simples é um único id de licença da SPDX License List, como MIT, Apache-2.0, GPL-3.0-or-later ou BSD-3-Clause. Os identificadores diferenciam maiúsculas de minúsculas, e os operadores que os combinam são escritos em maiúsculas:
AND— ambas as licenças se aplicam (ex.:MIT AND BSD-3-Clause).OR— o destinatário pode escolher qualquer uma (ex.:MIT OR Apache-2.0).WITH— anexa uma exceção de licença (ex.:GPL-2.0-or-later WITH Classpath-exception-2.0).- Parênteses agrupam subexpressões:
(MIT OR Apache-2.0) AND BSD-3-Clause.
Para licenças que não estão na lista oficial, use o prefixo LicenseRef- (ex.: LicenseRef-minha-licenca-proprietaria) para referenciar uma licença definida em outro ponto do documento.
O operador + obsoleto
Um + no final (como em GPL-2.0+) já significou "esta versão ou qualquer versão posterior". Hoje ele está obsoleto em favor dos identificadores explícitos -or-later, como GPL-2.0-or-later, que são mais claros e evitam ambiguidade. Prefira a forma nova em qualquer metadado novo que você escrever.
Pegadinhas comuns
- Escrever os operadores em minúsculas (
mit or apache-2.0) — os operadores devem ser maiúsculos. - Errar a caixa do identificador: é
Apache-2.0, nãoapache-2.0nemAPACHE-2.0. - Usar o nome da licença em vez do id SPDX (ex.: "GPLv3" no lugar de
GPL-3.0-or-later). - Depender do
+obsoleto em vez de-or-later. - Esquecer que
WITHrecebe um id de exceção, não outro id de licença.
FAQ
MIT OR Apache-2.0 é uma licença dupla? Sim — OR significa que quem recebe pode escolher qual das duas licenças prefere usar. Já o AND exigiria cumprir ambas.
Por que minha expressão falha se a gramática parece correta? Provavelmente o identificador não é reconhecido. A validação também confere cada id contra a SPDX License List, então um erro de digitação ou um nome antigo/customizado sem o prefixo LicenseRef- será rejeitado.
Como declaro uma licença proprietária? Use o prefixo LicenseRef-, por exemplo LicenseRef-Acme-EULA, e defina o texto da licença no documento ou SBOM que a acompanha.
Ferramentas Relacionadas
Validador de Cron Expression
Valida uma expressão cron (5 ou 6 campos) e indica qual campo está incorreto. Aceita listas, ranges e steps.
Validador de Licença SPDX
Valida identificadores SPDX (MIT, Apache-2.0, GPL-3.0-only, CC-BY-4.0, …) contra a lista oficial reduzida (~150 entradas).
Validador de Porta TCP/UDP
Valida se um número é uma porta TCP/UDP válida (0–65535) e classifica como well-known (0–1023), registered (1024–49151) ou dinâmica (49152–65535).