2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 Abstract - 31 -
소스코드유사도측정도구의성능에관한비교연구 1. 서론 1) Revulytics, Top 20 Countries for Software Piracy and Licence Misuse (2017), March 21, 2017. www.revulytics.com/blog/top-20-countries-software -piracy-2017 2) BSA The Software Alliance, Seizing Opportunity Through License Compliance, 2016. http://globalstudy.bsa.org/2016/ 2. 코드클론의유형 - 32 -
2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 2.1 클론유형 1 exact clones Original code segment if ( a >= b) { c = d + b; //Comment 1 d = d + 1; } else c = d - a; //Comment 2 2.2 클론유형 2 Copy clone if (a >=b) { //Comment1' c=d+b; d=d+1; } else //Comment2' c=d-a; enamed/parameterized clones 2.3 클론유형 3 원본코드조각 (Original) Copy clone 원본코드조각 (Original) Copy clone if (a >= b) { c = d + b; // Comment1 d = d + 1;} else c = d - a; //Comment2 if (m >= n) { // Comment1 y = x + n; x = x + 5;//Comment3 } else y = x - m; //Comment2 if (a >= b) { c = d + b; // Comment1 d = d + 1;} else c = d - a; //Comment2 if (a >= b) { c = d + b; // Comment1 e = 1; // This statement is added d = d + 1; } else c = d - a; //Comment2 synchronized near miss clones 원본 코드 클론 public int getsolinger() throws SocketException{ Object o = impl.getoption(socketoptions.so_linger); if (o instanceof Integer) { return((integer) o).intvalue(); } else return -1; } public synchronized int getsotimeout() throws SocketException{ Object o = impl.getoption(socketoptions.so_timeout); if (o instanceof Integer) { return((integer) o).intvalue(); } else return -0; } - 33 -
소스코드유사도측정도구의성능에관한비교연구 원본코드클론상태 ε synchronized Insertion <getsolinger> <getsotimeout> Replacement <SO_LINGER > <SO_TIMEOUT> Replacement <-1> <-0> Replacement 2.4 클론유형 4 semantic clones 원본 반복문을이용한 factorial 구현 int i, j=1; for (i=1; i<=value; i++) j=j*i; 2.5 코드클론정리 코드클론 재귀함수를이용한 factorial 구현 int factorial(int n) { if (n == 0) return 1 ; else return n * factorial(n-1) ; } 3. 관련연구 3) 코드클론탐지기법의검증을위해사용되는시스템을주제시스템 (subject system) 이라고한다. 연구자들은동일시스템상에서연구를수행하여결과를더의미있게상호비교한다. 주제 (subject) 의대표적인예는 (1) Computing and processing (HW & SW), (2) General topics for engineers (Math, Science, and Engineering) 등이다 [15], 코드클론탐지를위해상용 subject system 을사용하기도하지만, 주로오픈소스소프트웨어시스템을사용한다. Subject system 의대표적인예는 JDK (3200 KLOC, Java), Appache-httpd (343 KLOC, C), Apache-Ant (1.41 MLOC, Java), Linux (6.2 MLOC, C), Netbeans-doc (19 KLOC, Java), Bison (16 KLOC, C), PostgreSQL (937 KLOC, C) 등이다 [15]. - 34 -
2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 도구가탐지한클론중정확한클론의개수 도구가클론이라고탐지한코드의총개수 클론중도구가탐지한실제클론의개수 클론의총개수 JList. JScrollBar. JTable. JToolBar. JScrollBar. JTable. JToolBar. 재현율 : 재현율 : 재현율 : 4/7 34/299 3/4 정확도 : 정확도 : 정확도 : 34/34 157/157 45/45 재현율 : 재현율 : - 2/2 3/3 정확도 : 정확도 : 29/29 18/18 - - 재현율 : 1/2 정확도 : 12/12 - - - JTree. 재현율 : 30/258 정확도 : 171/173 재현율 : 0/1 정확도 : 22/22 재현율 : 95/321 정확도 : 279/279 재현율 : 1/1 정확도 : 12/12-35 -
소스코드유사도측정도구의성능에관한비교연구 4. 소프트웨어유사도측정도구 4.1 JPlag v2.11.9 [1,2,12,13] 4.2 exeyes [3] 5. 실험및평가 5.1 BigCloneBench 벤치마크 [6,11] - 36 -
2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 유형 1 유형 2 유형 3 True clone 120 53 493 False clone 0 2 73 5.2 평가항목 용어설명별칭 정확도 (precision) 재현율 (recall) How many selected items are relevant? Positive predictive value How many relevant items are selected? Sensitivity 용어설명 TP (True Positive) The number of Predicted Positives that were correct ( 정상으로탐지 - 정탐 ) The number of Predicted Positives FP (False that were incorrect Positive) ( 클론이아닌것을클론으로분류 / 탐지 ) Type I error TN (True Negative) FN (False Negative) Ÿ Ÿ ( 실제클론을탐지하지못함 - 미탐 ) ( 실제클론을클론이아니라고분류 / 탐지 ) Type II error Ÿ precision recall precision recall 5.3 JPlag v2.11.9 의성능평가 - 37 -
소스코드유사도측정도구의성능에관한비교연구 정확도 재현율 유형 1 유형 2 유형 3 120/120 120/120 53/53 53/53 247/260 (95%) 247/493 (50.1%) 5.4 exeyes 5.0 의성능평가 정확도 재현율 유형 1 유형 2 유형 3 120/120 120/120 53/53 53/53 137/137 137/493 (27.7%) - 38 -
2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 (a) DICOM_Sort. 116-261 (b) SimpleCricketDartGame. 34-65 (a) DICOM_Sort. 116-261 (b) Task2. 34-65 (a) DICOM_Sort. 일부 (b) SimpleCricketDartGame. 일부 - 39 -
소스코드유사도측정도구의성능에관한비교연구 (a) DICOM_Sort. 일부 (b) BubbleSortAlgorithm. 일부 6. 결론및향후연구방향 - 40 -
2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 참고문헌 - 41 -
소스코드유사도측정도구의성능에관한비교연구 - 42 -