2017-03-16 2 views
0

나는 상황을 다음 감지하는 정적 코드 분석 도구 (표준/eslint)를 사용할 수 있도록하고 싶습니다 여기서 어떤 문제도 발견되지 않습니다. 좋은 코드 품질 도구를 사용하여 감지 할 수 있습니까?

그냥 예, IDEA는/Webstorm 그냥 궁금 제대로 그래서 enter image description here

문제를보고주는 것이 가능 명령 줄 도구를 사용하여 동일한 문제를 발견하는 것입니다.

+0

당신은 예외를 발생 싶어? – BNilsou

+0

@BNilsou 예, 정적 코드 품질 도구로 경고/오류를 제기하고 싶습니다. –

+0

이 기사 및 사용자 지정 규칙이 올바른 방향으로 향하게 할 것이라고 생각합니다. http://blog.cowchimp.com/writing- a-custom-eslint-rule-to-spot-undeclared-props/ – 0xDEFACED

답변

1

Flow 또는 TypeScript과 같은 정적 유형 검사기는 이러한 종류의 버그를 잡기 위해 설계되었습니다. try Flow editor 또는 TypeScript playground에 예제 코드를 붙여 넣으십시오. 특정 형식 주석을 추가하는 코드를 수정하지 않고 두 체커 모두 오류를 catch합니다.

Flow :

4: const b = obj.a.c 
       ^property `c`. Property not found in 
4: const b = obj.a.c 
      ^object literal 

TypeScript :

Property 'c' does not exist on type '{ b: string; }'. 
0

JavaScript에서 undefined은 변수에 대한 올바른 값이므로이 값의 할당을 감지 할 수 없습니다. 문제에 대한 , 난 당신이 같은 함수를 정의하는 것이 좋습니다 : 다음으로

const assignNested = function(value) { 
    if (value === undefined) 
    throw new Error("undefined assignment"); 
    return value; 
} 

그런 다음 당신은 당신의 코드를 다시 작성할 수 있습니다 :
const obj = {a: {b: 'just a value'}}; 
const b = assignNested(obj.a.b); // b = 'just a value' 
const c = assignNested(obj.a.c); // raise exception 

이 throwed 예외를 포착하는 것을 잊지 마십시오. 자신의 예외 유형을 정의하려는 경우 가능합니다 ( https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Error 참조).

+0

감사합니다. 질문을 업데이트했습니다. –

0

자바 스크립트는 입력 된 언어가 아니므로 코드를 실행하기 전에 객체의 비 정렬을 확인하는 것은 실제로 불가능합니다.

예를 들어 HTTP 요청으로부터 응답을 받으면 코드 품질 도구가 결과 JSON 객체를 인식하지 못합니다.

+0

감사합니다. 질문을 업데이트했습니다. –