Laboratorio pratico que acompanha a palestra Pessoas mentem e o codigo nao. O objetivo e reconstruir, com dados do proprio participante, os sinais usados para investigar custo e risco de mudanca:
- contribuicao real de times em repositorios;
- hotspots e fragmentacao de ownership;
- acoplamento de mudanca;
- estrutura estatica de projetos .NET;
- cruzamento entre o que o compilador declara e o que o Git registra.
O laboratorio nao depende do produto Follow the Code. A coleta usa a API do Azure DevOps, comandos Git, Roslyn e Neo4j Community.
O bootcamp pode ser executado de ponta a ponta: descoberta no Azure DevOps, clone temporario, extracao Git e Roslyn na mesma revisao, importacao no Neo4j, metricas, cruzamento estatico-temporal e fitness functions executaveis sobre os relatorios.
- Docker com Docker Compose;
- Git 2.40 ou superior;
- .NET SDK 8 ou superior;
- 4 GB de memoria disponivel para o laboratorio.
-
Crie a configuracao local:
cp .env.example .env
-
Troque
NEO4J_PASSWORDpor uma senha usada somente neste laboratorio. -
Inicie o Neo4j:
docker compose up -d
-
Aguarde o servico ficar saudavel e crie o schema:
./scripts/bootstrap-schema.sh
-
Abra http://localhost:7474 e conecte com:
- usuario:
neo4j - senha: a definida no arquivo
.env
- usuario:
| Modulo | Resultado |
|---|---|
| 00 | Subir o Neo4j e conhecer o contrato do grafo |
| 01 | Descobrir repositorios no Azure DevOps ou numa pasta local |
| 02 | Extrair commits, autores e arquivos com Git |
| 03 | Importar o historico no Neo4j de forma idempotente |
| 04 | Encontrar hotspots, ownership e acoplamento de mudanca |
| 05 | Extrair e importar tipos e dependencias .NET com Roslyn |
| 06 | Cruzar estrutura estatica com o historico |
| 07 | Transformar achados em fitness functions |
Comece por docs/bootcamp/00-neo4j.md. Para testar imediatamente a coleta, siga os modulos 01 e 02. O modulo 03 leva o historico ao Neo4j. O modulo 04 transforma esse historico nas tres lentes da palestra. O modulo 05 acrescenta a estrutura que o compilador enxerga. O modulo 06 cruza as duas coordenadas sem misturar revisoes diferentes. O modulo 07 transforma uma hipotese aprovada em um gate versionavel para CI.
Para coletar um repositorio privado sem preservá-lo na maquina, use
scripts/collect-repository.sh. O fluxo normal e clone temporario, extracao e
limpeza garantida.
- Nunca grave PATs, senhas ou tokens em argumentos, codigo ou arquivos versionados.
.env, clones locais, dados brutos e relatorios gerados estao no.gitignore.- Use uma conta de leitura e um PAT com o menor escopo possivel.
- Revise os dados antes de publicar screenshots ou resultados.
- Os exemplos publicados neste repositorio serao sinteticos.
Leia SECURITY.md antes de conectar uma organizacao real.
Copyright © 2026 EximiaCo. Este repositorio e disponibilizado como source available sob a PolyForm Internal Use License 1.0.0.
A licenca permite usar e modificar o laboratorio para operacoes internas da sua
empresa. Ela nao permite distribuir o software, sublicenciar ou transferir os
direitos recebidos. Outros usos exigem uma licenca separada da EximiaCo. Consulte
tambem o aviso de copyright. Em caso de divergencia, o texto do
arquivo LICENSE prevalece.