2012-09-21 2 views
3

나는 Sonar 모범 사례에 대해 꽤 파고 들었다. 합의 사항은 음파 탐지기가 하루 또는 일주일에 한 번만 발사된다는 것입니다. 밤 동안. 그러나 Jenkins와 같은 CI 서버를 사용한다면 어떨까요? Jenkins는 모든 SVN 커밋을 기반으로 유닛 테스트를 실행하고 환경을 준비하고 Selenium 테스트를 실행합니다. Sonar가 하루에 한 번만 실행되면이 모든 추가 정보가 손실됩니다. 대부분의 팀의 코드 문제와 실패한 테스트는 오후 또는 주말에 해결되었을 가능성이 큽니다. 수중 음파 탐지기는 일요일 밤이나 매일 밤마다 작동합니다. 응용 프로그램이 미리 빌드되고 테스트 된 다음 해당 정보를 기반으로 음파 분석이 실행됩니다. 모든 테스트가 통과 할 가능성이 높습니다. 주요 코드 문제는 저장소에 남아 있지 않으며 QA 팀은 모든 소나 보고서가 녹색으로 표시되기 때문에 문제가 없다고 잘못 판단합니다. 그러나 주/낮에는 프로젝트가 깨진 빌드 등으로 완전히 엉망이되었을 수도 있지만 Sonar 보고서에는 표시되지 않습니다. :)소나를 하루에 한 번만 발사해도 충분합니까?

여기에 뭔가가 누락되었거나 실제로 소니가 처형해야합니까? 모든 커밋, 적어도 한 시간에 한 번?

답변

2

그것은 당신의 필요에 dependes과 당신의 팀의 속도를 구축 할 모든 것이이 없습니다 수 코드 작성, 테스트 및 새 기능을 프로젝트에 통합 할 수 있습니다.

웹 시간대가있는 스프린트가있는 경우 주말에는 월요일에 시작된 버전이 안정적이어서 버그가 없거나 몇 가지 버그 만있을 수 있습니다. 귀하의 스프린트 시간 상자가 일주일이라면, 나는 적어도 하루에 한 번씩 권고 할 것이므로 단위 테스트를하는 등의 결함을 얻을 수 있으므로 프로젝트 품질에 좋은 현실을 부여 할 수 있습니다. 적어도 하루에 한 번 단위 테스트를 실행, Cobertura 같은 코드 커버리지를 사용

  1. ;

    나는이 방법을 추천 할 것입니다

  2. PMD, checkstyle 등과 같은 코드 분석을 사용합니다. 가능하면 아키텍처에 적용되는 자체 규칙을 만들어 프로젝트의 품질 측면에서 더 많은 가치를 창출하십시오.
  3. 시간대를 스프린트로 생각한다면, 수중 음파 탐지기에서 빌드의 빈도를 선택하고 정말로 필요로 할 때만 (시간이 많이 소요되기 때문에) 그것을 실행하는 크론 작업을 예약하십시오.

이러한 것들은 제가 프로젝트에서 사용하는 관행입니다.하지만 도구 (Sonar)는 프로젝트의 품질에 대한 정보를 제공하므로 아키텍쳐, 팀 및 엔지니어링 관행.

+1

좋은 지적, 고마워. 위의 다른 의견은 실제로 품질 보고서를위한 저장소가 하나만 있어야한다는 점에서 귀하의 대답을 부분적으로 타겟팅합니다. Jenkins cobertura 보고서는 엄청난 품질 문제를 나타낼 수 있지만 Sonar에는 표시되지 않습니다. 당연히 단위 테스트 보고서로는 Sonar를 실행할 수 있지만 모든 커밋에 대해 코드 분석을 전혀 수행하지 않고 매일 또는 일주일에 한 번 테스트 보고서와 코드 분석 보고서를 실행할 수 있습니다. 하나는 구성을 실행하는 별도의 Sonar를 유지해야하지만 괜찮습니다. – user1340582

+1

소나는 테스트 및 코드 품질에 대한 정보를 표시 할 수있는 품질이 부족합니다. 실제로 Sonar는 웹 인터페이스에서 Cobertura, PMD, Checkstyle 등과 같은 타사 도구를 사용하여 정보를 수집하는 도구 일뿐입니다. 그것은 그것보다 훨씬 나아질 수 있습니다. – gdfbarbosa

1

소나가 수집하는 대부분의 데이터는 코드가 리팩토링되지 않는 한 빌드에서 빌드로 변경되지 않는 정적 분석 정보 (복잡성, 코드 스타일 위반 등)이므로 한 번 실행하면 충분합니다 하루. 또한 Sonar 분석이 빌드 실행 시간에 추가됩니다. 내 작업에서는 처음부터 컴파일하고 테스트하는 데 오래 걸리는 빌드에 2-3 분을 추가 할 수 있습니다.

모든 CI 빌드에 대한 코드 적용 범위 및 테스트 결과를 수집하려는 경우 Jenkins에서이를 수행하고 Jenkins를 빌드 상태에 대한 조기 경보 시스템으로 사용할 수 있습니다. 전체 코드 품질 및 유지 관리 가능성에 대한 장기적인 분석을 위해 Sonar를 남겨 둡니다. .

당신은 여전히 ​​수중 음파 탐지기의 트렌드 코드 검사 및 시험 결과를 귀하의 질문에 언급 한 바와 같이, 당신은 단지 CI 새로운 개발을

+1

매 커밋마다 cobertura를 사용하여 단위 테스트를 실행하고 매일 밤 소나 분석을 실행할 수 있습니다. 그러나, 나는 이것이 Sonar를 당신의 중앙화 된 질의 저장소로 사용하는 모든 점을 무너 뜨리는 것이라고 생각합니다. cobertura가 Sonar없이 실행되면 Jenkins와 Sonar 두 곳에서 품질 메트릭을 시작하게됩니다. 품질 보증 팀의 누군가는 소나 측정 항목을보고 "이 기능은 훌륭하지만 어떻게 작동합니까?"라고 말합니다. 그런 다음 음파 탐지기의 일부가 아닌 _other_ 테스트 보고서를 파기 시작해야합니다. 그러면 프로젝트에서 품질이 좋지 않은 것을 발견하게됩니다. – user1340582

+0

품질에 대한 정의에 따라 달라질 수 있습니다. 내 경험으로는 제품 품질에 기여하는 모든 요소에 대한 개요를 파악할 수있는 단일 장소를 갖는 것이 매우 어렵습니다. 따라서 CI 시스템을 사용하여 즉각적인 품질 "중단"(컴파일 실패, 테스트 실패, 임계치 아래로 떨어지는 코드 커버 리지 등)를 알려주고 더 장기적인 추세를 유지하기 위해 Sonar를 유지합니다. 질문에서 언급 한대로 Sonar에서 코드 커버리지 및 테스트 결과를 추세로 유지할 수 있습니다. 모든 CI 빌드에 대해 필요하지 않습니다. –

1

주/일주일에 한 번 Sonar를 실행하면 '모범 사례'로 간주되어서는 안됩니다.사용 가능한 하드웨어 및 품질 측정의 품질을 고려하면 현재 가능한 최상의 방법 일 수 있지만, CI 환경에서 모든 커밋에 대한 피드백이 필요합니다 (실제로는 커밋 내에서 의견을 받아야합니다.) Smalltalk & MOOSE 모든 방법에 저장). 코드 복잡성 및 현재 적용중인 부분의 테스트 적용 범위 변경은 하루에 한 번보다 훨씬 작은 세밀도를 갖는 시각화/측정 중 일부입니다.

Sonar가 빌드에 많은 시간을 추가하는 것은 기본적인 문제가 아니라 구현 문제이며 정보 캐싱, 느리고 빠른 측정 사이의 분할, 모듈로 분할, 비동기 적으로 실행 등 여러 가지 방법으로 해결할 수 있습니다.