Skip to content

HGUISEL/BugPatchCollector

Repository files navigation

BugPatchCollector : Bug commit mining tool

BugPatchCollector parses bug commits and saves them as .csv files. To know the bug commit, we need to get information about the commit.

BugPatchCollector uses information from two Software Archives :

  • Jira
    지라는 프로젝트를 진행하기 위해 필요한 다양한 기능을 제공합니다. 그중에 하나가 이슈 관리입니다. 지라의 이슈 관리 페이지에서는 버그와 관련된 이슈들만 따로 검색할 수 있고, 찾은 내용을 다운로드 받을 수 있습니다. 지라에서 얻어낸 리퍼런스를 통해 프로젝트 내의 버그 정보를 수집하기 위해서는 -j과 -p 옵션을 함께 포함해야 합니다. -j에는 Jira URL의 앞부분이 들어가고, -p에는 Project Key가 들어갑니다.

  • GitHub
    깃허브도 지라와 같이 버그 이슈들을 관리할 때 버그 라벨을 붙혀서 관리합니다. 이 프로그램은 -j과 -p 옵션을 포함하지 않은 경우 깃허브에서 버그 라벨이 붙은 이슈들을 검색해서 버그 정보를 수집합니다. 깃허브에서 옵션을 추가하지 않았을 때 기본적으로 제공하는 버그 라벨은 'bug'입니다. 그래서 초기 검색 버그 라벨은 'bug'이지만, 어떤 프로젝트에서는 버그 분류 라벨을 다르게 지정했기 때문에 이것에 대처하기 위해서는 -l 옵션이 필요합니다. 만약 프로젝트에서 버그 이슈들을 정리할 때 다른 bug 라벨을 사용했을 경우에는 -l 옵션을 통해 검색하는 버그 라벨의 이름을 변경 할 수 있습니다. (예를 들어 -l "buggy") 하지만 깃허브에 이슈 페이지가 존재하지 않는 프로젝트도 존재합니다. 이런 경우에는 자동으로 커밋 메세지를 분석해서 bug,resolved,fix와 같은 키워드가 존재하면 버그라고 판단합니다.

커밋을 할때는 수정된 모든 소스파일이 한 커밋에 저장이 됩니다. 즉 버그 커밋안에서도 버그가 있는 소스파일과 의미없이 추가한 소스파일이 있을 수 있습니다. 그러므로 -x와 -m옵션을 통해 사용자가 임의로 수정된 라인의 갯수를 조절해 출력할 수 있습니다. 예를 들어 '-m 5 -x 10'으로 하면 Change가 5~10 안에 포함되는 경우에만 수집합니다.

-b 옵션을 넣으면 Bug Itroducing Change를 타겟을 수집합니다. Jira와 GitHub에서 Patch를 수집할 때오 마찬가지 -b옵션만 추가해주면 되고, 똑같이 -m와 -x옵션을 넣을 수 있습니다. 이 경우에는 fix Change의 수정된 라인을 기준을 처리합니다.

-t 옵션을 넣으면 커밋별 Metric 수집 결과를 가져옵니다. 이때 -c 옵션을 넣어줘야 하는데, 거기의 argument로 '-b' 옵션으로 추출한 파일(BIC.csv)을 넣어주어야 합니다.

Options

Must required options

  • -i (Input Option)
  • -o (Directory Path of Result File Option)

The other options

  • -l (Label Option, default:bug)
  • -x (Max lines of Modified line Option, including x'th line)
  • -m (Min lines of Modified line Option, including m'th line)
  • -h (Help Option)
  • -b (Bug Introducing Changes)
  • -j (Jira Database URL)
  • -k (Jira Project Key)

Input Example

  1. Jira example - must be used with '-r' option.
 -i https://github.com/apache/zookeeper -j "issues.apache.org" -k ZOOKEEPER -o "your/directory" 

-j, -k, Jira Project?

2. GitHub example

 -i https://github.com/apache/incubator-dubbo -o "your/directory" -x 5 -m 3 -l type/bug 

Output Example

The result file consist of Project Name, Short Commit Message, Commit Number, Date, Author and Patch.

How to build: Gradle

 $ ./gradlew distZip 

or

 $ gradle distZip 

After the command, unzip "build/distributions/BugPatchCollector.zip"
The executable file is in build/distributions/BugPatchCollector/bin

If you have trouble to build using gradlew, enter

$ gradle wrap

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages