Pular para o conteúdo

Validar

Terminal window
cfour check
Reserva de Salas (reservas)
11 elementos · 8 relações · 3 diagramas · 1 fluxos
0 erro(s), 0 aviso(s)

Ele carrega a modelagem inteira e relata tudo o que encontrou. Sai com código 1 quando há erro, e 0 quando há apenas avisos.

A diferença é uma só: erro significa que o modelo está errado; aviso significa que ele está incompleto ou provavelmente não é o que você quis.

Um modelo com erro não é publicadocfour push recusa. Um modelo com aviso publica normalmente.

YAML inválidoo arquivo não é lido
elemento sem id, ou com identificador inválido
dois elementos com o mesmo identificador no mesmo projeto
parent, from, to, scope, subject, target ou um seletor ref apontando para caixa inexistente
um ciclo de contençãoos membros são tratados como raiz
um elemento que é pai de si mesmo
relação sem from ou sem to
nota sem texto, ou apontando para diagrama inexistente
diagrama ou fluxo duplicado, ou com identificador inválido
um fluxo cujo identificador já é de um diagramaos dois dividem o mesmo espaço de nomes
passo de fluxo sem to, ou sem from e sem passo anterior
caminho de fluxo desviando de um passo inexistente
relations: com uma forma que o formato não conhece
groupBy: tag:<prefixo>não existe — veja Grupos
bind malformado, ou com ref não qualificado
forma, tipo de seta, tipo de nota ou desfecho desconhecidodesenha neutro
level: declarado que discorda da árvorea árvore vence
uma caixa com filhos e nenhum diagrama que a detalheaquele conteúdo é inalcançável no leitor
um diagrama que não desenha nenhuma caixanenhum seletor casou
um passo de fluxo usando uma seta não declaradao fluxo encontrou um buraco na estrutura
um participante de fluxo que não aparece em passo nenhum
relations: citando um identificador de seta que não existe
uma nota sem target e sem scopenão aparece em lugar nenhum
um elemento com bind que tem filhosum espelho não tem interior
um documento fora de um projetoignorado
um kind: desconhecidodocumento ignorado

Os dois avisos em negrito são os que mais evitam surpresa no navegador: eles existem porque o leitor nunca inventa uma visão, e porque um desenho vazio carrega sem reclamar.

Terminal window
cfour check --modelagem portaria # outra modelagem
cfour check --all # todas as do registro, e confere os espelhos
cfour check --root ./caminho/model # uma árvore avulsa, ignorando o registro
cfour check --json # saída estruturada
cfour check --inventory # + o inventário do modelo (implica --json)

--all é o único modo em que as duas pontas de um bind se encontram: ele carrega todas as modelagens juntas e confere se o alvo de cada espelho existe — como aviso, porque a outra modelagem tem outro dono.

.github/workflows/arquitetura.yml
name: arquitetura
on: [push, pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm install -g cfour-cli
- run: cfour check --all

Como o comando sai com código 1 em erro, isso já reprova o pull request que quebrar o modelo. Para publicar no mesmo fluxo, veja Publicar a partir do CI.

Cada mensagem diz o arquivo e o campo. As causas mais comuns, com o que fazer em cada uma, estão em Quando algo dá errado.