AmisDEX / solidity-metrics

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Solidity metrics

This project is a static analysis based metric calculator tool for Solidity smart contract programs. It is a Work In Progress, supporting the following metrics

Parameter Description Data Type
Address The smart cotract Address on the ethereum blockchain address (20 bytes)
CV Compiler Version String
FS The First time the smart contract has been Seen on the blockchain Date
LS The Last time the smart contract has been Seen on the blockchain Date
NA Number of Asserts Number
NC Number of contracts Number
NCL Number of Comment Lines Number
NF Number of Functions Number
NFM Number of function modifiers Number
NM Number of Mapping types Number
NP Number of modifier Payable Number
NRq Number of requires Number
NRv Number of reverts Number
NSCL Number of Source Code Lines Number
McCC McCabe’s cyclomatic complexity Number

User instructions

Download and compute the metrics

cd examples
python3 smartcontracs-from-etherscan.py
python3 metrics-from-solmet.py
python3 join_metrics.py

Data Analysis with Pandas and Python

cd examples
jupyter notebook &
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.read_csv('solmetant.csv', sep=';')
df.sort_values(by=['CV'], inplace=True)
df.head()

plt.figure(figsize=(20,5))
sns.swarmplot(x = 'CV',y='SLOC',data=df, size=5)
plt.show()

Credits

The parser is based on the excellent antlr4 grammar available at https://github.com/solidityj/solidity-antlr4.

About


Languages

Language:Java 100.0%