Go 언어 이용의 리포지토리를 Inspecode로 정적 해석+테스트 해 본다

5260 단어 5RocroInspecode

Inspecode란?



Inspecode 은 CodeClimate 및 SideCI와 같은 정적 코드 분석 서비스의 일종입니다. 문서 에 있는 것처럼, 꽤 많은 언어와 툴에 대응하고 있는 것이 특징입니다. 그리고 정적 코드 해석이라고 하면서, Go 언어나 Javascript에 관해서는 테스트의 실행도 할 수 있어 버립니다.

이번에는 Go 언어를 이용한 리포지토리에 대해 Inspecode에서 정적 코드 해석 + 테스트 실행을 시도합니다.

Disclaimer



저는 Inspecode 개발에 관여합니다. 일본어의 튜토리얼이 전혀 없기 때문에 시험에 Qiita에 투고해 보았습니다.

사용할 리포지토리



gitleaks 라는 git에 비밀 정보를 커밋하고 있는지 확인하는 도구의 리포지토리를 대상으로 해 보겠습니다.

절차



1. gitleaks 리포지토리 포크





Organization 부하에 Fork하면 나중에 귀찮아서 개인 계정 부하에 Fork하는 것이 좋습니다. .

2. 구성 파일 추가



다음 구성 파일을 rocro.yml라는 이름으로 git 저장소 바로 아래에 추가합니다. 설정 파일 없이도 어느 정도는 움직입니다만, 이번은 테스트도 실행하고 싶기 때문에 미리 만들어 둡니다.
inspecode:
  gofmt:
    thresholds:
      num-issues: 0
  golint:
    thresholds:
      num-issues: 0
  goimports:
    thresholds:
      num-issues: 0
  go-test:
    thresholds:
      num-issues: 0

사용하려는 도구와 구문 분석 작업을 실패로 간주하는 Issues 수의 임계값을 지정합니다. 예를 들어 이번 설정이라면, 어느 쪽의 툴이 하나라도 Issue를 지적하면, 작업 실패로 합니다.

그 밖에도 Go 언어에서는 다음 도구을 사용할 수 있으므로 필요에 따라 추가해 보세요.



3. Inspecode에 Sign in/up



여기 페이지 에서 Sign in/up 할 수 있습니다. GitHub 계정이 필요합니다.

4. gitleaks 리포지토리 등록



Top 페이지에서 Repositories 목록 페이지를 열고,



gitleaks의 저장소를 등록합니다.



등록하면 자동으로 첫 번째 분석 작업이 실행됩니다.

5. 분석 작업 열기



Reports 목록 페이지를 열고,



Loading 아이콘을 누릅니다.



6. 분석 작업의 내용 확인



다음과 같이 도구별로 실행 성공 여부가 표시됩니다. go test 는 성공, gofmt , goimports , golint 는 실패하고 있음을 알 수 있습니다.


gofmt 등이 실패하고 있는 것은, 툴이 Issue를 지적했기 때문이라고 생각됩니다. 지적한 이슈를 보려면 View Report 버튼을 누릅니다.



7. 보고서 확인



다음과 같은 형식으로 해석 결과를 확인할 수 있습니다.



Issues 탭을 열면 도구가 지적한 Issues를 나열할 수 있습니다.



gofmt와 goimports가 Issue를 지적합니다.

분석 작업의 성공 여부는 GitHub에도 자동으로 반영되므로 Pull Request에서 확인할 수도 있습니다.



요약



Inspecode를 사용하여 Go 언어를 이용한 리포지토리에 대해 정적 코드 분석 + 테스트 실행을 시도했습니다. 마지막으로, 이번에는 소개할 수 없었던 기능을 조금 나란히 둡니다. .

  • 구성 파일의 ignore에서 특정 디렉토리를 구문 분석에서 제외 할 수 있습니다.

  • 구성 파일의 runtime 에서 Go 버전을 지정할 수 있습니다. 아직 1.10 대응되어 있지 않습니다만. .
  • Issue를 자동 수정하는 Pull Request의 발행. 도구 목록 에서 auto-fix 가 있는 도구가 대상입니다. 설정 방법은 각 툴의 문서를 봐 주세요.
  • 좋은 웹페이지 즐겨찾기