2014-09-03 6 views
8

'de ölü kod uyarıları nasıl etkinleştirilir Bazı diller (Go & Rust gibi) programcıların tüm ölü kodları kaynağından kaldırma konusunda gayretli olmalarını gerektirir. Bu, bazı kullanıcılar için biraz aşırı ise kodun sürdürülebilirliği ve okunabilirliği açısından avantajlara sahiptir.Haskell (GHC)

Bu özelliği Haskell'de nasıl etkinleştirebilirim? (Mümkün mü?) Örneğin, aşağıdaki kodda, main'da kullanılmadığı için ölü kod olarak işaretlenmek üzere url2 olmasını isterim.

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

main = print url1 

Bazı derleyici bayrakları (örn -fwarn-unused-binds, -fwarn-name-shadowing ve -fwarn-hi-shadowing) referansı gördüm ama bunların hiçbiri ne istiyorum gerçekleştirmek gibi görünüyor.

sizin modül başlığı sen sonra sadece

module Main where 

olduğunu

module Main(main) where 
... 

ise: Eğer örneğin uygun modülünden ihracat kısıtlaması listesi ise

+0

Bu kodu derlerken kullanılmayan adlar hakkında -Wall' ile bir şey görünmüyor mu? Aksi halde, GHC buna karşı uyarıda bulunmaz. – bheklilr

+0

Hayır. Bu, eklenecek tip imzaları zorlar, ancak ölü kod uyarılarını zorlamaz. –

+0

O zaman GHC'nin bunu kontrol edeceğine inanmıyorum. Hangi uyarılar için [GHC belgeleri] 'ne bakın (http://www.haskell.org/ghc/docs/7.6.3/html/users_guide/options-sanity.html). – bheklilr

cevap

17

GHC -fwarn-unused-binds ile url2 ölü kodunu bildirir her şeyi dolaylı olarak dışa aktarır ve böylece herhangi bir üst düzey bağlamanın kullanılmamasını göz önünde bulundurmaz.

+0

Harika. Kaynak dosyada bir 'modül' satırı gerektirecek bir yolu var mı? –

+0

Eğer 'modül' belirtilmemişse varsayılan ''modül Ana (ana)' 'şeklindedir - bkz. Https://www.haskell.org/onlinereport/haskell2010/haskellch5.html#x11-990005.1, fakat farkında değilim Modül hattının sağlandığı konusunda ısrar eden herhangi bir uyarının. –