일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- re-engineering
- git
- 특수문자
- jenkins
- conventional NFR
- Firebase
- 라이브아카데미
- 이모티콘
- 영어회화
- skeleton architecture
- Android
- Python
- meta threads
- 특수기호
- non conventional NFR
- 쓰레드 비디오 다운로드
- 직장영어
- Realtime Database
- endless scrolling
- 쓰레드 이미지 다운로드
- 젠킨스
- firestore
- cloud firestore
- 객치지향프로그래밍
- 메타 쓰레드
- 파이썬
- 자료구조
- django
- 안드로이드
- RecyclerView
- Today
- Total
Owl Life
Jenkins에 checkstyle plugin 적용하기 본문
프로그래밍하면서 코드 스타일을 체크해주는 유용한 플러그인으로 많은 개발자들이 사용하고 있습니다. 본 포스팅에서는 Android Project에 checkstyle plugin을 적용 후 젠킨스에도 결과를 보여주도록 적용해보겠습니다.
Lint 그래프 아래쪽에 Checkstyle Trend가 표시되는것을 볼 수 있습니다.
차트를 클릭하면 상세 내용을 확인 할 수 있습니다.
해당 항목을 클릭하면 어떤 부분 때문에 검출이 되었는지 확인 할 수 있습니다. 본 검출 내용은 메서드 이름은 소문자로 시작하여야 하는데 대문자로 시작했기 때문에 발생된 에러입니다.
Android 프로젝트에 checkstyle 적용
프로젝트가 한개일 경우에는 app/build.gradle 파일에 적용하면 되고, 여러개의 멀티 프로젝트를 운용하고 있다면 root build.gradle 파일에 아래처럼 추가합니다. checkstyle이라는 태스크를 모든 프로젝트에 적용한다는 의미로 allprojects scope에 추가하였습니다.
apply plugin: 'checkstyle'
allprojects {
repositories {
google()
jcenter()
}
task checkstyle(type: Checkstyle) {
showViolations true
ignoreFailures true
configFile file(rootDir.path + "/checkstyle.xml")
source 'src/main/java'
include '**/*.java'
exclude '**/gen/**'
exclude '**/R.java'
exclude '**/BuildConfig.java'
classpath = files()
}
}
lint와 마찬가지로 checkstyle을 커스텀하여 어떤 항목들을 검출할지 수정이 가능합니다. checkstyle.xml 이라는 파일을 생성후 프로젝트 root에 위치시킵니다. 해당 파일은 이전에 추가한 task의 "configFile file(rootDir.path + "/checkstyle.xml")" 에서 읽어옵니다.
<?xml version="1.0"?><!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.2//EN"
"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
<module name="Checker">
<module name="NewlineAtEndOfFile" />
<module name="FileLength" />
<module name="FileTabCharacter" />
<module name="RegexpSingleline">
<property name="format" value="\s+$" />
<property name="message" value="Line has trailing spaces." />
</module>
<module name="TreeWalker">
<module name="JavadocStyle" />
<module name="ConstantName" />
<module name="LocalFinalVariableName" />
<module name="LocalVariableName" />
<module name="MemberName" />
<module name="MethodName" />
<module name="PackageName" />
<module name="ParameterName" />
<module name="StaticVariableName" />
<module name="TypeName" />
</module>
</module>
checkstyle에서 제공하는 모든 규칙들은 아래 페이지에서 확인 가능합니다.
https://checkstyle.sourceforge.io/checks.html
실행
checkstyle task 를 실행하여 바로 결과를 확인 할 수 있습니다.
~/AndroidStudioProjects/JenkinsTestProject2$ ./gradlew clean checkstyle
> Task :app:checkstyle
[ant:checkstyle] [ERROR] /home/allsoft/AndroidStudioProjects/JenkinsTestProject2/app/src/main/java/com/owllife/jenkinstestproject/MainActivity.java:15:18: Name 'TestCheckStyle' must match pattern '^[a-z][a-zA-Z0-9]*$'. [MethodName]
Checkstyle rule violations were found. See the report at: file:///home/allsoft/AndroidStudioProjects/JenkinsTestProject2/app/build/reports/checkstyle/checkstyle.html
Checkstyle files with violations: 1
Checkstyle violations by severity: [error:1]
Jenkins에 checkstyle plugin 적용
젠킨스 홈에서 관리 페이지에 접근 후 plugin 관리쪽으로 진입합니다. 상단에서 "Checkstyle Plug-in" 으로 검색 후 설치하고 젠킨스를 재시작합니다. 그 다음 워크스페이스의 설정 화면으로 진입후 하단에 위치한 Post-build Actions 섹션에서 "Publish checkstyle ...." 항목을 선택하고 report 파일의 경로를 작성해줍니다. html은 안되고 꼭 xml 파일 형식으로만 작성하여야 합니다.
현재 기점으로 해당 액션은 deprecated 되었고, Report Violation 을 사용하여야 하는데 이 부분은 차후에 다시 다루어 보도록 하겠습니다.
'Jenkins' 카테고리의 다른 글
젠킨스의 build description을 커스텀 해보자. [description setter plugin] (0) | 2019.10.29 |
---|---|
Jenkins에 lint plugin 적용하기 (0) | 2019.10.24 |
Jenkins Publickey 에러로 repository 접근할 때 error 발생하는 이슈 해결. (ssh 키 생성 및 등록) (0) | 2019.10.24 |
Jenkins에서 Github 저장소에 있는 Gradle 기반의 Android 프로젝트 생성하기 (0) | 2019.10.17 |
우분투 18.04 젠킨스 설치 (0) | 2019.10.17 |