Skip to content

LightDestory/SolidityDesignPatternAnalyzer

 
 

Repository files navigation


Preview

Solidity Design Pattern Analyzer

Un utility per il riconoscimento di design pattern su blockchain tramite analisi statica del codice

This README is available in the following languages:
Italian · English

Tabella dei Contenuti
  1. Informazioni sul Progetto
  2. Guida all'utilizzo
  3. Licenza
  4. Bibliografia

Informazioni sul Progetto

Solidity Design Pattern Analyzer è un applicativo software sviluppato per la mia tesi di laurea per il CdL Triennale in Informatica presso l'Università degli Studi di Catania.

L’applicativo software e in grado di eseguire le seguenti operazioni:

  • Rilevare, nei limiti linguistici e delle dipendenze utilizzate, tutti e ventidue i design pattern documentati nella tesi, i cui relativi descriptor sono inclusi nel codice sorgente, ed e possibile, mediante la combinazione di controlli generici, definire nuovi descriptor per riconoscere design pattern futuri;
  • Descrivere uno smart-contract, ovvero estrarre le informazioni utili a creare un nuovo descriptor;

(back to top)

Basato su

(back to top)

Guida all'utilizzo

Prima di utilizzare l'applicativo è necessario installare le dipendenze.

Prerequisiti

Per installare le dipendeze puoi usare il package installer di python denominato pip:

  • Come pacchetti globali:
    pip install -r requirements.txt
  • Tramite ambiente virtuale:
    python3 -m venv /path/to/new/virtual/environment
    source /path/to/new/virtual/environment/bin/activate
    pip install -r requirements.txt

Come usarlo

Per utilizzare Analyzer e necessario fornire una serie di parametri, qui elencati:

Parametro Descrizione
-h, --help Un parametro opzionale che, se fornito, fara stampare una guida sull’utilizzo nel terminale
-a, --action Un parametro obbligatorio che accetta soltanto i valori analyze e describe, a seconda dell’operazione che si vuole eseguire.
-t, --target Un parametro obbligatorio che rappresenta la path, assoluta o relativa, del file contenente del codice sorgente Solidity.
-d, --descriptor Un parametro obbligatorio per l’operazione analyze che rappresenta la path, assoluta o relativa, del file o cartella contenente i Design Pattern Descriptor. Se omesso verrà usato un path predefinito.
-v, --verbose Un parametro opzionale che, se fornito, fara stampare nel terminale i log di debug, normalmente non visualizzati.
-ai, --allow-incompatible Un parametro opzionale che, se fornito, fara ignorare il controllo di compatibilita della versione di Solidity utilizzata nel file fornito.
-ap, --auto-plot Un parametro opzionale che, se fornito, fara visualizzare automaticamente il grafico dei risultati della ricerca dei design pattern.

Per esempio, volendo analizzare uno smart-contract al fine di individuare l’utilizzo dell’Ownership pattern e necessario eseguire il comando:

python analyzer.py -a analyze -t ./source_code.sol -d ./Ownership_descriptor.json

(back to top)

Licenza

Il software è rilasciato sotto licenza MIT. Visionare LICENSE per maggiori informazioni.

(back to top)

Bibliografia

(back to top)

About

A tool for design pattern recognition on blockchain through static code analysis

Topics

Resources

License

Stars

Watchers

Forks

Contributors