Source review · Revisão de código
English · Português · Guided tour / Visita guiada · Validation / Validação
EN: Can each review finding be traced to its exact source span?
PT: Cada achado pode ser rastreado até seu intervalo no código?
| Goal · Objetivo | Where to go · Por onde começar |
|---|---|
| Understand a real example · Entender um exemplo concreto | Walkthrough / Roteiro |
| Reproduce and compare · Reproduzir e comparar | Evidence tour / Visita às evidências |
| Inspect the checks · Inspecionar as verificações | Validation record / Registro de validação · CI |
Example result · Resultado do exemplo: The synthetic Solidity example returns arithmetic and timestamp review points; each span maps back to the input source. / O exemplo Solidity fictício devolve pontos de revisão aritmética e temporal; cada intervalo corresponde ao código de entrada.
Try a comparison · Experimente uma comparação
EN: Compare arithmetic in code with similar text inside comments or strings; review compiler context.
PT: Compare aritmética no código com texto similar em comentários ou strings; revise o contexto do compilador.
A lightweight source scanner that identifies review points in Solidity code and returns bilingual explanations with exact source locations.
- Masks comments and string literals while preserving character offsets and line breaks.
- Reports each matched occurrence with rule ID, line, column and source evidence.
- Offers a Flask JSON endpoint with source-type and size validation.
Requirements: Python 3.12 / Python 3.12.
Run from the repository root. The validation environment installs the components exercised by the tests and documented example; optional integrations may need their separate dependencies.
python -m venv .venv
# Activate .venv for your shell / Ative .venv no seu terminal
python -m pip install -r requirements-validation.txt
python -m pytest -q
python -m examples.review_demoInput contract / Contrato de entrada: POST /api/analyze with / com { "code": "..." }; 1–100000 source characters / caracteres.
Expected behavior / Comportamento esperado: The synthetic Solidity example returns arithmetic and timestamp review points; each span maps back to the input source. / O exemplo Solidity fictício devolve pontos de revisão aritmética e temporal; cada intervalo corresponde ao código de entrada.
flowchart LR
A["Solidity source / Código Solidity"]
B["Comment and string masking / Máscara de comentários e strings"]
C["Heuristic rules / Regras heurísticas"]
D["Bilingual located findings / Resultados bilíngues localizados"]
A --> B --> C --> D
The main path can be followed in src/app.py. Examples call the actual implementation and include assertions; they are not pseudocode.
Findings are review prompts, not confirmed vulnerabilities. No match does not establish safety. This scanner does not compile Solidity, resolve inheritance, inspect bytecode or prove exploitability. The legacy vulnerability field is retained for API compatibility; classification is review_required.
Reduced comment/string false positives, added occurrence-level evidence and explained arithmetic in its compiler context instead of treating absence of SafeMath as proof.
Analisador leve que identifica pontos de revisão em código Solidity e devolve explicações bilíngues com localização exata no arquivo.
- Mascara comentários e strings preservando offsets de caracteres e quebras de linha.
- Relata cada ocorrência com identificador de regra, linha, coluna e trecho de origem.
- Oferece endpoint JSON Flask com validação do tipo e tamanho do código recebido.
Use os comandos da seção acima a partir da raiz do repositório. Requisitos: Python 3.12 / Python 3.12. O ambiente de validação instala os componentes exercitados pelos testes e pelo exemplo documentado; integrações opcionais podem exigir dependências próprias.
O fluxo principal está em src/app.py. Os exemplos usam a implementação real e verificam resultados com asserções; não são pseudocódigo. O diagrama apresenta os mesmos passos nos dois idiomas.
Resultados orientam revisão e não são vulnerabilidades confirmadas. Ausência de correspondências não comprova segurança. O analisador não compila Solidity, resolve herança, inspeciona bytecode ou prova exploração. O campo legado vulnerability foi preservado por compatibilidade; classification indica review_required.
Reduzidos falsos positivos em comentários e strings, adicionada evidência por ocorrência e explicada aritmética no contexto do compilador, sem tratar ausência de SafeMath como prova.
python -m src.app| Location / Local | Purpose / Finalidade |
|---|---|
| Implementation / Implementação | Main domain behavior / Comportamento principal do domínio |
| Example / Exemplo | Executable scenario / Cenário executável |
| Tests / Testes | Normal behavior and failure cases / Fluxos válidos e casos de falha |
| Validation notes / Notas de validação | Corrections, evidence and boundaries / Correções, evidências e limites |
| Workflow / Automação | Automated checks / Verificações automatizadas |
EN: When changing behavior, update the contract, the worked example and a regression test together. Keep synthetic fixtures separate from real data. A passing test suite demonstrates the listed software behaviors; it does not certify a deployment or domain outcome.
PT: Ao alterar comportamento, atualize em conjunto o contrato, o exemplo e um teste de regressão. Separe amostras fictícias de dados reais. Testes aprovados demonstram os comportamentos de software listados; não certificam implantação nem resultado no domínio.
Author / Autor: Gabriel Demetrios Lafis · Institutional contact / Contato institucional
License / Licença: repository license.
Reference / Referência: Solidity control structures and checked arithmetic.