Software Verification #3 정적분석도구, 단위 / 시스템테스트도구 Software Verification Team 4 강 정 모 송 상 연 신 승 화 1
Software Verification #3 정적분석도구, 단위 / 시스템테스트도구 CONTENTS 01 Overall Structure 02 Static analyzer SonarQube 03 Static analyzer PMD 04 Static analyzer Checkstyle 05 Static analyzer FindBugs 06 Summary 2
01 Overall structure IDE (IntelliJ) CI Server (Jenkins) 3
01 Overall structure Ⅰ. Jenkins Redmine 연동문제 plugin 노후화 / gem version 충돌문제급한대로바로가기를통한연결. 해결될가능성은낮지만고민해봐야할문제. (Redmine version 4.0.3 3.x.x 로 downgrade??) Ⅱ. Jenkins Mantis 연동문제 추후해결이안될시 GitHub or TestLink Mantis 대체연동을고려 4
01 Overall structure Ⅰ. Jenkins Redmine 연동문제 zapier webhook 으로해결. 하지만아직일감분류문제해결이필요. 5
01 Overall structure Ⅱ. Jenkins Mantis 연동문제 TestLink Mantis 대체연동시 TestLink Redmine 연동이불가 정적분석툴추가 삭제 대체제로 testcase 설치예정 ( 현재 DB 설정충돌문제발생 ) 6
02 Static Analyzer - SonarQube 조직에서개발된코드의지속적인인스펙션을통해품질목표를달성할수있게해주는플랫폼 소스코드품질현황을시각화, 리스크분석및소스코드에서발생하는문제를해결 7
02 Static Analyzer - SonarQube SonarQube 의경우기본 DB 로 maven 의 H2DB 를사용하므로, maven 을먼저설치해준다. ( 필요시다른 DB 로대체가능. 설치후환경변수등록할것.) 8
02 Static Analyzer - SonarQube SonarQube 최신버전을다운로드하여압축을해제하고, bin directory 내부의 linux directory 중해당 OS 에맞는 directory 에들어가 sonar.sh 파일을실행시킨다. 9
02 Static Analyzer - SonarQube 해당 SonarQube 의 default port 번호는 9000 이므로, server DNS 뒤에 :9000 port 번호를입력하여 SonarQube 에접속한다. 10
02 Static Analyzer - SonarQube Jenkins 와연동하기위해 SonarQube Scanner Plugin 과 Sonar scanner 를설치한다. 11
02 Static Analyzer - SonarQube SonarQube Token 생성후 해당 Token 과 SonarQube server 주소를이용하여 Jenkins 에 SonarQube server 등록한다. 12
02 Static Analyzer - SonarQube 설치한 Sonar Scanner 를 Jenkins 와연동시켜준다. 13
02 Static Analyzer - SonarQube SonarQube 와연동하기위한 Jenkins project 로이동하여 빌드환경을설정한다. 14
02 Static Analyzer - SonarQube SonarQube 와연동하기위한 Jenkins project 로이동하여 빌드환경을설정한다. Jenkins 와 JDK 가연동되어있어야함 SonarQube 에서생성될 project 이름과해당 project 의 key 값 Workspace 이후의 directory 부터입력해야함 15
02 Static Analyzer - SonarQube 실행 16
03 Static Analyzer - PMD PMD(Program May Dependable) 미사용변수, 비어있는코드 block, 불필요한 object 생성과같이 defect을유발할수있는코드를검사한다. 미리정의한 ruleset을기반으로구문을분석한다. Java에서많이사용하지만, JavaScript, XML 등다른언어도지원한다. 17
03 Static Analyzer - PMD 사용할 ruleset 을선택하여 pmd-rule-set.xml 생성 ( 아래는생성한 xml 파일의일부 ) https://github.com/jensgerdes/sonar-pmd/blob/master/docs/rules.md > PMD ruleset reference 18
03 Static Analyzer - PMD SonarQube 의 Market Place 에서 PMD plugin 을검색하여추가하고, Quality Profiles tab 에서 Create 를통해 ruleset 을모은 New Profile 을만든다. 이전슬라이드에서 ruleset 을사용해서만들어낸 xml 파일 19
03 Static Analyzer - PMD 다음과같이 Quality Profile 항목에 PMD ruleset 을활용한 SoftwareVerification Profile 이 import 된것을볼수있다. 20
04 Static Analyzer Checkstyle 소스코드내에서다양한위반사항에대해알수있다. 개발자들이체크인전에위반사항을고칠수있다. 미리정해놓은코딩규칙을팀원들이보다쉽게적용할수있게도와주는도구 error를조기에찾을수있음. ex) 사용하지않은 pointer는 Null로초기화한다. 21
04 Static Analyzer Checkstyle PMD 와마찬가지로 Market Place 에서 Checkstyle Plugin 을찾아설치한다. 설치시 Rules Repository 에 Checkstyle Java 항목이추가된다. 22
05 Static Analyzer FindBugs Java program에서잠재적으로발생가능한버그를찾는것이주목적인정적분석 tool. Complie된 java byte code를읽어서검사 속도가빠름, 하지만 build 과정이필수 (SonarQube에서는해당 option 선택가능 ) 실제결함 / 버그를잘찾아주는편이다. (static analysis에서발생가능한 false alarm이존재할수있음 ) 23
05 Static Analyzer FindBugs 역시 FindBugs 도 Market Place 에서 FindBugs Plugin 을찾아설치한다. 설치시 Rules Repository 에각종 FindBugs Java 항목이추가된다. 24
05 Static Analyzer FindBugs Quality Profile 쪽에도 Rules 들이추가된다. 25
06 Summary Quality Profile 탭우측상단의 Create 를눌러 Profile 을만든다. 26
06 Summary 생성한 Profile을선택한후 Change Project로 SonarQube project를할당할수있고, 할당이후에는 Activate More 을클릭하여각종 rule을마음대로추가할수있다. 27
06 Summary Server_1 Local Code Push Hosting Build Server_2 Build Test Repository Synchronization Webhook config Plugin Plugin 28
감사합니다 THANK YOU Software Verification Team 4 강 정 모 송 상 연 신 승 화 29