Static Analyzer for Solidity
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
slither/utils/similarity/train.py

39 lines
1.1 KiB

import argparse
import logging
import sys
import traceback
import operator
from fastText import train_unsupervised
from .encode import encode_contract, load_contracts
6 years ago
logger = logging.getLogger("Slither-simil")
def train(args):
try:
model_filename = args.model
solc = args.solc
dirname = args.input
6 years ago
ext = args.filter
if dirname is None:
6 years ago
logger.error('The train mode requires the input parameter.')
sys.exit(-1)
6 years ago
contracts = load_contracts(dirname, ext=ext, nsamples=None)
with open("data.txt", 'w') as f:
for contract in contracts:
for function,ir in encode_contract(contract,solc).items():
if ir != []:
f.write(" ".join(ir)+"\n")
model = train_unsupervised(input='data.txt', model='skipgram')
model.save_model(model_filename)
print(model.get_words())
except Exception:
logger.error('Error in %s' % args.filename)
logger.error(traceback.format_exc())
sys.exit(-1)