지속적인 통합에서 IntelliJ 검사 실행

게시됨 Feb 15, 2021
by 앨런 리처드슨
사례 연구

지속적인 통합에서 IntelliJ 검사 실행

게시됨 Feb 15, 2021
by 앨런 리처드슨
리소스 보기
리소스 보기

지속적인 통합에서 IntelliJ 검사 실행

IntelliJ IDEA는 의도를 위해 코드를 작성할 때 IDE 내에서 코딩을 개선하는 데 도움이 되는 기능을 제공합니다. 의도는 일괄 처리하여 소스 전체의 패턴에 대한 코드를 검사하고 명령줄 분석으로 확장하거나 연속 통합에 추가할 수도 있습니다. 이 게시물은 IntelliJ 기능 상자 밖으로 다루고 사용자 지정 의도로 확장 Sensei .


인텔리제이 검사

IntelliJ의 검사 기능은 예를 들어 코딩할 때 IDE에서 동적으로 보고되는 많은 오류의 표시를 유도합니다.

  • 인터페이스로 변환할 수 있는 추상 클래스 를 검색하고,
  • 로컬이 될 수 있는 중복 클래스 필드를 식별,
  • 사용되지 않습니다 메서드의 사용에 대 한 경고,
  • 등.


이러한 검사에서는 IDE에서 연결된 QuickFix가 있는 의도 작업으로 일치하는 코드를 강조 표시합니다.


검사 사용 중단된 API 사용 옵션


코드가 검사와 일치할 때 실시간 IDE 강조 표시를 하면 코딩을 동적으로 개선하는 데 도움이 될 수 있습니다. 코드에서 문제를 식별한 후 IntelliJ 의도 작업을 사용하여 QuickFix에 코드를 사용하면 더 나은 패턴을 강화할 수 있습니다.

검사 프로필

검사는 IDE 내에서, 명령줄 또는 연속 통합 프로세스에서 일괄 처리로 실행될 수 있습니다.

IntelliJ 검사와 일괄 처리로 작업하는 핵심은 검사 프로필을 사용하는 것입니다.

IntelliJ에는 프로젝트에 저장된 검사 프로필과 IDE에 저장된 검사 프로필의 두 가지 기본 검사 프로필이 있습니다.

특정 플러그인 또는 사용 사례(예:)를 구성하기 위해 새 검사 프로필을 만들 수 있습니다.

  • 체크스타일 실시간 스캔만 실행
  • 특정 집합을 실행 Sensei 규칙
  • HTML 검사 실행

프로필의 검사를 IntelliJ 환경 설정에서 사용하도록 설정하거나 비활성화할 수 있습니다. 기본 설정 대화 상자는 사용 가능한 검사 범위를 쉽게 배울 수 있는 방법입니다.


제거하도록 표시된 API 사용 검사


'도구' 아이콘을 사용하면 프로필을 복제하고 새 프로필을 만들어 특정 규칙 집합을 수집할 수 있습니다.


프로필을 복제하는 도구 아이콘


IDE에서 검사 프로필 실행

검사 프로필은 '코드 분석\' 메뉴를 사용하여 IDE 내에서 실행할 수 있습니다.


분석 또는 검사 코드를 사용하여 검사 프로필 실행


분석 기능을 사용하면 테스트 원본을 포함하거나 제외하거나 특정 파일 집합에 대해 검사가 실행되는 범위를 제어할 수 있습니다. 


검사 범위 지정


여기에서 검사 프로필을 관리하여 특정 프로필을 만들거나 구성할 수도 있습니다.


"검사 범위 지정" 대화 상자에서 [확인]을 클릭하면 IntelliJ가 정의된 범위에서 프로필에서 선택한 모든 검사를 실행하게 됩니다.

IntelliJ는 '검사 결과' 탭에서 검사 실행 결과를 보고합니다.


검사 결과 탭에서 검사 실행 결과를 보고합니다.


Sensei 플러그인에서 Secure Code Warrior 사용자 지정 코드 일치 레시피를 만들 수 있습니다. Sensei IntelliJ와 긴밀하게 통합하여 이러한 사용자 지정 레시피를 IntelliJ 의도 작업으로 자연스럽게 사용할 수 있도록 합니다. 즉, 검사로 IntelliJ에 로드되며 검사 프로필을 사용하여 그룹화, 활성화 및 비활성화할 수 있습니다. 사용자 지정 검사 프로필을 만든 다음 코드 검사 분석 기능을 사용하는 것이 권장되는 실행 방법입니다. Sensei 프로젝트 전반에 걸쳐 대량으로 조리법.



명령줄에서 검사 프로필 실행

IntelliJ는 JetBrains에 의해 문서화된 대로 명령줄에서 검사를 실행할 수 있습니다.

- https://www.jetbrains.com/help/idea/working-with-the-ide-features-from-command-line.html


나는 주로 macOS를 사용하고, 다음과 같은 명령줄에서 IntelliJ의 단일 인스턴스를 실행할 수 있습니다 :

오픈 나 "intelliJ IDEA CE.app"


더 쉬운 실행을 지원하려면 셸 명령 스크립트에 이 것을 추가합니다.

vi /usr/로컬/빈/아이디어


스크립트의 내용은 IntelliJ가 제공한 공식 문서에서 작성합니다.

#!/빈/sh
오픈 -나 "IntelliJ IDEA CE.app"-args "$@"



그런 다음 명령줄 검사 프로세스를 단순화할 수 있도록 이 실행 가능한 작업을 만들었습니다.

chmod 755/usr/로컬/빈/아이디어


공식 intellij 문서는 다음과 같이 검사 명령의 일반적인 형태를 설명합니다.

idea inspect <project> <inspection-profile> <output></output></inspection-profile></project>
[<options>]</options>


실제로 경로를 완전히 정량화하고 옵션이 필요하지 않습니다.

아이디어 검사 /사용자/사용자/GitHub/ sensei -블로그 예/사용자/사용자/GitHub/ sensei -블로그 예/.idea/검사프로필/감각프로필.xml /사용자/사용자/GitHub/ sensei -블로그 예/스캔 결과

이렇게 하면 'senseiprofile'에 추가한 모든 검사가 실행되고 결과를 '스캔 결과' 폴더에 보고합니다.


검사 결과 보기

나중에 볼 수 있듯이 연속 통합 내에서 이러한 결과를 보고할 수 있습니다.

또한 IntelliJ 자체에서 '분석 \ 오프라인 검사 결과 보기...' 기능을 사용하여 볼 수 있습니다.


분석 오프라인 검사 결과 보기


이렇게 하면 결과를 '검사 결과' 탭에 로드합니다.


검사 결과 탭에 결과를 로드합니다.


이것은 공식적으로 제트 브레인 사이트에 문서화:

- https://www.jetbrains.com/help/idea/command-line-code-inspector.html#inspection-results


명령줄 실행이 연속 통합 프로세스에 통합되고 검토자가 검사 결과 항목의 전체 소스 컨텍스트를 확인하려는 경우 코드 검토 프로세스 중에 이 작업을 사용할 수 있습니다.

지속적인 통합검사 프로필

연속 통합에 명령줄 검사를 추가할 때 보고서를 자동으로 생성하고 여러 가지 옵션이 열려 있기를 이상적으로 원합니다.

TeamCity는 연속 통합에서 검사 프로필에 대한 상자 지원에서 제공합니다.

- https://www.jetbrains.com/help/teamcity/inspections.html


젠킨스 경고 NG 플러그인 보고서 형식 중 하나로 IntelliJ 검사에서 명령줄 출력을 지원 합니다.

- https://github.com/jenkinsci/warnings-ng-plugin

- https://github.com/jenkinsci/warnings-ng-plugin/blob/master/SUPPORTED-FORMATS.md


'아이디어 CLI 검사'와 같은 커뮤니티 프로젝트는 다른 CI 툴링에서 검사 프로필을 사용하는 것을 지원하기 위해 존재합니다.

- https://github.com/bentolor/idea-cli-inspector


CI 프로세스에서 검사 프로필의 미래는 JetBrains Qodana 프로젝트의 도입과 함께 더욱 밝아 보입니다. Qodana 프로젝트는 공식 Github 액션과 Docker 이미지가있는 IntelliJ의 머리가 없는 버전입니다.

- https://github.com/JetBrains/Qodana


Qodana는 현재 베타 버전이지만 Sensei 팀이 공식적으로 지원되는 실행 플랫폼이 되도록 모니터링중입니다. Sensei 연속 통합의 일부로 규칙.


요약

의도 행동을 통해 코딩 패턴을 강화하고 코딩 중에 실수를 할 때 IDE에서 신속하게 수정할 수 있습니다.

검사 프로필을 사용하면 코드 분석 및 검사 작업으로 일괄 실행될 수 있는 프로파일로 이러한 프로파일을 수집할 수 있습니다. 이 기능은 패턴이 발생하고 코드의 다른 모든 곳에서 놓친 경우 다시 확인하려는 경우에 유용할 수 있습니다.

검사 프로필은 명령줄에서 실행가능하며 "신뢰하지만 확인" 모델을 지원하는 연속 통합 프로세스에 통합하고 우발적인 미끄러짐을 잡을 수도 있습니다.

위의 모든 IntelliJ 기능에 내장되어 있으며 JetBrains는 Qodana의 도입과 함께 지속적인 통합 프로세스를 개선하고 있습니다.


Sensei 레시피는 IntelliJ에 로드되어 기본 의도 작업 역할을 하고 검사 프로필에 수집하여 공식 JetBrains 명령줄 실행 기능에서 제공하는 검사 코드 및 연속 통합 지원을 통해 일괄 검사를 지원합니다.

---


설치할 수 있습니다. Sensei "환경 설정 \ 플러그인"(맥) 또는 "설정 \ 플러그인"(윈도우)를 사용하여 IntelliJ 내에서 다음 그냥 검색 " sensei 보안 코드".

명령줄에서 IntelliJ에서 프로젝트를 실행하려고 하면 이 게시물에 사용된 프로젝트를 '에서 찾을 수 있습니다. sensei -블로그 예제의 리포지토리는 Secure Code Warrior GitHub 계정. 독자에게 연습은 단지 실행됩니다 프로파일을 만드는 것입니다 Sensei 규칙. 시도해 보십시오.


https://github.com/securecodewarrior/sensei-blog-examples

자세히 알아보기 Sensei


리소스 보기
리소스 보기

저자

앨런 리처드슨

더 알고 싶으신가요?

블로그에서 최신 보안 코딩 인사이트에 대해 자세히 알아보세요.

Atlassian의 광범위한 리소스 라이브러리는 안전한 코딩 숙련도를 확보하기 위한 인적 접근 방식을 강화하는 것을 목표로 합니다.

블로그 보기
더 알고 싶으신가요?

개발자 중심 보안에 대한 최신 연구 보기

광범위한 리소스 라이브러리에는 개발자 중심의 보안 코딩을 시작하는 데 도움이 되는 백서부터 웨비나까지 유용한 리소스가 가득합니다. 지금 살펴보세요.

리소스 허브

지속적인 통합에서 IntelliJ 검사 실행

게시됨 Feb 15, 2021
By 앨런 리처드슨

지속적인 통합에서 IntelliJ 검사 실행

IntelliJ IDEA는 의도를 위해 코드를 작성할 때 IDE 내에서 코딩을 개선하는 데 도움이 되는 기능을 제공합니다. 의도는 일괄 처리하여 소스 전체의 패턴에 대한 코드를 검사하고 명령줄 분석으로 확장하거나 연속 통합에 추가할 수도 있습니다. 이 게시물은 IntelliJ 기능 상자 밖으로 다루고 사용자 지정 의도로 확장 Sensei .


인텔리제이 검사

IntelliJ의 검사 기능은 예를 들어 코딩할 때 IDE에서 동적으로 보고되는 많은 오류의 표시를 유도합니다.

  • 인터페이스로 변환할 수 있는 추상 클래스 를 검색하고,
  • 로컬이 될 수 있는 중복 클래스 필드를 식별,
  • 사용되지 않습니다 메서드의 사용에 대 한 경고,
  • 등.


이러한 검사에서는 IDE에서 연결된 QuickFix가 있는 의도 작업으로 일치하는 코드를 강조 표시합니다.


검사 사용 중단된 API 사용 옵션


코드가 검사와 일치할 때 실시간 IDE 강조 표시를 하면 코딩을 동적으로 개선하는 데 도움이 될 수 있습니다. 코드에서 문제를 식별한 후 IntelliJ 의도 작업을 사용하여 QuickFix에 코드를 사용하면 더 나은 패턴을 강화할 수 있습니다.

검사 프로필

검사는 IDE 내에서, 명령줄 또는 연속 통합 프로세스에서 일괄 처리로 실행될 수 있습니다.

IntelliJ 검사와 일괄 처리로 작업하는 핵심은 검사 프로필을 사용하는 것입니다.

IntelliJ에는 프로젝트에 저장된 검사 프로필과 IDE에 저장된 검사 프로필의 두 가지 기본 검사 프로필이 있습니다.

특정 플러그인 또는 사용 사례(예:)를 구성하기 위해 새 검사 프로필을 만들 수 있습니다.

  • 체크스타일 실시간 스캔만 실행
  • 특정 집합을 실행 Sensei 규칙
  • HTML 검사 실행

프로필의 검사를 IntelliJ 환경 설정에서 사용하도록 설정하거나 비활성화할 수 있습니다. 기본 설정 대화 상자는 사용 가능한 검사 범위를 쉽게 배울 수 있는 방법입니다.


제거하도록 표시된 API 사용 검사


'도구' 아이콘을 사용하면 프로필을 복제하고 새 프로필을 만들어 특정 규칙 집합을 수집할 수 있습니다.


프로필을 복제하는 도구 아이콘


IDE에서 검사 프로필 실행

검사 프로필은 '코드 분석\' 메뉴를 사용하여 IDE 내에서 실행할 수 있습니다.


분석 또는 검사 코드를 사용하여 검사 프로필 실행


분석 기능을 사용하면 테스트 원본을 포함하거나 제외하거나 특정 파일 집합에 대해 검사가 실행되는 범위를 제어할 수 있습니다. 


검사 범위 지정


여기에서 검사 프로필을 관리하여 특정 프로필을 만들거나 구성할 수도 있습니다.


"검사 범위 지정" 대화 상자에서 [확인]을 클릭하면 IntelliJ가 정의된 범위에서 프로필에서 선택한 모든 검사를 실행하게 됩니다.

IntelliJ는 '검사 결과' 탭에서 검사 실행 결과를 보고합니다.


검사 결과 탭에서 검사 실행 결과를 보고합니다.


Sensei 플러그인에서 Secure Code Warrior 사용자 지정 코드 일치 레시피를 만들 수 있습니다. Sensei IntelliJ와 긴밀하게 통합하여 이러한 사용자 지정 레시피를 IntelliJ 의도 작업으로 자연스럽게 사용할 수 있도록 합니다. 즉, 검사로 IntelliJ에 로드되며 검사 프로필을 사용하여 그룹화, 활성화 및 비활성화할 수 있습니다. 사용자 지정 검사 프로필을 만든 다음 코드 검사 분석 기능을 사용하는 것이 권장되는 실행 방법입니다. Sensei 프로젝트 전반에 걸쳐 대량으로 조리법.



명령줄에서 검사 프로필 실행

IntelliJ는 JetBrains에 의해 문서화된 대로 명령줄에서 검사를 실행할 수 있습니다.

- https://www.jetbrains.com/help/idea/working-with-the-ide-features-from-command-line.html


나는 주로 macOS를 사용하고, 다음과 같은 명령줄에서 IntelliJ의 단일 인스턴스를 실행할 수 있습니다 :

오픈 나 "intelliJ IDEA CE.app"


더 쉬운 실행을 지원하려면 셸 명령 스크립트에 이 것을 추가합니다.

vi /usr/로컬/빈/아이디어


스크립트의 내용은 IntelliJ가 제공한 공식 문서에서 작성합니다.

#!/빈/sh
오픈 -나 "IntelliJ IDEA CE.app"-args "$@"



그런 다음 명령줄 검사 프로세스를 단순화할 수 있도록 이 실행 가능한 작업을 만들었습니다.

chmod 755/usr/로컬/빈/아이디어


공식 intellij 문서는 다음과 같이 검사 명령의 일반적인 형태를 설명합니다.

idea inspect <project> <inspection-profile> <output></output></inspection-profile></project>
[<options>]</options>


실제로 경로를 완전히 정량화하고 옵션이 필요하지 않습니다.

아이디어 검사 /사용자/사용자/GitHub/ sensei -블로그 예/사용자/사용자/GitHub/ sensei -블로그 예/.idea/검사프로필/감각프로필.xml /사용자/사용자/GitHub/ sensei -블로그 예/스캔 결과

이렇게 하면 'senseiprofile'에 추가한 모든 검사가 실행되고 결과를 '스캔 결과' 폴더에 보고합니다.


검사 결과 보기

나중에 볼 수 있듯이 연속 통합 내에서 이러한 결과를 보고할 수 있습니다.

또한 IntelliJ 자체에서 '분석 \ 오프라인 검사 결과 보기...' 기능을 사용하여 볼 수 있습니다.


분석 오프라인 검사 결과 보기


이렇게 하면 결과를 '검사 결과' 탭에 로드합니다.


검사 결과 탭에 결과를 로드합니다.


이것은 공식적으로 제트 브레인 사이트에 문서화:

- https://www.jetbrains.com/help/idea/command-line-code-inspector.html#inspection-results


명령줄 실행이 연속 통합 프로세스에 통합되고 검토자가 검사 결과 항목의 전체 소스 컨텍스트를 확인하려는 경우 코드 검토 프로세스 중에 이 작업을 사용할 수 있습니다.

지속적인 통합검사 프로필

연속 통합에 명령줄 검사를 추가할 때 보고서를 자동으로 생성하고 여러 가지 옵션이 열려 있기를 이상적으로 원합니다.

TeamCity는 연속 통합에서 검사 프로필에 대한 상자 지원에서 제공합니다.

- https://www.jetbrains.com/help/teamcity/inspections.html


젠킨스 경고 NG 플러그인 보고서 형식 중 하나로 IntelliJ 검사에서 명령줄 출력을 지원 합니다.

- https://github.com/jenkinsci/warnings-ng-plugin

- https://github.com/jenkinsci/warnings-ng-plugin/blob/master/SUPPORTED-FORMATS.md


'아이디어 CLI 검사'와 같은 커뮤니티 프로젝트는 다른 CI 툴링에서 검사 프로필을 사용하는 것을 지원하기 위해 존재합니다.

- https://github.com/bentolor/idea-cli-inspector


CI 프로세스에서 검사 프로필의 미래는 JetBrains Qodana 프로젝트의 도입과 함께 더욱 밝아 보입니다. Qodana 프로젝트는 공식 Github 액션과 Docker 이미지가있는 IntelliJ의 머리가 없는 버전입니다.

- https://github.com/JetBrains/Qodana


Qodana는 현재 베타 버전이지만 Sensei 팀이 공식적으로 지원되는 실행 플랫폼이 되도록 모니터링중입니다. Sensei 연속 통합의 일부로 규칙.


요약

의도 행동을 통해 코딩 패턴을 강화하고 코딩 중에 실수를 할 때 IDE에서 신속하게 수정할 수 있습니다.

검사 프로필을 사용하면 코드 분석 및 검사 작업으로 일괄 실행될 수 있는 프로파일로 이러한 프로파일을 수집할 수 있습니다. 이 기능은 패턴이 발생하고 코드의 다른 모든 곳에서 놓친 경우 다시 확인하려는 경우에 유용할 수 있습니다.

검사 프로필은 명령줄에서 실행가능하며 "신뢰하지만 확인" 모델을 지원하는 연속 통합 프로세스에 통합하고 우발적인 미끄러짐을 잡을 수도 있습니다.

위의 모든 IntelliJ 기능에 내장되어 있으며 JetBrains는 Qodana의 도입과 함께 지속적인 통합 프로세스를 개선하고 있습니다.


Sensei 레시피는 IntelliJ에 로드되어 기본 의도 작업 역할을 하고 검사 프로필에 수집하여 공식 JetBrains 명령줄 실행 기능에서 제공하는 검사 코드 및 연속 통합 지원을 통해 일괄 검사를 지원합니다.

---


설치할 수 있습니다. Sensei "환경 설정 \ 플러그인"(맥) 또는 "설정 \ 플러그인"(윈도우)를 사용하여 IntelliJ 내에서 다음 그냥 검색 " sensei 보안 코드".

명령줄에서 IntelliJ에서 프로젝트를 실행하려고 하면 이 게시물에 사용된 프로젝트를 '에서 찾을 수 있습니다. sensei -블로그 예제의 리포지토리는 Secure Code Warrior GitHub 계정. 독자에게 연습은 단지 실행됩니다 프로파일을 만드는 것입니다 Sensei 규칙. 시도해 보십시오.


https://github.com/securecodewarrior/sensei-blog-examples

자세히 알아보기 Sensei


우리는 당신에게 우리의 제품 및 / 또는 관련 보안 코딩 주제에 대한 정보를 보낼 수있는 귀하의 허가를 바랍니다. 우리는 항상 최대한의주의를 기울여 귀하의 개인 정보를 취급 할 것이며 마케팅 목적으로 다른 회사에 판매하지 않을 것입니다.

전송
양식을 제출하려면 '분석' 쿠키를 활성화하세요. 완료되면 언제든지 다시 비활성화할 수 있습니다.