소나-오픈 소스 프로젝트 및 코드 품질 모니터링
올리비에 가우 딘,프레디 말렛,소나 소스, http://www.sonarsource.com
수중 음파 탐지기는 무엇입니까?
소나(현재 소나 큐브라고 함)는 개발 팀이 소스 코드 품질을 관리하는 데 사용하는 오픈 소스 플랫폼입니다. 수중 음파 탐지기는 마음에 주요 목적으로 개발되었다:최소한의 노력으로 모든 사람이 코드 품질 관리에 액세스 할 수 있도록.
따라서 소나는 코드 분석기,보고 도구,결함 사냥 모듈 및 타임머신을 핵심 기능으로 제공합니다. 그러나 그것은 또한뿐만 아니라 개발자뿐만 아니라 관리자의 요구를 해결하여 소나 소스 코드 품질에 대한 원 스톱 상점을 만들고,기능(35 개 이상의 플러그인을 사용할 수)를 확장 할 수있는 지역 사회를 가능하게하는 플러그인 메커니즘을 떠난다.
언어 측면에서,소나는 핵심 자바의 분석을 지원하지만,보고 엔진은 언어 불가지론으로 플러그인(오픈 소스 또는 상업)을 통해 자바 스크립트,
버전 2.0 이후,수중 음파 탐지기는 7 축에서 품질을 커버 할 수 있으므로보고:
- 중복 코드
- 코딩 표준
- 단위 테스트
- 복잡한 코드
- 잠재적 버그
- 설계 및 아키텍처
소나는 일회성 감사에 사용할 수 있지만 회사의 코드 품질에 대한 글로벌 지속적인 개선 전략을 지원하도록 설계되었으므로 공유 중앙 집중식으로 사용할 수 있습니다.품질 관리를위한 저장소.
웹 사이트:https://www.sonarqube.org/
제품 버전:수중 음파 탐지기 2.0
라이센스: 지원:https://www.sonarsource.com/support/
플러그인: https://docs.sonarqube.org/display/PLUG/Plugin+Library
왜 소스 코드 품질을 관리해야합니까?
잘 작성된 프로그램은 기능 구현 비용이 프로그램의 수명 내내 일정한 프로그램입니다. 다른 방법을 주위에 둘 때 그것은 더 강해진다:나쁘게 작성된 프로그램은 기능을 구현하는 비용이 시간 내내 증가하는 프로그램입니다.
그것은 나쁜 소리,그렇지?
우리는 모두 새로운 프로젝트가 시작되는 상황을 보았습니다. 첫 번째,두 번째,세 번째 릴리스 그리고 갑자기 팀의 속도가 감소하기 시작합니다. 네 번째 릴리스가 연기됩니다.세 번째로 무언가를 고치는 것은 다른 것을 깨뜨립니다…
여기서 무슨 일이 일어나고 있습니까? 증상을 감안할 때,우리는 팀이 다른 것들 사이에 기술 부채로 고통 받고 있으며 이해 관계자가 그것을 인식하지 못하므로 처리 할 수 없다는 가정을 할 수 있습니다.
그러나 이것은 프로젝트가 새롭고 가시성이 있기 때문에 누군가가 그것을 처리 할 것이기 때문에 해결 될 것입니다(적어도 우리는 그렇게 희망 할 수 있습니다).
그러나이 예제는 단지 스타터,우리,그것은 사람들,그 개발 미만 6 개월 전에 시작 응용 프로그램에 우리의 대부분의 시간을 작동하지 않습니다! 우리의 작업은 주로 기존 응용 프로그램에 대한 업그레이드로 구성되어 있습니다. 즉,대부분의 돈이 지출되는 곳,가시성이 떨어지는 곳,종종 우리가 할 수있는 한 많은 일을 할 수있는 큰 연간 봉투가있는 곳,코드를 이해할 수있는 유일한 사람이기 때문에 중요한 사람들이있는 곳,변경이 얼마나 오래 걸릴지 모르는 곳,회귀가 빈번하고 사람들이 변경하기를 두려워합니다. 그리고 그것에 사업에서 기본적으로 주의 무엇이든지,다만 한다 그것을 없다!
소스 코드 품질을 관리하는 것은 가시성을 제공하고 이에 대한 제어를 더 많이 제공하므로 투자 수익률을 최적화하는 것입니다:
- 유지 보수가 얼마나 힘들지,우리는 무엇을 기대할 수 있을까
- 상황이 악화되지 않는다는 사실
- 시스템의 중요한 부분에 약간의 주의를 기울여야 한다는 사실,예를 들어 단위 테스트를 통한 적용 범위를 늘리고,사이클을 억제하고,중복을 제거해야한다는 사실
더 나아가 개발자들이 몇 가지 문제를 믿을 때 손을 들어줄 백업을 제공합니다.리팩토링은 변경에 조금 추가 할 것이 필요하지만 좋은 투자 수익을 가질 것입니다.
소스 코드 품질을 관리하는 방법?
프로젝트의 소스 코드 분석을 수행 할 때 살펴 봐야 할 일곱 가지 기술 축이 있으며 수중 음파 탐지기는 일곱 가지 모두의 관리를 지원할 수 있습니다. 수중 음파 탐지기 팀에서,우리는 그들에게 개발자의 7 대죄를 호출하고 싶다:
- 코딩 표준 및 모범 사례에 대한 존중 없음
- 소스 코드에 주석이 부족함
- 코드 줄이 중복됨
- 복잡한 구성 요소 및/또는 구성 요소 간의 복잡성 분포 불량
- 단위 테스트에 의한 코드 적용 범위가 없거나 낮음,특히 프로그램
- >
- 잠재적 인 버그 남기기
- 스파게티 디자인(패키지 사이클…)
소스 코드 품질 관리를 수행 할 때 첫 번째 단계는 실제로 이러한 축 중 어떤 축이 사용자에게 중요하고 어떤 축이 확장되는지를 정의하는 것입니다.그런 다음 현재 상황에 따라 목표 수준에 도달 할 계획을 세워야합니다(단순히 높은 수준의 품질을 유지할 수 있음). 매우 중요한 것은 전체 개발 팀에 의해 완전히 채택 될 때 작게 시작하고 더 커지는 것입니다.
자,이 접근법에서 수중 음파 탐지기를 사용하는 방법을 살펴 보겠습니다.
품질 프로파일
수중 음파 탐지기는 프로젝트의 유형에 필요한 수준을 적응하기 위해 여러 품질 프로파일을 관리 할 수 있습니다(만 지원,새 프로젝트,중요한 응용 프로그램,기술 라이브러리…).
활성화/비활성화/가중치 코딩 규칙
자동 경고에 대한 메트릭에 대한 임계값 정의
프로젝트/프로필 연결 정의
대시보드
수중 음파 탐지기 에는 문제가 있을 수 있는 힌트를 얻고 프로젝트를 비교할 수 있는 큰 그림을 제공하는 2 개의 대시보드가 포함되어 있습니다.:
- 모든 프로젝트를 보여주는 통합 보기
- 프로젝트 대시보드는 모듈 및 패키지 수준에서도 사용할 수 있습니다.
사냥 도구
문제가 되는 것으로 보이는 것이 실제로 문제라는 것을 확인하기 위해 수중 음파 탐지기는 개요에서 가장 작은 세부 정보로 이동할 수 있는 사냥 도구 세트를 제공합니다.:
타임 머신
응용 프로그램이 어디에 서 있는지 알고 의심의 여지가 매우 중요합니다. 그러나 더 중요한 것은 그 진화를 알고 이해하는 것입니다.실제로 단위 테스트에 의한 코드 커버리지의 20%가 있다는 것을 아는 것은 가치가 있습니까? 그것은 좋은 또는 나쁜? 두 달 전에 15%또는 25%였다면 대답은 다릅니 까? 타임머신은 진화를 보고 과거를 재현할 수 있게 해주며,특히 프로젝트
의 버전을 기록할 때 수중 음파 탐지기는 어떻게 작동하는가?
수중 음파 탐지기는 세 가지 구성 요소로 구성된 매우 간단하고 유연한 아키텍처로 구성됩니다:
- 메이븐 플러그인에 그룹화되어 있으며 필요에 따라 트리거되는 소스 코드 분석기 집합입니다. 분석기는 데이터베이스에 저장된 구성을 사용합니다. 수중 음파 탐지기는 분석을 실행하기 위해 메이븐에 의존하지만 메이븐 및 비 메이븐 프로젝트를 분석 할 수 있습니다.
- 데이터베이스는 분석,프로젝트 및 글로벌 구성의 결과를 지속 할뿐만 아니라 타임 머신에 대한 과거 분석을 유지합니다. 프로젝트에 코드 품질 대시보드를 표시하고,결함을 찾고,타임머신을 확인하고,분석을 구성하는 웹 보고 도구입니다.
분석기의 일환으로 소나 코어는 코딩 규칙 위반을 찾고,잠재적 인 버그를 감지하고,단위 테스트(코버 투라,클로버)에 의한 커버리지를 측정 할 수있는 최상의 품종 도구를 시작합니다. 그러나 수중 음파 탐지기를 진정으로 독특하게 만드는 것은 소스 코드뿐만 아니라 바이트 코드를 구문 분석하고 결과를 혼합하는 자체 코드 분석기 인 오징어입니다.
분석은 메이븐 플러그인을 통해 실행되기 때문에,수중 음파 탐지기는”지속적인 통합”환경에서 쉽게 시작할 수 있습니다.
아파치 커먼즈 컬렉션 프로젝트의 사용 사례
수중 음파 탐지기를 실행하기 위한 전제 조건은 자바와 메이븐을 박스에 설치하는 것이다. 이 경우,당신은 5 간단한 단계에서 수중 음파 탐지기를 실행할 수 있습니다:
1. https://www.sonarqube.org/다운로드에서 배포판을 다운로드하고
2 의 압축을 풉니다. 콘솔을 열고 서버 시작:
> $이 경우,당신은 그것을 할 수 있습니다.윈도우에 박쥐
> $SONAR_HOME/bin//sonar.sh 다른 플랫폼에서
3. 소스를 체크 아웃할 콘솔을 열고 다음을 실행합니다.
4. 같은 디렉토리
5 에서 소나:소나를 설치합니다. 검색http://localhost:9000
응용 프로그램의 홈 페이지에는 몇 가지 구성 가능한 메트릭과 함께 품질 관리하에 있는 프로젝트 목록이 표시됩니다.
확대하려면,당신은 단순히 프로젝트를 클릭하고 대시 보드를 얻을 수 있습니다
거기에서 당신은 사냥 도구의 시리즈에 액세스 할 수있는 사이에:
핫스팟은”가장”또는”최소”가 파일에 대해 알 수 있습니다…
또한 대시보드의 모든 메트릭을 클릭하여 씬 뒤쪽으로 이동하고 기본 구성 요소별로 메트릭을 볼 수 있습니다
각 사냥 도구는 결국 먹이가 강조 소스 코드에 사냥꾼을 제공합니다
소나 생태계
소나
- 주변에는 매우 역동적인 생태계가 있습니다. 새로운 동작을 추가하여 핵심 기능의 직접 확장,고급 메트릭을 계산하거나 프로젝트를 통합,새로운 메트릭을 추가
- 월 3,000 회 이상 다운로드
- 소나 소스가 이끄는 핵심 개발 팀(http://www.sonarsource.com)
결론
지속적인 통합 엔진 및 테스트는 개발 관행을 주도하고 소스 품질을 관리하는 것은 산업화 노력의 개발 팀을위한 자연스러운 다음 단계처럼 보입니다. 수중 음파 탐지기는 몇 가지 노력과 재미가 목표에 도달 할 수 있습니다.
2010 년에는 수중 음파 탐지기 플랫폼이 계속 발전 할 예정이며,개발의 주요 축은 새로운 언어를 다루고 십오와의 통합을 향상시키는 것입니다.