NGLP and LSTM 메트릭 실험 수집 도구 - ISEL-HGU/IntegratedDPModel GitHub Wiki
메트릭 수집하기 위해 데이터 얻는 툴이다. 모델 학습시키기 위한 데이터와 결함 예측 모델 성능 측정 위한 데이터 두 종류 수집하는 툴이다. 첫번째 종류는 언어모델을 트레이닝 하기 위해 특정 기간 사이의 모든 commit을 하나로 합쳐서 아래 처럼 txt 파일을 만들어준 것이다. git show 명령어를 통해 추가된 라인만 저장한다. 두번째 종류는 결함예측 모델을 만들고 그 모델의 성능을 측정하기 위한 데이터이다.
git clone https://github.com/ISEL-HGU/SurprisedBasedMetricsExpDataExtractor.git
cd SurprisedBasedMetricsExpDataExtractor
gradle distzip
unzip build/distributions/BugPatchCollector.zip
-
cd BugPatchCollector/bin/
하기. 그 아래 makeBIC.sh 스크립트를 실행시켜 BIC를 구한다. - bin 아래 makeDPTrainingData.sh 스크립트 실행시켜 Language model 훈련시키기 위한 커밋 데이터 수집하기.
- BugPatchCollect 코드를 수정하여 구현되었다. -d 옵션이 1 이면, Language model 모드이다. 언어모델 트레이닝 하기 위해 특정 기간 사이의 모든 commit을 하나로 합쳐서 Txt 파일을 만들어준다. git show 명령어를 통해 추가된 라인만 저장한다.
- Defect prediction model 만들기 위한 커밋 데이터 수집하는 스크립트 돌리기 (디렉토리 만들어주는 쉘 스크립트를 먼저 실행시켜야지 에러 안 날것)
- BugPatchCollect 코드를 수정해서 -d 옵션에서 2이면 defect prediction model 만들기 위한 데이터를 만들어 준다. 이때 -p 옵션에 커밋들이 저장될 path를 적어야 하는데, 미리 해당 디렉토리 아래에 프로젝트 이름으로 디렉토리들을 만들어줘야 에러가 안난다 (bin 아래 makeDir.sh 스크립트 참고하기).
-
SurprisedBasedMetricsExpDataExtractor/Output/DP
디렉토리 아래 결함 예측 모델 만들기 위한 csv파일과 arff 파일이 만들어진다 (사실 나중에 메트릭들 추가하고 나서 https://github.com/ISEL-HGU/IntegratedDPModel/blob/master/src/main/java/edu/handong/csee/isel/weka/CSV2Arff.java에서 run 함수 실행시키면 자동으로 레이블 컬럼 위치를 맨 마지막으로 바꿔서 arff로 저장시켜줘서 arff 파일은 필요없다). 이때 project name + _developer.csv 에만 결함 예측 버기 레이블이 달린다. 그 developer.csv를label_DP
아래로 옮겨줘야 한다 (아니면 LSTM metric 구하는 쉘 스크립트에서 —input_csv_metric_file 옵션 값을 바꿔줘야 함).
usage: BugPatchCollector [-b] [-c <BIC csv file path>] [-d <data mode>]
[-e <End date>] [-g] [-h] -i <URI or URL> [-j <Jira project URL>]
[-k <Project Key>] [-l <Find coincident commit with label>] [-m
<Min lines of patch>] -o <directory> [-p <training data path>] [-s
<Start date>] [-t] [-x <Max lines of patch>]
Collecting bug-patch program
-b,--bugIntroducingChange If you want
to get bug
introducing
changes,
add this
option
-c,--BugIntroducingChange csv file path <BIC csv file path> Path of csv
file
-d,--datamode <data mode> data mode
1: language
model
training
dataset 2:
defect
prediction
train and
test
dataset
-e,--endDate <End date> end date
-g,--github When
searching
fix-commit,
use
GitHub-issu
es with
label name
-h,--help Help
-i,--input <URI or URL> input type:
URL(https:/
/github.com
/user/proje
ct_name
-j,--jiraURL <Jira project URL> Jira issues
URL
(example:
issues.apac
he.org)
-k,--jiraProject <Project Key> Jira
project
key. you
can get
more
information
s:
https://git
hub.com/HGU
ISEL/BugPat
chCollector
/issues/18
-l,--label <Find coincident commit with label> Set a bug
label of
github
(default:
'bug')
-m,--min <Min lines of patch> Set a Min
lines of
each result
patch. This
Option need
to be used
with 'x'
Option.
(default:
0)
-o,--result <directory> directory
will have
result file
-p,--pathOfTrainingSet <training data path> training
data path
-s,--startDate <Start date> start date
-t,--metric collect
metrics
from all
changes
-x,--max <Max lines of patch> Set a Max
lines of
each result
patch. Only
count '+++'
and '---'
lines. must
used with
'-m'.
(default:
500)