나는 상황을 다음 감지하는 정적 코드 분석 도구 (표준/eslint)를 사용할 수 있도록하고 싶습니다 여기서 어떤 문제도 발견되지 않습니다. 좋은 코드 품질 도구를 사용하여 감지 할 수 있습니까? 는
그냥 예, IDEA는/Webstorm 그냥 궁금 제대로 그래서![enter image description here](https://i.stack.imgur.com/TGMSU.png)
문제를보고주는 것이 가능 명령 줄 도구를 사용하여 동일한 문제를 발견하는 것입니다.
나는 상황을 다음 감지하는 정적 코드 분석 도구 (표준/eslint)를 사용할 수 있도록하고 싶습니다 여기서 어떤 문제도 발견되지 않습니다. 좋은 코드 품질 도구를 사용하여 감지 할 수 있습니까? 는
그냥 예, IDEA는/Webstorm 그냥 궁금 제대로 그래서문제를보고주는 것이 가능 명령 줄 도구를 사용하여 동일한 문제를 발견하는 것입니다.
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
Property 'c' does not exist on type '{ b: string; }'.
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 참조).
감사합니다. 질문을 업데이트했습니다. –
자바 스크립트는 입력 된 언어가 아니므로 코드를 실행하기 전에 객체의 비 정렬을 확인하는 것은 실제로 불가능합니다.
예를 들어 HTTP 요청으로부터 응답을 받으면 코드 품질 도구가 결과 JSON 객체를 인식하지 못합니다.
감사합니다. 질문을 업데이트했습니다. –
당신은 예외를 발생 싶어? – BNilsou
@BNilsou 예, 정적 코드 품질 도구로 경고/오류를 제기하고 싶습니다. –
이 기사 및 사용자 지정 규칙이 올바른 방향으로 향하게 할 것이라고 생각합니다. http://blog.cowchimp.com/writing- a-custom-eslint-rule-to-spot-undeclared-props/ – 0xDEFACED