Skip to content

Latest commit

 

History

History
141 lines (108 loc) · 7.75 KB

README.md

File metadata and controls

141 lines (108 loc) · 7.75 KB


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. Avviso
  2. Informazioni sul Progetto
  3. Guida all'utilizzo
  4. Licenza
  5. Bibliografia

Avviso

Successivamente alla laurea, il progetto ha subito cambiamente e miglioramenti, perciò quanto descritto nell'elaborato della tesi potrebbe non rispecchiare più attendibile.

Per visionare il progetto nella forma descritta nell'elaborato della tesi e la tesi stessa, fare riferimento al branch frozen, clicca qui .

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 o cartella contenente del codice sorgente Solidity.
Nel caso venga fornita una directory verrà eseguità la modalità batch che salverà tutti i risultati ottenuti in un'unico file.
-d, --descriptor Un parametro opzionale per l’operazione analyze che rappresenta la path, assoluta o relativa, del file o cartella contenente i Design Pattern Descriptor.
Se omesso verra 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 determina il controllo di compatibilita della versione di Solidity utilizzata nel file fornito.
Accetta come valori: ask, skip, always.
Default: ask, chiede conferma.
-p, --plot Un parametro opzionale che determina la visualizzazione di un grafico riassuntivo.
Accetta come valori: ask, skip, always.
Default: ask, chiede conferma.
-pr, --print-result Un parametro opzionale che, se fornito, farà stampare sul terminale un riassunto dei risultati ottenuti dall'analisi.
-wr, --write-result Un parametro opzionale che determina il salvataggio su disco dei risultati ottenuti dall'analisi dei singoli file.
Accetta come valori: ask, skip, always.
Default: ask, chiede conferma.
-fr, --format-result Un parametro opzionale che determina il formato con cui i dati ottenuti vengono salvati.
Accetta come valori: json, csv.
Default: json.
--debug-analysis Un parametro opzionale che, se fornito, farà eseguire un analisi di debug sull'AST.

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 --print-result --write-result always --plot always

(back to top)

Licenza

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

(back to top)

Bibliografia

(back to top)