2014-09-03 2 views
8

일부 언어 (예 : Go & 녹)에서는 프로그래머가 모든 소스 코드를 제거해야합니다. 일부 사용자에게는 극단적 인 경우 코드 유지 관리 및 가독성 측면에서 이점이 있습니다.Haskell (GHC)에서 데드 코드 경고를 활성화하는 방법

어떻게 하스켈에서이 기능을 활성화 할 수 있습니까? (가능한가요?) 예를 들어, 다음 코드에서 main에 사용되지 않았기 때문에 url2에 사용 불능 코드로 플래그를 지정하고 싶습니다.

url1 = "http://stackoverflow.com" 
url2 = "http://stackexchange.com" 

main = print url1 

나는 어떤 컴파일러 플래그 (예를 들어 -fwarn-unused-binds, -fwarn-name-shadowing-fwarn-hi-shadowing)을 참조 보았다하지만 그들 중 누구도 내가 원하는 것을 달성하기 위해 보이지 않는다.

이 모듈 헤더는 당신이 다음 단지

module Main where 

입니다

module Main(main) where 
... 

경우는 예를 들어, 적절하게 모듈에서 수출의 목록을 제한하는 경우

+0

코드를 컴파일 할 때 사용하지 않는 이름에 대해서는'-Wall'로 무엇이 나타 납니까? 그렇지 않다면, GHC는 그것에 대해 경고하지 않습니다. – bheklilr

+0

아니요. 형식 시그니처가 추가되지만 데드 코드 경고는 표시되지 않습니다. –

+0

그러면 GHC에서 확인하지 않을 것입니다. 사용 가능한 경고에 대해서는 [GHC 문서] (http://www.haskell.org/ghc/docs/7.6.3/html/users_guide/options-sanity.html)를 참조하십시오. – bheklilr

답변

17

GHC는 -fwarn-unused-bindsurl2으로 죽은 코드를보고합니다 암시 적으로 모든 것을 내보내므로 모든 최상위 바인딩을 사용하지 않는 것으로 간주 할 수 없습니다.

+0

좋아요. 소스 파일에'module' 행을 요구하는 방법이 있습니까? –

+0

'module'을 지정하지 않은 경우의 기본값은'module Main (main) where'입니다 - https://www.haskell.org/onlinereport/haskell2010/haskellch5.html#x11-990005.1을 참고하십시오. 'module' 줄이 제공된다고 주장 할 수있는 경고 메시지가 표시됩니다. –