2016-07-31 8 views
0

구문 스타일 정확성을 위해 일부 JavaScript 코드의 유효성을 검사하고 싶지만 사용자에게 특정 코딩 스타일을 적용하지 않습니다.특정 스타일을 적용하지 않고 JavaScript 코드를 확인하십시오.

내 첫 번째 접근 방식은 esprima에 포함 된 esvalidate을 사용하는 것이 었습니다.

const foox = { 
    bar() {} 
}; 

foo.bar(); 
: 그것은 하지 같은 선언 된 적이없는 변수의 사용이 다른 것들 중 하나입니다 감지 무엇

constx foo = {}; 

: 그것은 다음과 같은 예기치 않은 토큰을 감지 이것은 부분적으로 작업을 수행

과 같은 도구를 사용하면이 사실을 감지 할 수 있지만 특정 스타일이 사용자에게 적용되지 않는 방식으로 ESLint를 구성하는 것은 매우 어렵습니다 (불가능하다고 말하지는 않습니다. 모든 규칙을 확인하고 규칙을 사용할지 여부를 결정해야합니다. 규칙의 이것은 ... 예, 음, 엄청난 양의 일입니다.)

다른 옵션에는 어떤 것이 있습니까? 이 노력없이 어떻게 코드를 검증 할 수 있습니까?

그런데 내가 여기에서 유효성을 검사하고 싶은 것은 무엇입니까? 그것은 구문이 아닙니다 (구문 적으로는 모든 것이 좋으며 이해가 안됩니다)하지만 의미 또한 아닙니다. 이 유형의 수표에 대한 올바른 용어는 무엇입니까?

+0

[jshint] (http://jshint.com/)도 있습니다. 적어도 jshint와 eslint는 모두 매우 구성 가능합니다. –

+0

사실이에요, 근본적으로 저는 여기에서도 같은 문제가 있습니다 (좋습니다, JSHint에서 ESLint보다 규칙이 적습니다). 하지만, 아마도 린터를 사용하는 것은 완전히 잘못된 접근법입니까? 특정 도구를 찾는 것이 아니라 웹에서 직접 검색 할 수 있도록 내가하고 싶은 것을 어떻게 불러야하는지에 관심이 있습니다. (좋아, tbh, 누군가 내가 필요한 것을하는 도구를 만들면, "아니오"라고 말하지 않을 것이다 ;-)) –

+0

규칙을 적용하여 에스 립트와 같은 검사기가 작동한다. 매우 엄격한 (표준), 다소 엄격한 (xo) 또는 엄격하지 않은 규칙의 사용자 지정 집합을 사용할 수 있습니다. 또한 바벨 (babel) 코드로 코드를 추출 할 수 있으며 잘못된 코드가 발생합니다. –

답변

1

몇 년 전 Linters는 코드 스타일을 확인하기 만했습니다. 요즘 그들은 더 많은 일을합니다. 심지어 정적 분석. ESLint is such a powerful tool and IMHO it is exactly what you're looking for.

당신은 초기 구성 비용이 많이 드는 것 같아요,하지만 ESLint 페이지로 말한다 수 있습니다

이 어떤 규칙이 기본적으로 사용되지 않습니다. 당신과 당신의 팀이 공통 basline를 발견하는 경우

게다가, having a consistent coding style across your time is very beneficial 당신은 프로젝트의 .eslintrc를 공유 할 수 있습니다.

no-undef 규칙을 사용하여 문제를 해결해야 one of those처럼, 당신의 IDE의 플러그인을 사용하여이 -> 개발시 정적 코드 분석 :

0

마지막 질문에 답하려면 원하는 것은 static analysis입니다. 동적 인 특성과 유형 부족, 툴링의 성숙도 부족으로 인해 JavaScript가 일반적으로 어려워집니다. 예를 들어 수십 년 간의 작업으로 C 용 정적 분석기를 작성 했으므로 그 작업이 다른 언어로 즉시 이어지지는 않습니다.

jshint과 같은 것은 개발자가 "오타 및 언어 문제에 대해 걱정하지 않고 복잡한 프로그램을 작성하는"데 도움을주기 때문에 원하는 것일 수 있습니다.

희망이 도움이됩니다.

+0

나는 그것이 100 % 정확하지 않다고 생각한다. Flow, TypeScript 및 ESLint는 JavaScript에서 실제로 정적 분석이 가능함을 보여줍니다. –

+0

Flow 및 Typescript는 Javascript로 변환되는 언어입니다. 당신은 Haskell을 Javascript로 변환/컴파일 할 수 있지만 Javascript는 강력한 형식의 언어가 아닙니다. Javascript에는 훌륭한 도구가 있지만 정적 분석기는 수십 년이 지난 언어의 정적 분석기에 비해 미숙합니다. –

+0

흐름이 흐트러지지 않습니다. JS, TS 않습니다. 그러나 개발하는 동안 usind TypeScript의 언어 서비스는 정적 분석기를 제공합니다. 물론 훨씬 더 오래 존재하는 정적 분석기도 있습니다. 내가 말한 것도 아니야. 자바 스크립트에서 도움이되는/좋은 정적 분석을하는 것이 가능하다는 것을 지적하고 싶었습니다. –

0

ESLint 설정 권장 사항 : Recommended rules have checkmark next to them 어떤 문체 규칙에 포함되지 않습니다. 이를 사용하여 특정 스타일을 적용하지 않고 스크립트의 유효성을 확인할 수 있습니다. 최소한 출발부터 시작하는 것이 좋으며, 마음에 들지 않는 규칙은 언제든지 해제 할 수 있습니다.