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 CPF
Valide CPFs instantaneamente pelo algoritmo oficial da Receita Federal, sem enviar dados para nenhum servidor. Gratuito e sem cadastro.
Validador de CPF em Lote
Valida uma lista de CPFs (um por linha) e mostra quais são válidos e quais são inválidos. Sem envio para servidores.
Validador de CNPJ em Lote
Valida uma lista de CNPJs (um por linha) e mostra resumo: válidos, inválidos e total. Sem envio para servidores.