Sensei가 포함된 개인 구조 함수 자동 추가

4889 단어
TLDR;센스는 하나의 실용 클래스 인코딩 모드를 식별하고 자동으로 개인 구조 함수를 생성하여 이 클래스를 실례화할 수 없게 한다.
실용 프로그램 클래스에서 필드와 방법이 정적일 때, 나는 그것을 실례화할 뚜렷한 이유가 없다.
e、 g.UtilityClass utility = new UtilityClass();다음 코드는 실용 프로그램 종류의 간단한 실현이다.
public class UtilityClass {

    public static final Boolean ULTIMATE_TRUTH = true;

    public static boolean getTrue(){
        return ULTIMATE_TRUTH;
    }
}
정적 분석 도구는 이런 종류의 인코딩 모델을 선택할 수 있지만, 보통 문제를 해결할 수 있는 능력을 제공하지 않는다.
나는 Sensei를 사용하여 인코딩 모드를 식별하고 개인 구조 함수를 자동으로 생성하여 이 종류를 실례화할 수 없다.
이제 나는 내가 이 문제를 해결할 수 있다는 것을 안다.가장 적당한 시간에 메뉴를 표시할 수 있도록 검색 조건을 최적화할 것입니다.

반을 찾다


나는 실용 프로그램 클래스 Static Classes: create private constructor 에 새 메뉴를 만들었다.

Name: Static Classes: create private constructor
Description: create a private constructor for static classes
Level: Error
우선, 나는 하나의 종류를 검색할 것이다.
search:
  class: {}
이것은 어떤 종류와도 일치할 것이다. 이것은 나로 하여금 빠른 복구 프로그램을 작성하기 시작하게 할 수 있다. 효과적인 빠른 복구 프로그램이 생기면, 나는 검색을 개선하여 개인 구조 함수가 필요할 때 돋보이게 할 것이다.

신속한 복구


빠른 복구에 대해 나는 개인 구조 함수를 만들고 싶다.
샘플 클래스에서는 다음과 같이 표시됩니다.
~~~~
개인 유틸리티 () {}
~~~~
위 코드를 내 클래스에 추가하려면, 내 빠른 복구 프로그램에 방법이 추가됩니다. 이 방법의 이름은 클래스 이름을 사용하는 Mustache 템플릿입니다.
availableFixes:
- name: "add private constructor"
  actions:
  - addMethod:
      method: "private {{{ name }}}(){}"
GUI 편집기에서, 나는 Show Variables 수염 템플릿을 만들고, 필드를 편집해서 private 수식자, 괄호, 대괄호를 추가해서 문법이 정확하도록 했다.

이것은 내가 어떤 종류에든 개인 구조 함수를 추가할 수 있도록 허용할 것이다.
Mustache 템플릿을 작성할 때 생성된 코드를 볼 수 있기 때문에 QuickFix 미리 보기가 도움이 됩니다.

실종된 구조기를 찾다


이상적인 상황에서, 나는 모든 종류의 표기 오류에 대한 레시피를 만들고 싶지 않다.따라서, 우리는 구조 함수가 없는 클래스만 일치하도록 검색에 추가 조건을 추가할 것입니다.
search:
  class:
    without:
      child:
        method:
          constructor: true
YAML은 GUI와 약간 다릅니다.
GUI에서, 나는 이 하위 방법이 없는 클래스를 찾도록 설정했다. 이 하위 방법은 구조 함수 'yes' 이다.GUI에서 "예"가 아닌 "진짜"를 사용하여 GUI를 보다 인간적으로 만듭니다.

이 레시피는 현재 구조 함수가 없는 어떤 종류에서만 표시됩니다.

가능한 범인을 찾다


그래서 나는 더 나아가 정적 방법이나 필드의 존재를 찾고 싶을 것이다.
나는 구조 함수가 없고 모든 공공 정적 필드나 모든 공공 정적 방법을 가진 클래스를 찾았다.
~~~~
검색:
교육 과정:
및:
다음 중 하나:
- 아이:
방법:
모두:
- 수식어: "공통"
- 수식어: "정적"
- 아이:
필드:
모두:
- 수식어: "정적"
- 수식어: "공통"
없음:
아이:
방법:
구조 함수:네
~~~~
센스는 코드를 정적으로 분석하고 모든 오류를 보고하는 것이 아니라 프로그래머로서 IDE에서 모든 오류를 보고하는 데 사용되기 때문에 이 필터는 충분합니다. 이 필터는 제 코드 라이브러리의 대다수 클래스를 배제할 수 있습니다. 이 클래스에서 묵인된 공공 구조 함수를 사용할 수 있는 좋은 이유가 있을 것입니다.
일부 항목에서 이것은 너무 먼 절차일 수 있습니다. 실용 프로그램 종류에 개인적인 방법이 있을 수 있기 때문에 저는'all'가 아닌'any'public static 방법의 존재를 찾을 수 있습니다.
~~~~
- 아이:
필드:
다음 중 하나:
- 수식어: "정적"
- 수식어: "공통"
~~~~

프롬프트


깨우는 것은 정적 분석 도구를 대체하기 위해 설계된 것이 아니다.Sensei는 인코딩 프로세스 또는 기술과 관련된 일반적인 질문에 대한 정적 분석 도구를 제공합니다.충분한 일치를 복사하여 문제를 강조하고 QuickFix 코드를 생성하여 개발 과정을 지원합니다.
내가 하고 싶은 것은 내가 필요로 하는 모든 상황을 포함하는 충분한 간단한 메뉴를 만드는 것이다. 그러나 그것을 필터링하면 수업 시간마다 조언을 받지 못한다.
식단을 만들 때, 나는 그것들의 위험을 낮추려고 했다. 이런 상황에서, 나는 개인 구조 함수를 만들 수 있을지 확실하지 않아서, 나는 먼저 빠른 복구를 만들었다.그리고 검색 조건을 더욱 구체적으로 재구성한다.
때때로 식단을 만들 때 검색을 어떻게 해야 할지 몰라서 이걸 먼저 해요.
내가 증량 방식으로 식단을 구축할 때, 나는 식단을 더욱 쉽게 만들 수 있고, 빠른 복구와 검색의 재구성 사이를 전환할 수 있다는 것을 발견했다.

코드 링크


기본 설정\플러그인(Mac) 또는 설정\플러그인(Windows)을 사용하여 IntelliJ에 Sensei를 설치하고 Sensei 보안 코드만 검색할 수 있습니다.sensei-blog-examples 모듈의 Secure code Warror github 계정의 pojoexamples 저장소에서 이 방면의 소스 코드와 방법을 찾을 수 있습니다.
  • https://github.com/securecodewarrior/sensei-blog-examples
  • 좋은 웹페이지 즐겨찾기