[M] Isolate variables

This commit is contained in:
Azalea (on HyDEV-Daisy)
2022-05-08 22:55:56 -04:00
parent 5ab2d6f582
commit 335e7db31f
4 changed files with 88 additions and 63 deletions
+7
View File
@@ -15,3 +15,10 @@ gen.jdt/src/main/java/edu/lu/uni/serval/gumtree/GumTreeTester.java
*.pyc *.pyc
app.log app.log
*.rdb *.rdb
# Gradle temporary files
.gradle
gradlew
gradlew.bat
gradle
+17 -22
View File
@@ -1,60 +1,55 @@
from common.commons import * from common.commons import *
from commitCollector import * from commitCollector import *
DATA_PATH = os.environ["DATA_PATH"] from python.settings import *
COMMIT_DFS = os.environ["COMMIT_DFS"]
# DATASET_PATH = '/Users/anilkoyuncu/projects/datasets'
REPO_PATH = os.environ["REPO_PATH"]
DATASET_PATH = os.environ["REPO_PATH"]
DATASET = os.environ["dataset"]
ROOT = os.environ["ROOT_DIR"]
PROJECT_LIST = os.environ["PROJECT_LIST"]
from otherDatasets import markBugFixingPatches from otherDatasets import markBugFixingPatches
DATASET_PATH = REPO_PATH
DATASET = os.environ["dataset"]
PROJECT_LIST = os.environ["PROJECT_LIST"]
def createDS(): def createDS():
pjList = PROJECT_LIST.split(',') pjList = PROJECT_LIST.split(',')
if not os.path.exists(DATASET_PATH): if not os.path.exists(DATASET_PATH):
os.mkdir(DATASET_PATH) os.mkdir(DATASET_PATH)
if not os.path.exists(COMMIT_DFS): if not os.path.exists(COMMIT_DFS):
os.mkdir(COMMIT_DFS) os.mkdir(COMMIT_DFS)
subjects = pd.read_csv(join(ROOT,'data', 'dataset.csv')) subjects = pd.read_csv(join(ROOT_DIR, 'data', 'dataset.csv'))
if pjList == ['ALL']: if pjList == ['ALL']:
tuples = subjects[['Repo','GitRepo','Branch']].values.tolist() tuples = subjects[['Repo', 'GitRepo', 'Branch']].values.tolist()
else: else:
# repos = subjects.query("Subject == '{0}'".format(subject)).Repo.tolist() # repos = subjects.query("Subject == '{0}'".format(subject)).Repo.tolist()
tuples = subjects[subjects.Repo.isin(pjList)][['Repo', 'GitRepo','Branch']].values.tolist() tuples = subjects[subjects.Repo.isin(pjList)][['Repo', 'GitRepo', 'Branch']].values.tolist()
for t in tuples: for t in tuples:
repo,src,branch = t repo, src, branch = t
logging.info(repo) logging.info(repo)
if isfile(join(COMMIT_DFS,repo+'Fix.pickle')): if isfile(join(COMMIT_DFS, repo + 'Fix.pickle')):
commits = load_zipped_pickle(join(COMMIT_DFS,repo+'Fix.pickle')) commits = load_zipped_pickle(join(COMMIT_DFS, repo + 'Fix.pickle'))
else: else:
cmd = 'git config --global http.postBuffer 157286400' cmd = 'git config --global http.postBuffer 157286400'
shellCallTemplate(cmd) shellCallTemplate(cmd)
cmd = 'git -C ' + DATASET_PATH + ' clone ' + src cmd = 'git -C ' + DATASET_PATH + ' clone ' + src
shellCallTemplate(cmd) shellCallTemplate(cmd)
logging.info(repo) logging.info(repo)
getCommitFromRepo(join(REPO_PATH, repo), join(COMMIT_DFS, repo),branch) getCommitFromRepo(join(REPO_PATH, repo), join(COMMIT_DFS, repo), branch)
rDF = makeDF(join(COMMIT_DFS,repo + '.commits')) rDF = makeDF(join(COMMIT_DFS, repo + '.commits'))
save_zipped_pickle(rDF, join(COMMIT_DFS, repo + ".pickle")) save_zipped_pickle(rDF, join(COMMIT_DFS, repo + ".pickle"))
# return rDF # return rDF
commits = rDF commits = rDF
commits = markBugFixingPatches(commits,repo) commits = markBugFixingPatches(commits, repo)
commits = commits[commits.files.apply(lambda x: np.any([i == 'M' for i in x.values()]))] commits = commits[commits.files.apply(lambda x: np.any([i == 'M' for i in x.values()]))]
# keep only commits that are changing c files (.c) # keep only commits that are changing c files (.c)
commits = commits[commits.files.apply(lambda x: np.all([i.endswith('.java') for i in x.keys()]))] commits = commits[commits.files.apply(lambda x: np.all([i.endswith('.java') for i in x.keys()]))]
#not a revert commit # not a revert commit
# commits = commits[~commits.log.apply(lambda x: x.startswith('Revert'))] # commits = commits[~commits.log.apply(lambda x: x.startswith('Revert'))]
# commits = commits[commits.files.apply(lambda x: len(x) == 1)] # commits = commits[commits.files.apply(lambda x: len(x) == 1)]
# commits['cocci'] = commits.log.apply(lambda x: True if re.search('cocci|coccinelle', x) else False) # commits['cocci'] = commits.log.apply(lambda x: True if re.search('cocci|coccinelle', x) else False)
# coccis = commits[commits.cocci].commit.values.tolist() # coccis = commits[commits.cocci].commit.values.tolist()
fixes = commits[commits.fixes.str.len()!=0].commit.values.tolist() fixes = commits[commits.fixes.str.len() != 0].commit.values.tolist()
# links = commits[commits.links.str.len()!=0].commit.values.tolist() # links = commits[commits.links.str.len()!=0].commit.values.tolist()
# bugs = set(fixes).union(links).union(coccis) # bugs = set(fixes).union(links).union(coccis)
@@ -63,7 +58,7 @@ def createDS():
print(len(commits)) print(len(commits))
# for s in a.commit.values.tolist(): # for s in a.commit.values.tolist():
from otherDatasets import prepareFiles from otherDatasets import prepareFiles
parallelRun(prepareFiles,commits[['commit','files']].values.tolist(),repo) parallelRun(prepareFiles, commits[['commit', 'files']].values.tolist(), repo)
# # if job == 'clone': # # if job == 'clone':
# for repo,src in subjects[['Repo','GitRepo']].values.tolist(): # for repo,src in subjects[['Repo','GitRepo']].values.tolist():
+49 -40
View File
@@ -1,70 +1,60 @@
from common.commons import * from common.commons import *
from python.settings import *
if __name__ == '__main__': if __name__ == '__main__':
try: try:
args = getRun() args = getRun()
setLogg() setLogg()
setEnv(args) setEnv(args)
job = args.job job = args.job
# job = "cluster" # job = "cluster"
ROOT_DIR = os.environ["ROOT_DIR"]
REPO_PATH = os.environ["REPO_PATH"]
CODE_PATH = os.environ["CODE_PATH"]
DATA_PATH = os.environ["DATA_PATH"]
COMMIT_DFS = os.environ["COMMIT_DFS"]
BUG_POINT = os.environ["BUG_POINT"]
COMMIT_FOLDER = os.environ["COMMIT_FOLDER"]
FEATURE_DIR = os.environ["FEATURE_DIR"]
DATASET_DIR = os.environ["DATASET_DIR"]
PROJECT_TYPE = os.environ["PROJECT_TYPE"]
REDIS_PORT = os.environ["REDIS_PORT"]
jdk8 = os.environ["JDK8"]
pd.options.mode.chained_assignment = None pd.options.mode.chained_assignment = None
# subject = 'ALL' # subject = 'ALL'
# rootType = 'if' # rootType = 'if'
print(job) print(job)
if job == 'dataset4j': if job == 'dataset4j':
from javaDS import createDS from javaDS import createDS
createDS() createDS()
elif job =='dataset4c': elif job == 'dataset4c':
from otherDatasets import core from otherDatasets import core
core() core()
elif job =='richedit': elif job == 'richedit':
dbDir = join(DATA_PATH, 'redis') dbDir = join(DATA_PATH, 'redis')
stopDB(dbDir, REDIS_PORT) stopDB(dbDir, REDIS_PORT)
cmd = "JAVA_HOME='" + jdk8 + "' java -jar " + join(Path(ROOT_DIR).parent, 'target','FixPatternMiner-1.0.0-jar-with-dependencies.jar') + " " + args.prop + " RICHEDITSCRIPT " cmd = "JAVA_HOME='" + jdk8 + "' java -jar " + join(Path(ROOT_DIR).parent, 'target',
'FixPatternMiner-1.0.0-jar-with-dependencies.jar') + " " + args.prop + " RICHEDITSCRIPT "
output = shellCallTemplate(cmd) output = shellCallTemplate(cmd)
logging.info(output) logging.info(output)
elif job =='actionSI': elif job == 'actionSI':
from pairs import actionPairs from pairs import actionPairs
matches = actionPairs() matches = actionPairs()
from pairs import createPairs from pairs import createPairs
createPairs(matches) createPairs(matches)
from pairs import importAction from pairs import importAction
importAction() importAction()
elif job =='compare': elif job == 'compare':
# cmd = "mvn exec:java -f '/data/fixminer_source/' -Dexec.mainClass='edu.lu.uni.serval.richedit.akka.compare.CompareTrees' -Dexec.args='"+ " shape " + join(DATA_PATH,"redis") +" ALLdumps-gumInput.rdb " + "clusterl0-gumInputALL.rdb /data/richedit-core/python/data/richEditScript'" # cmd = "mvn exec:java -f '/data/fixminer_source/'
cmd = "JAVA_HOME='" + jdk8 + "' java -jar " + join(Path(ROOT_DIR).parent, 'target','FixPatternMiner-1.0.0-jar-with-dependencies.jar') + " " + args.prop + " COMPARE " # -Dexec.mainClass='edu.lu.uni.serval.richedit.akka.compare.CompareTrees'
# -Dexec.args='"+ " shape " + join(DATA_PATH,"redis") +" ALLdumps-gumInput.rdb " +
# "clusterl0-gumInputALL.rdb /data/richedit-core/python/data/richEditScript'"
cmd = "JAVA_HOME='" + jdk8 + "' java -jar " + join(Path(ROOT_DIR).parent, 'target',
'FixPatternMiner-1.0.0-jar-with-dependencies.jar') + " " + args.prop + " COMPARE "
output = shellCallTemplate4jar(cmd) output = shellCallTemplate4jar(cmd)
logging.info(output) logging.info(output)
@@ -74,13 +64,15 @@ if __name__ == '__main__':
dbDir = join(DATA_PATH, 'redis') dbDir = join(DATA_PATH, 'redis')
startDB(dbDir, REDIS_PORT, PROJECT_TYPE) startDB(dbDir, REDIS_PORT, PROJECT_TYPE)
cluster(join(DATA_PATH,'actions'),join(DATA_PATH, 'pairs'),'actions') cluster(join(DATA_PATH, 'actions'), join(DATA_PATH, 'pairs'), 'actions')
elif job =='tokenSI': elif job == 'tokenSI':
from pairs import tokenPairs from pairs import tokenPairs
tokenPairs() tokenPairs()
from pairs import importTokens from pairs import importTokens
importTokens() importTokens()
elif job == 'clusterTokens': elif job == 'clusterTokens':
@@ -88,25 +80,29 @@ if __name__ == '__main__':
dbDir = join(DATA_PATH, 'redis') dbDir = join(DATA_PATH, 'redis')
startDB(dbDir, REDIS_PORT, PROJECT_TYPE) startDB(dbDir, REDIS_PORT, PROJECT_TYPE)
cluster( join(DATA_PATH, 'tokens'),join(DATA_PATH, 'pairsToken'),'tokens') cluster(join(DATA_PATH, 'tokens'), join(DATA_PATH, 'pairsToken'), 'tokens')
elif job == 'codeflaws': elif job == 'codeflaws':
from otherDatasets import codeflaws from otherDatasets import codeflaws
codeflaws() codeflaws()
elif job =='indexClusters': elif job == 'indexClusters':
from sprinferIndex import runSpinfer from sprinferIndex import runSpinfer
runSpinfer() runSpinfer()
from sprinferIndex import test from sprinferIndex import test
test() test()
from sprinferIndex import divideCoccis from sprinferIndex import divideCoccis
divideCoccis() divideCoccis()
from sprinferIndex import removeDuplicates from sprinferIndex import removeDuplicates
removeDuplicates()
removeDuplicates()
# from patchManyBugs import patchCore # from patchManyBugs import patchCore
# patchCore() # patchCore()
@@ -118,11 +114,13 @@ if __name__ == '__main__':
# #
# validate() # validate()
elif job =='patternOperations': elif job == 'patternOperations':
from sprinferIndex import patternOperations from sprinferIndex import patternOperations
patternOperations() patternOperations()
elif job == 'patchManyBugs': elif job == 'patchManyBugs':
from patchManyBugs import buildAll from patchManyBugs import buildAll
buildAll() buildAll()
# from patchManyBugs import patchCore # from patchManyBugs import patchCore
@@ -134,53 +132,64 @@ if __name__ == '__main__':
# from patchManyBugs import exportSosPatches # from patchManyBugs import exportSosPatches
# exportSosPatches() # exportSosPatches()
elif job =='patchIntro': elif job == 'patchIntro':
from sprinferIndex import patchCoreIntro from sprinferIndex import patchCoreIntro
patchCoreIntro() patchCoreIntro()
# from sprinferIndex import patched # from sprinferIndex import patched
# patched() # patched()
elif job =='validateIntro': elif job == 'validateIntro':
# from patch_validate_introClass2 import patch_validate # from patch_validate_introClass2 import patch_validate
# patch_validate() # patch_validate()
from test_patched_file import patch_validate from test_patched_file import patch_validate
patch_validate() patch_validate()
elif job =='checkCorrectIntro': elif job == 'checkCorrectIntro':
from test_patched_file import checkCorrect from test_patched_file import checkCorrect
checkCorrect() checkCorrect()
elif job == 'manybugs': elif job == 'manybugs':
from getManybugs import export from getManybugs import export
export() export()
elif job == 'validateMany': elif job == 'validateMany':
from patch_validate import patch_validate from patch_validate import patch_validate
patch_validate() patch_validate()
elif job == 'introclass': elif job == 'introclass':
from getIntroClass import export from getIntroClass import export
export() export()
elif job =='stats': elif job == 'stats':
from stats import statsNormal from stats import statsNormal
statsNormal(True) statsNormal(True)
elif job == 'datasetDefects4J': elif job == 'datasetDefects4J':
from defects4JDataset import core from defects4JDataset import core
core() core()
elif job =='bug': elif job == 'bug':
from bugstats import bStats from bugstats import bStats
bStats() bStats()
elif job == 'defects4j': elif job == 'defects4j':
from stats import defects4jStats from stats import defects4jStats
defects4jStats() defects4jStats()
elif job == 'patterns': elif job == 'patterns':
from stats import exportAbstractPatterns from stats import exportAbstractPatterns
exportAbstractPatterns() exportAbstractPatterns()
else: else:
logging.error('Unknown job %s',job) logging.error('Unknown job %s', job)
except Exception as e: except Exception as e:
logging.error(e) logging.error(e)
+14
View File
@@ -0,0 +1,14 @@
import os
ROOT_DIR = os.environ["ROOT_DIR"]
REPO_PATH = os.environ["REPO_PATH"]
CODE_PATH = os.environ["CODE_PATH"]
DATA_PATH = os.environ["DATA_PATH"]
COMMIT_DFS = os.environ["COMMIT_DFS"]
BUG_POINT = os.environ["BUG_POINT"]
COMMIT_FOLDER = os.environ["COMMIT_FOLDER"]
FEATURE_DIR = os.environ["FEATURE_DIR"]
DATASET_DIR = os.environ["DATASET_DIR"]
PROJECT_TYPE = os.environ["PROJECT_TYPE"]
REDIS_PORT = os.environ["REDIS_PORT"]
jdk8 = os.environ["JDK8"]