Jenkins(젠킨스)와 SonarQube(소나) 연동 설정

본 포스팅은 Jenkins(젠킨스)와 SonarQube(소나)가 설치되어 있다는 전제하에 정리한다.

! 설치전에 알아야 할 내용. 

SonarQube는 JDK버전에 맞춰 설치하여야 한다. Jenkins에서 설치하는 플러그인도 버전을 맞춰 설치해 주어야 한다.

본인은 JDK 1.7을 사용하므로 SonarQube 5.5버전을 설치하였고 젠킨스 플러그인은 2.4.4를 설치하였다.

(소나 플러그인의 현재 버전은 2.5이며 JDK 1.8 이상에서만 설치가 가능하다.)
플러그인은 젠킨스에서 최신 버전만 리스트업되므로 Archive 메뉴를 이용하여 해당 버전을 다운로드 받아 직접

설치 해 주어야 한다. 다운로드 받는 파일은 hpi 확장자를 갖는다.

  • Jenkins 버전 : 2.7.4
  • SonarQube 버전 : 5.5
  1. 젠킨스에서 연동에 필요한 플러그인을 설치한다.
    1.1. Jenkins 관리 ▶ 플러그인 관리 ▶ 설치가능 탭으로 이동
    1.2. 필터 입력란에 sonarqube를 입력한 후 SonarQube Plugin 체크
    1.3. 지금 다운로드하고 재시작 후 설치하기 버튼을 눌러 플러그인 설치
  2. 설치 한 후 젠킨스를 재 시작한다.
  3. 프로젝트 ▶ 구성 메뉴로 이동
  4. Build 항목에서 Execute SonarQube Scanner 선택
  5. 소나에 등록 할 프로젝트에서 필요한 정보를 설정한다.

※ 항목 별 설명

설정 정보는 필수 항목과 옵션 항목으로 구성되어 있으며 옵션 항목은 필요한 경우에만 설정하면 된다.

  • Task to run : 옵션 항목이며 필요한 경우 설정한다.
  • JDK : 프로젝트에서 사용하고 있는 JDK 버전을 선택(선택 항목에 없다면 Jenkins 관리▶ Global Tool Configuration 에서 설치)
  • Path to project properties : 옵션 항목이며 sonar-project.properties 파일을 지정하고자 한다면 설정.
  • Analysis properties : SonarQube에 프로젝트를 등록하고 분석하는데 필요한 프로퍼티 정보를 설정한다.
    프로퍼티 설정에 대한 자세한 내용은 아래를 참고.

# required metadata sonar.projectKey=my:project sonar.projectName=My project sonar.projectVersion=1.0 # path to source directories (required) sonar.sources=myproject/src/main/java # path to test source directories (optional) #sonar.tests=testDir1,testDir2 # path to project binaries (optional), for example directory of Java bytecode #sonar.binaries=binDir # optional comma-separated list of paths to libraries. Only path to JAR file and path to directory of classes are supported. #sonar.libraries=path/to/library.jar,path/to/classes/dir # Uncomment this line to analyse a project which is not a java project. # The value of the property must be the key of the language. sonar.language=java # Additional parameters #sonar.my.property=value

필수 설정 프로퍼티

  • sonar.projectKey
    소나에서 관리 할 프로젝트 키이며 prefix : suffix 형태로 설정한다. 굳이 : 을 사이에 넣을 필요는 없을것 같으나
    예제에서 구성 해 놓은대로 설정한다. 키 값은 중복되지 않도록 설정한다.
  • sonar.projectName
    프로젝트 명칭을 입력한다. 양식에 제약은 없는 듯 하다.
  • sonar.projectVersion
    프로젝트 버전을 입력한다.
  • sonar.sources
    Jenkins에서 빌드 된 소스 파일의 경로를 설정한다. Jenkins의 프로젝트 기본 경로 다음의 경로를 설정하면 된다.
    예) myproject/src/main/java
    (/var/lib/jenkins/job/project/workspace 뒤의 경로를 지정한다. workspace까지는 기본 경로임.)
    본인은 java 소스코드만 분석하고자 하여 java 패스까지 설정하였으나 html, javascript 등 스크립트 언어까지 분석하고자
    한다면 java와 스크립트 폴더 경로가 나누어지는 경로까지 설정한다.
    요즘 흔히쓰는 경로 구조는 src > main > java/webapp 형태이므로 src/main까지만 설정하면 된다.

출처: http://shy-blg.tistory.com/entry/Jenkins와-SonarQube-연동-방법 [소울메이커]

 

현재 내가 쓰는 설정

#프로젝트키
sonar.projectKey= AutoCAD_MPlot
#프로젝트 이름
sonar.projectName=AutoCAD_MPlot
#버전
sonar.projectVersion=1.0

# Comma-separated paths to directories with sources (required)
sonar.sources=dcsMPlot

# Encoding of the source files
sonar.sourceEncoding=euc-kr

# Path where Build Wrapper files were output to
sonar.cfamily.build-wrapper-output=build-wrapper-out

# Path to the code coverage xml report produced by Visual Studio coverage tool (codecoverage.exe)
sonar.cfamily.vscoveragexml.reportsPath=codeCoverage.xml
# scm 을 서버 환경 설정에서 off 햇더라도 켜져잇는것으로 인식되는것 같음.
sonar.scm.disabled=true

[Doxygen] Doxygen 사용법, 예제

Doxygen

참고

https://www.stack.nl/~dimitri/doxygen/manual/index.html : doxygen 메뉴얼

http://www.slideshare.net/arload/doxygen-33932243 : doxygen 사용법

 

테스트 환경

– ubuntu14.04 lts

– php

테스트 코드

Test.php, Etc.php, subFolder/Etc.php 만들었다. 코드는 없다.

Doxygen 이란?

doxygen 코드상의 주석을 통해 문서를 만들어내는 프로그램이다. doxygen 맞는 주석을 사용하면 따로 문서를 만들 필요 없이 주석만으로 문서를 만들 있기 때문에 문서 관리를 따로 필요가 없고 코드만 보고도 이해하기가 쉬워진다.

아래와 같이 html 문서를 만들 있다.

 

 

 

 

 

기본 주석법

doxygen 인식하는 주석법은

/**
*
주석
*
*
*/

이런 식으로 /** 주석 시작시 * 두번 줘야 한다.

방법 말고도 주석 법은 있다.

 

아래의 사이트를 보면 주석 방법에 대해 나와 있다.

https://www.stack.nl/~dimitri/doxygen/manual/docblocks.html#specialblock

 

클래스에 대한 주석

@brief

간략한 설명

@details

자세한 설명

@author

저작권자

@date

날짜

@version

버전

 

 

/**

*

* @brief 테스트를 위한 클래스이다.

* @details 내부에서 아무짓도 안한다.

* @author oncellboy

* @date 1234-12-12

* @version 0.0.1

*

*/

class Test{

}

 

 

출력 문석

 

 

 

 

메소드에 대한 주석

@brief

간략한 설명

@details

자세한 설명

@param

파라미터

@return

반환

@throws

발생 예외

 

/**

*

*        @brief 메서드 간략 설명

*        @details 메서드 자세한 설명

*        @param string a 파라미터 번

*        @param string b

*        이거는 테스트 파라미터

*

*        @return mixed|boolean

*  성공시 숫자, 실패시 false 반환

*

*        @throws ValidException 나쁜짓하면 예외발생

*

*/

public function add($a,$b)

{

$sum = $a + $b;

 

 

return $sum;

}

 

 

출력 문서

 

 

 

 

기타 주석

주석 설명 작성 출력

@todo

todo

todo 리스트를 따로 관리도 해준다.

@todo 다음주까지 해야할 업무

 

todo 리스트 관리

@todo 작성된 해당 클래스와 메소드를 알수 있다.

@bug

bug

bug 리스트를 따로 관리도 해준다.

@bug 반환이 언제나 false이다. 해결해야함


bug 리스트 관리

@bug 작성된 클래스와 메소드를 알수 있다.

@see

참고나 이것 저것 보여 줘야 하는것 @see 그냥 이것저것 보여줘야하는 것

 

_____|______

      |

 First Header  | Second Header

————- | ————-

Content Cell  | Content Cell

Content Cell  | Content Cell

 

@li

리스트 @li list 1

@li list 2

 

[내용](링크주소) 링크

클릭시 링크를 연다.

[내 블로그](http://onecellboy.tistory.com)

@code

@endcode

코드 표현  @code{.py}

#!/usr/bin/python

print “Hello World! 뜸금없는 파이썬 코드”

@endcode

 

@ref class

@ref namespace.class

참조

클래스 이름이나 네임스페이스가 포함되어 있는 경우 namespace.class 써준다.

참조 링크를 클릭시 해당 클래스의 문서 페이지로 이동한다.

@ref Etc

@ret subFolder.Etc

 

subFloder.Etc 클릭시 해당 클래스의 문서 페이지로 이동한다.

 

@n

주석 내에서 new line(개행) 이다. @see 개행할 것 @n 이다.  

 

 

작성 전체

<?php

 

 

require_once ‘./Etc.php’;

 

 

 

 

/**

*

* @brief 테스트를 위한 클래스이다.

* @details 내부에서 아무짓도 안한다.

* @author oncellboy

* @date 1234-12-12

* @version 0.0.1

*

*/

class Test{

 

public $test;

 

 

 

public function __construct()

{

 

}

 

 

 

public function show()

{

 

$etc = new Etc();

 

$str = $etc->getText();

 

print_r($str);

}

 

 

/**

*

*        @brief 메서드 간략 설명

*        @details 메서드 자세한 설명

*        @param string a 파라미터 번

*        @param string b

*        이거는 테스트 파라미터

*

*        @return mixed|boolean

*  성공시 숫자, 실패시 false 반환

*

*        @throws ValidException 나쁜짓하면 예외발생

*

*

*

*  @todo 다음주까지 해야할 업무

*

*  @bug 반환이 언제나 false이다. 해결해야함

*

*

*  @see 그냥 이것저것

*  보여줘야하는 것

*

*

*        First Header  | Second Header

*        ————- | ————-

*        Content Cell  | Content Cell

*        Content Cell  | Content Cell

*

*  @li list 1

*  @li list 2

*

*  [내 블로그](http://onecellboy.tistory.com)

*

*        @code{.py}

*  #!/usr/bin/python

*        print “Hello World! 뜸금없는 파이썬 코드”

*  @endcode

*

*  이 클래스를 사용합니다. @ref Etc @n

*  이 네임스페이스의 이 클래스를 사용합니다. @ret subFolder.Etc

*

*/

public function add($a,$b)

{

$sum = $a + $b;

 

 

return $sum;

}

}

 

 

출력 문서 전체

 

 

 

 

 

 

 


Doxygen 설치

$ sudo apt-get install doxygen doxygen-gui

 

 

Doxygen gui 실행

$ doxywizard

 

 

 

Doxygen GUI 설정

 

 

select : 소스의 위치를 지정

Pjorect name : 프로젝트 이름

Project viersion or id : 프로젝트 버전

Scan recursively : 소스 위치의 모든 하위 폴더까지 스캔(지정하지 않으면 하위폴더에 대한 문서는 생성 안함)

 

 

 

All Entities : 모든 엔트리

Include cross-referenced source code in the output : 함수마다 사용한 함수로의 링크를 생성

 

Select programming language to optimize the results for : 언어 지정

 

 

with navigation panel : 문서 왼쪽에 탐색 트리를 보여줌

 

 

 

Dot graphs to generate : 소스간의 관계를 GraphViz 표현해줌

 

 

 

OUTPUT_LANGUAGE : 출력 문서 언어

 

 

 

ALWAYS_DETAILDE_SEC : 항상 상세 정보를 보여줌

INLINE_INHERITED_MEMB : 소멸자와 상속자를 제외한 상속된 모든 멤버를 보여줌

 

 

EXTRACT_ALL : 소스코드의 모든 요소가 문서화 대상이

EXTRACT_PRIVATE : 클래스 내의 모든 private 멤버가 문서화 대상이

EXTRACT_STATIC : 클래스 내의 모든 static 멤버가 문서화 대상이

INLIVE_SOURCES : 함수 설명시 함수 코드를 보여줌

 

CLASS_DIAGRAMS : 클래스의 상속구조 다이어그램을 그림

UML_LOOK : 다이어그램을 UML 형식으로 그림

 

DOT_PATH : dot 프로그램(Graphviz) 위치를 지정

 

Graphviz 설치법  sudo apt-get install graphviz

설치 위치 확인 : which dot

 

 

 

문서 만들기

 

Run doxygen 클릭

 

Show HTML output으로 문서 확인

 

 

출처 :http://onecellboy.tistory.com/342

DOSPrint 와 파이썬을 이용해 PrintFil 대체하기

이전 포스팅에서 말했듯이 PrintFil이 30일간 사용할 수 있는 셰어웨어라 30일이 지나면 민원서류를 pdf로 출력하지 못합니다.

 

이를 대체하기 위해 DOSPrint와 Python을 이용해봅시다.

 

1. DOSPrint: http://www.andtechnologies.com/index.php?q=downloads/free-software 에서 DOSPrint 다운

2. Python: https://www.python.org/downloads/ 에서 다운 (3.X대신 2.X를 사용합니다.)

 

DOSPrint를 받고 압축을 풀고 DOSPrintUI를 실행합니다.

 

그러면 트레이에 아이콘이 생기는데 오른쪽 클릭을 하고 Configure를 누릅니다.

 

그런 다음 LPT1 포트에 이전 포스팅에서 다운받아 생긴 HP Universal Printing PS를 선택합니다.

(다른 걸 선택해도 되는지는 잘 모르겠네요.)

 

 

OK를 눌러주면 DOSPrint는 세팅 완료입니다.

 

 

이제 Python을 설치하고 첨부파일을 받으세요.

 

그 뒤 Python IDLE를 열고, File-Open을 클릭한 뒤 첨부파일을 엽니다.

여기서 location 부분을 수정해줍니다. 파일을 저장할 경로입니다.

(초기에는 C드라이브에 통일했으나, 권한 문제때문에 수동으로 고쳤습니다)

위처럼 r'(경로)’ 이런 형식으로 적어주시면 됩니다. (뒤에 ‘\\’는 건드리지 마세요)

마지막에 \(백슬래시)가 들어가면 에러가 날 수 있으니 유의하세요.

 

location을 지정해준 뒤 F5를 누르면 실행됩니다.

 

 

첫 번째로 DOSPrint를 열었는지 확인합니다. 그랬다면 y를 입력고 엔터를 누릅니다.

(소문자 y가 입력될 때까지 무한반복됩니다.)

 

열었다면, 이제 민원서류 인쇄에서 HP Universal Printing PS로 출력합니다.

그 뒤 두 번째 질문에 대해 y를 입력합니다.

그 다음 파일명을 입력합니다.

파일은 파일명.ps로 지정해준 경로에 저장되는데, 파일이 이미 존재한다면 덮어씌어지니 주의하세요.

 

 

 

그러면 완성입니다!

 

 

이제 PrintFil 없이 ps 파일을 만들 수 있습니다.

 

파이썬 프로그래밍을 할 줄 아시면, 첨부파일을 참고해 코드를 새로 작성하셔도 무방합니다.

 

 

[+] 위 포스팅은 printFil이 설치된 적이 있는 환경에서 작성되었습니다.

얼마전 포맷을 한 뒤 printFil 설치 없이 다시 시도해보니 다음과 같은 에러가 떴습니다.

No such file or directory: ‘LPT1:’

이렇게 뜬다면 위에서 Python IDLE를 열지 말고, 탐색기에서 lpt_capt.py를 더블클릭해서 실행하면 검은 콘솔 창이 뜹니다.

콘솔 창에서 시도해주세요.

 

처음에는 안 떴는데 몇 분 지난 뒤 시도해보니 정상적으로 작동하는 듯 합니다.

민원서류를 PDF로 만들기

정부에서 발급하는 민원서류는 실제 프린터를 요구합니다. 프린터가 없거나 호환이 안되면 상당히 난감해집니다.

프린터가 있는 PC방에서 출력해도 되지만 공인인증서를 PC방에 가지고가야 해서 다소 위험합니다.

정부민원포털 민원24, 국세청 홈택스(홈텍스) 등에서 발급받을 수 있는 민원서류를 PDF로 만드는 방법을 소개하겠습니다.

필요한 프로그램 설치하기

  1. HP LaserJet 5200 PostScript 드라이버를 다운로드한 뒤 설치합니다.
    • 실제 프린터가 없어도 됩니다.
    • HP LaserJet 5200은 민원서류 출력 액티브엑스에서 호환되는 프린터입니다.
    • PCL5, PCL6 드라이버는 안됩니다. 반드시 PostScript 드라이버를 설치합니다.
    • 윈도우7 설치 순서
      • 다운로드한 드라이버 설치 파일 실행
      • Unzip 버튼 클릭
      • 최종 사용자 사용권 계약에서 예 버튼 클릭
      • 일반모드를 선택한 뒤 다음 버튼 클릭
      • 로컬 프린터 추가(L) 클릭
      • 기존 포트 사용(U)에서 LPT1: (프린터 포트)를 선택한 뒤 다음 버튼 클릭
      • HP Universal Printing PS를 선택한 뒤 다음 버튼 클릭
      • 프린터 이름은 기본 값 그대로 사용. 다음 버튼 클릭
      • 프린터 공유는 공유 안 함을 선택한 뒤 다음 버튼 클릭
      • 마침 버튼 클릭
      • 마침 버튼 클릭
    • 윈도우8 설치 순서
      • 다운로드한 드라이버 설치 파일 실행
      • Unzip 버튼 클릭
      • 최종 사용자 사용권 계약에서 예 버튼 클릭
      • 일반모드를 선택한 뒤 다음 버튼 클릭
      • 프린터 추가에서 다음 버튼 클릭
      • 다른 옵션으로 프린터 찾기에서 수동 설정으로 로컬 프린터 또는 네트워크 프린터 추가를 선택한 뒤 다음 버튼 클릭
      • 기존 포트 사용(U)에서 LPT1: (프린터 포트)를 선택한 뒤 다음 버튼 클릭
      • HP Universal Printing PS를 선택한 뒤 다음 버튼 클릭
      • 프린터 이름은 기본 값 그대로 사용. 다음 버튼 클릭
      • 프린터 공유는 공유 안 함을 선택한 뒤 다음 버튼 클릭
      • 마침 버튼 클릭
      • 마침 버튼 클릭
  2. Printfil을 다운로드한 뒤 설치합니다.
    • Printfil은 프린터 출력을 PostScript(.ps) 파일로 저장해주는 프로그램입니다.
    • 32비트, 64비트 윈도우 모두 사용 가능합니다.
    • 설치 순서
      • 다운로드한 Printfil 설치 파일 실행
      • 설치는 특별한 것이 없으므로 기본값 그대로 설치
      • 윈도우 비스타 이상(윈도우7, 8)에서는 실행된 Printfil을 종료하고, 반드시 Printfil을 관리자 권한으로 다시 실행합니다. 관리자 권한으로 실행하지 않으면 출력 중에 용지 부족 에러가 발생합니다.
      • 설정 화면이 나오면 Next 버튼을 계속 클릭하여 기본값 그대로 사용합니다.
  3. PDFCreator를 다운로드한 뒤 설치합니다.
    • PDFCreator는 PostScript 파일을 PDF로 변환해주는 프로그램입니다.
    • 설치 후 설정은 기본값 그대로 사용합니다.

출력하기

  1. 설치가 끝났으면 민원서류 사이트에 접속해서 민원서류를 출력합니다. 출력할 때 방금 설치한 HP Universal Printing PS 프린터로 출력합니다.
  2. 잠시 기다리면 Printfil에서 출력 결과물이 Preview 창에 표시됩니다.
    • Some escape sequences are printed… 창이 표시되면 아니오(N) 버튼을 클릭합니다.
    • File -> Create TXT file를 실행하여 텍스트 파일(Preview.txt)로 저장합니다.
  3. PDFCreator를 실행하고 방금 저장한 Preview.txt 파일을 드래그하여 PDFCreator에 끌어놓습니다(Document -> Add로 파일을 넣으면 안됩니다). 그러면 파일 저장 창이 표시되는데 Save 버튼을 클릭하여 PDF로 저장하면 됩니다.

스마트폰의 마이크를 pc서 사용하기

http://www.senstic.com/android/PocketAudio/download.aspx

이 프로그램을 사용하면 스마트폰의 마이크를 pc로 전달하거나 PC의 스피커를 스마트폰으로 사용할수 있음,

이 프로프램은 안드로이드, 아이폰에서 동시에 사용할수 있으며 각자 구입을 해야 한다. 2달라 미만인것 같으니

퀄도 상당히 괜츈하게 나오는듯,,

WO MIC 의 경우 스마트폰이 서버가 되고 PC가 클라이언트가 되는방식인데

이 프로그램은 스마트폰이 클라이언트가 되고  PC가 서버가 되는 방식인듯 하다

PocketAudio