이 답변은이 또한 흥미가 있기 때문에 약간의 두뇌 덤프입니다. 희망이 도움이됩니다.
Google Closure Compiler를 사용하여 CoffeeScript가 생성하는 코드를 정적으로 분석합니다. 그것은 정말 좋은 정적 분석기를 가지고 있으며 휠을 재발견 할 좋은 이유가 있는지 확실하지 않습니다. 쉬운 방법은 손으로 주석을 작성하는 것입니다 :
###*
* @param {number} x
* @param {number} y
* @return {number}
###
adder = (x, y) -> x + y
이 조금 자세한하지만 다른 한편으로는 당신은 정말 강력하고 확인할 수있는 폐쇄 컴파일러의 정적 분석 능력을 차입하고 많이. 필자는 실제로 좀 더 간결한 방식으로 주석을 작성한 다음 커피 파일을 다시 쓰는 스크립트를 작성했습니다. 내 코드는 다음과 같이 보입니다.
#! {number} x {number} y @return {number}
adder = (x, y) -> x + y
필자가 작성자가 매우 간단하다는 것을 알 수있을 것입니다.
이동하기 전에 빠른 메모. 클로저 컴파일러를 통해 코드를 실행하는 경우 -b
(베어)으로 코드를 컴파일해야합니다. 클로저 컴파일러는 꽤 좋지만 데이터 흐름 분석을 수행 할만큼 똑똑하지는 않습니다. CoffeeScript는 기본적으로 익명 함수로 코드를 래핑하여 컴파일러를 작동시킵니다. 이 같은 JS에
adder = (number x, number y): number -> x + y
:
같은 경로를 따라 또 다른 옵션 (이 커피 스크립트와의 호환성을 깰 것이다, 그러나 많은 쿨러 것)는 커피 컴파일러 이런 식으로 뭔가를 컴파일해야하는 것입니다
이 코드는 컴파일시 클로저 컴파일러에 공급 될 수 있습니다. 오류가없는 경우 컴파일러는 모든 주석을 제거 할 수 있습니다.
실제로, this guy은 정확히 이것을 수행하는 것으로 보입니다. 슬프게도, 그의 작품은 불완전한 상태에있는 것 같습니다.
이 모든 경우에 우리는 하드 작업 - 정적 형식 검사 -를 클로저 컴파일러로 연기합니다. 이 작업을 원하지 않는다면 완전히 이해할 수 있지만 새로운 정적 분석 도구를 처음부터 새로 만드는 것은 가치가 있음을 알기가 어려울 것입니다. :)
EDIT 1 년 후 : 요즘 타이프 스크립트를 사용합니다. :)
생성 된 JS 파일에서 jshint를 실행하는 것은 어떻습니까? 커피를 JS 및 JS 도구로 컴파일하여 원하는 것을 수행하는 것은 흔한 일은 아닙니다. –