달력

122019  이전 다음

  • 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
  • 31
  •  
  •  
  •  
  •  

황상철님의 애자일 SCRUM 방법론 적용기와 이상민님의 GWT 그리고 GWT-ext 세션에 이어서 제가 findbugs 예찬론을 폈습니다. (각 링크마다 발표자료 있습니다.)
30명이 안되는 인원이 모였고, 반은 SDS소속 반은 인터넷을 통해서 신청받은 분들이 모였습니다.

세 세션의 공통점이 있는 듯 했습니다.
회사 조직은 새로운 것을 나에게 요구하지 않는다. 
그래서 내가 새로운 방법과 기술을 익혀도 회사는 무관심하다.
새로운 것을 적용해 프로세스를 개선하려고 해도 회사 조직은 달가워하지 않는다.
귀찮아 한다. 이렇게 말하면서 "좋아 보이는군요. 하지만 너무 이상적이라 우리 팀에는 맞지 않아요." 시도하기를 꺼린다.
때문에 새로운 것을 적용하려면 또 다른 노력이 필요하다. 

황상철님의 소규모의 성공 사례부터 만들어 나가기를 얘기했고, 제 생각은 사람들의 행동을 이끌어 내는 것은 감동이기 때문에 쇼를 하라고 얘기합니다. 이상민님은 쉬면서 멋진 GWT 애플리케이션을 만드셨더군요.

9시까지 예정이었지만 25분씩 발표로 8시 반 정도에 끝나고 뒷풀이 장소로 옮겼습니다.

거대 조직 내의 조용한 움직임.
당장은 효과가 없지만, 10년, 20년 지난 우리나라 업계의 중요한 뿌리가 될 것입니다.
꽃이야 C자 들어간 직위의 사람들 몫이죠. 
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. tuning-java  댓글주소 수정/삭제 댓글쓰기 2008.11.29 01:38 신고

    형님 그거 쉬면서 만든게 아니고. ^^;
    지난 추석 때쯤 만든거에요~~~.
    지금은 틈틈이 버그 수정중이구요.

    그리고, 강의해주셔서 감사합니다. ^^;

  2. 에코지오  댓글주소 수정/삭제 댓글쓰기 2008.12.02 11:07 신고

    [회사 조직은 새로운 것을 나에게 요구하지 않는다.
    그래서 내가 새로운 방법과 기술을 익혀도 회사는 무관심하다.
    새로운 것을 적용해 프로세스를 개선하려고 해도 회사 조직은 달가워하지 않는다.
    귀찮아 한다. 이렇게 말하면서 "좋아 보이는군요. 하지만 너무 이상적이라 우리 팀에는 맞지 않아요." 시도하기를 꺼린다.
    때문에 새로운 것을 적용하려면 또 다른 노력이 필요하다.]

    캐동감 ^^b

Hudson 업그레이드

java 2008. 11. 26. 15:57
Hudson 메인 페이지의 Manage Hudson 메뉴로 이동하면 신규 버전 알림이 노란 줄로 뜹니다. download 링크를 클릭하면 바로 다운 받을 수 있죠. 그리고 플러그인의 업데이트는 Manage Plugins 설명에 (updates available) 이라고 빨간 글씨로 보입니다.


Manage Plugins로 가면 Updates 탭에 해당 플러그인이 보입니다. 체크하고 우측 하단의 Install 버튼을 클릭하면 업데이트가 진행됩니다. 

대체로 설치 후에 hudson을 재시작해줘야 됩니다.



그리고 다른 얘기인데, findbugs 플러그인에서 보여주듯이 okjsp사이트의 버그는 다 잡았습니다. 냐호~



Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. ncrash  댓글주소 수정/삭제 댓글쓰기 2008.11.26 16:20

    벌레 숙청하셨군요 ㅊㅋㅊㅋ

    문득 세스코가 생각나는데요 ㅎㅎ

  2. Kenny  댓글주소 수정/삭제 댓글쓰기 2008.11.26 16:46

    보통은... CheckStyle 보다 PMD 가 에러가 적게 잡혀요..
    PMD는 기본 옵션이 적은 편이라..
    PMD 먼저 하시고 CheckStyle 하시거나...
    코드 스타일에 너무 신경 안쓰시고 싶으시면 PMD 만으로도 충분해요.

  3. Herlock  댓글주소 수정/삭제 댓글쓰기 2008.11.27 10:14

    너무 옛날버전을 사용하고 있어서 그런지 업그레이드 메뉴가 안뜨네요 ㅎㅎ
    설정이랑 페이지 좀 수정한거 저장하고 통째로 엎어야 겠군요 ㅎㅎ

파일 첨부합니다.
지난 발표자료에 적용점에 대한 고민만 살짝 추가했습니다.
okjsp 사이트의 버그는 하나 남았습니다.
이것도 곧 잡으러 출격합니다.

Posted by 케누 kenu허광남

댓글을 달아 주세요

hudson의 최상위 페이지의 메뉴 "Manage Hudson(Hudson의 관리)" 메뉴로 갑니다.

Manage Plugins 를 선택하고, Available탭에서 findbugs 플러그인을 설치합니다.

hudson을 콘솔에서 재시작하고, 프로젝트의 configure 메뉴에 가면 findbugs 활성화 체크박스가 하단에 보입니다. 체크하면 hudson에서 findbugs 플러그인이 활성화됩니다.

Build 섹션에서 Add Build Step버튼을 클릭해서 findbugs 빌드를 추가합니다. 빌드서버에 설치된 findbugs 경로를 findbugs.home 에 지정합니다. 환경변수에 $FINDBUGS_HOME으로 지정되면 이 과정이 필요없습니다.

build.xml 의 findbugs 타겟 소스는 참고로 다음과 같습니다.
    <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/>
   <target name="findbugs">
      <findbugs home="${findbugs.home}"
                output="xml:withMessages"
                outputFile="findbugs.xml" >
        <sourcePath path="${basedir}/src" />
        <class location="${publish.home}/WEB-INF/classes" />
      </findbugs>
    </target>

콘솔에 다음과 같은 메시지가 찍히면서 findbugs에 대한 보고서를 확인할 수 있습니다.

참조하는 jar파일의 경로가 지정되지 않으면 이런 메시지가 나타납니다.

 [findbugs] The following classes needed for analysis were missing:
[findbugs]   javax.servlet.http.HttpServlet
[findbugs]   javax.servlet.Servlet

findbugs 태스크에 다음과 같은 jar경로가 있는 줄을 추가하면 위 경고가 해결됩니다.
      <findbugs home="${findbugs.home}"
                output="xml:withMessages"
                outputFile="findbugs.xml" >
       <auxClasspath path="${catalina.home}/common/lib/servlet-api.jar" />
        <sourcePath path="${basedir}/src" />
        <class location="${publish.home}/WEB-INF/classes" />
      </findbugs>


버그의 추이가 그래프로 나타납니다.

버그의 자세한 리포트는 프로젝트 왼쪽 메뉴의 FindBugs Warnings 를 통해서 확인가능합니다.

이제 남은 일은 버그의 수를 줄이는 것이겠죠.
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. ncrash  댓글주소 수정/삭제 댓글쓰기 2008.11.27 17:03

    어제 세미나 듣고 바로 적용해봤어요 잘 되네요^^;

    약간의 삽질끝에 적용해보니 250개의 warring이 ㅎㄷㄷ

    또 하나 배우고 가네요 항상 감사합니다

findbugs 세미나 중에 박현준님 덕분에 알게 된 기능입니다.
findbugs 플러그인을 깔지 않아도 가니메데에서는 런타임 익셉션에 대한 경고가 뜨게 됩니다. 먼저 이미지를 보시죠.

Null pointer access라는 메시지가 보입니다. 실행결과 나타나는 것도 아니고, 코드 분석 후 뿌려지는 내용입니다. 아직 깊이 맛본 기능은 아니지만 이클립스의 똑똑해지는 모습이 가볍게만 느껴지지 않습니다.

박현준님 감사합니다. ^^

Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. 하얀말  댓글주소 수정/삭제 댓글쓰기 2008.11.24 16:04

    오옷, Findbugs가 Eclipse plugin이 있었군요. 찾아봐야겠슴다. 감사감사!

  2. 박현준  댓글주소 수정/삭제 댓글쓰기 2008.11.24 20:18

    앗 포스트에 이름까지 직접 언급해주시다니... ^^;;
    kenu님 블로그는 RSS로 매일 잘 보고 있습니다. 매번 도움되는 글 감사해요~

프로젝트 모니터링이라고 제목을 정한 이유는 Continuous Integration 은 평소 잘 하라는 의미입니다. 빅뱅통합이라고 하는 프로젝트 오픈 직전의 코드 통합은 전장을 방불케합니다. 평소에 만들어지는 코드에 대한 건강진단은 프로젝트가 산으로 가는 것을 막아줍니다. 그리고 버그가 숨어있을 여지도 줄여줍니다.

이번 세미나는 hudson을 중심으로 프로젝트의 건강상태를 모니터링할 수 있는 방법에 대해서 공유하려고 합니다.

소스 코드 공유
 - SVN,CVS
 - 저장소의 무결성
빌드서버
 - only for application source codes
Hudson
 - Continuous Integration Tools
 - Build Automation
 - Plugins
Project Report
 - JUnit
 - FindBugs
 - Checkstyle
 - PMD


강사: 허광남 okjsp운영자

장소: 아트레온 토즈 (신촌역 4번출구 아트레온극장 14층)
약도: http://www.toz.co.kr/v2/01about/pop_map_art.gif

일시: 2008/11/15 토 오전 10:00~12:00

회비: 20,000원 (당일 접수, 영수증 가능)

인원: 선착순 25명

 

메일로 신청받습니다.

kenu 골뱅 okjsp.pe.kr

 

이름:

닉네임:

이메일:

휴대폰:

 

본 강의는 실습강의가 아닙니다.

 

Posted by 케누 kenu허광남

댓글을 달아 주세요

백기선님이 잘 번역하신 글입니다.
http://www.ibm.com/developerworks/kr/library/j-ap07088/index.html?ca=drs-kr 
findbugs를 통해서 코드의 취약성을 발견할 수 있었습니다.

CheckStyle, PMD, JDepend 등의 도구는 코드의 유지보수성과 가독성, 확장성을 떨어뜨리는 구문을 찾아줍니다.
이러한 도구들의 사용법과 리팩토링에 대한 글이 올라왔습니다. 아울러 글에서는 Switch구문을 polymorphism으로 리팩토링하기, 중복코드 줄이기, 긴 메소드(큰 클래스) 경량화하기, 너무 많은 import 줄이기 등에 대한 예들이 나옵니다.

참고하시면 좋은 애플리케이션 만드는데 큰 힘이 될 것입니다.
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. 기선  댓글주소 수정/삭제 댓글쓰기 2008.11.05 18:24

    아핫핫... ^^;; 담엔 좀 더 잘 하겠습니다


findbugs-ant.jar 파일을 $ANT_HOME/lib 에 복사한 뒤에 findbugs task를 사용할 수 있습니다.
파일이 많아지면 timeout이나 memory 이슈가 생길 수 있습니다.

참고용으로 적어봅니다.


        <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
        <target name="findbugs" depends="compile">
                <findbugs home="${findbugs.home}" output="xml" outputFile="findbugs.xml"
                        jvmargs="-Xms512M -Xmx1024M " timeout="1800000">
                        <auxClasspath path="${findbugs.home}/lib/Regex.jar" />
                        <sourcePath path="WebContent/WEB-INF/src" />
                        <class location="WebContent/WEB-INF/classes" />
                </findbugs>
        </target>


조대협님 감사합니다. ^^
Posted by 케누 kenu허광남

댓글을 달아 주세요

findbugs eclipse plugin

java 2008. 10. 8. 16:34


update site url 입니다. http://findbugs.cs.umd.edu/eclipse/
설치가 완료되면 다음과 같은 메뉴가 보입니다.

테스트용으로 에러를 발생시키는 소스를 만들어서 테스트 해봅니다.

package net.okjsp;

public class HelloWorld {

 /**
  * @param args
  */
 public static void main(String[] args) {
  String arg = null;
  System.out.println("Hello World! "+arg.equals("0"));

 }

}


문제가 되는 라인 앞에 버그가 표시됩니다. 더블클릭하면 하단에 findbugs 뷰가 생깁니다.


해당 버그의 내용과 수정 방법에 대해서 표시됩니다.

뷰 메뉴 중 findbugs 퍼스펙티브로 전환하는 아이콘도 있습니다.

클릭하면 다음과 같은 정보를 확인할 수 있습니다.

이제 쎄스코를 부르지 않아도 될 것 같습니다.

 

Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. utsman  댓글주소 수정/삭제 댓글쓰기 2008.10.09 23:59

    어디까지 버그를 잡아내 줄지 흥미진진한 마음으로 설치했습니다. :)

  2. 조성준  댓글주소 수정/삭제 댓글쓰기 2009.04.21 09:11

    아! 전에 보던 그것이네.

    광남이형 이거 괜찮나요?
    함써볼깡..

  3. -TED-  댓글주소 수정/삭제 댓글쓰기 2009.04.21 09:15 신고

    개인적으로 벌레 이미지 맘에 드네효 ㅎㅎ

버그 찾아드립니다.

java 2008. 9. 30. 22:26

http://findbugs.sourceforge.net 메릴랜드(Maryland) 대학에서 공개한 도구입니다. 자바의 버그패턴에 맞춰서 자바 소스코드를 컴파일된 바이트코드로 정적 분석한 후에 어느 부분이 문제가 되는지 자동 리포팅해줍니다.
누군가 내 코드를 검사한다는 것이 개발자에게는 탐탁치 않지만 임신진단시약처럼 자가테스트를 한다면 다른 얘기가 되겠죠. 남에게 보이기 전에 자신의 코드를 깔끔하게 만들 수 있으니까요.

그러나 바쁜 현대인을 위해서 지속적인 통합툴에서 대신해 주기도 합니다. (참고: http://www.ibm.com/developerworks/kr/library/tutorial/j-cq11207/section11.html )

이클립스 플러그인도 있습니다. findbugs의 수많은 옵션을 알지 못해도 간단하게 마우스 버튼으로 조작해서 사용할 수 있습니다. (참고: http://findbugs.sourceforge.net/manual/eclipse.html )

QA역할을 하는 동료가 짐을 덜었다고 좋아하던데, 자기가 짠 코드의 결함 검사는 스스로하는 것이 바람직할 듯 합니다. 경기 후 어지러진 관중석을 보는 듯한 코드는 으윽 이니까요.
Posted by 케누 kenu허광남

댓글을 달아 주세요

  1. Outsider  댓글주소 수정/삭제 댓글쓰기 2008.10.01 09:14

    좋은 정보 감사합니다. 집에가서 좀 만져봐야겠네요.. ㅎㅎㅎㅎ

  2. 수아기  댓글주소 수정/삭제 댓글쓰기 2008.10.01 09:17

    자동화된 도구가 많은것을 도와줄수는 있지만 결국은 또 사람의 손길이 다아야겠죠. 그래도 저런걸 만들어내는 분들 참 대단해요.^^

  3. 조병장  댓글주소 수정/삭제 댓글쓰기 2008.10.01 09:35 신고

    좋은 정보 감사합니다. 잘쓰겠습니다.^-^