2013-10-08 24 views
13

Bir birim test dosyası var literal`:Haskell: hlint nasıl söyleyeceğini değil: `Uyarı: dize

module X04PatMatTest where 

import AssertError 
import Test.HUnit 
import X04PatMat 

... 

ve hlint yakınır: Çeşitli nedenlerle

X04PatMatTest.hs:15:69: Warning: Use string literal 
Found: 
    ['a', 'b', 'd'] 
Why not: 
    "abd" 

, gerçekten Test koduna ['a', 'b', 'd']'u eklemek istiyorum.

Ben Warningwarn değişen, X04... yerine adıyla module ile, modül açıklanmasından sonra, dosyanın ilk satırı olarak pragma koyarak gibi

{-# ANN X04PatMatTest "HLint: ignore Warning: Use string literal" #-} 

çeşitli permuatations çalıştılar ...

Sihir nedir?

cevap

16

Pragmayı başka bir şekilde yazmanız gerekir. Bazı deneme yanılma sonra ben aşağıdaki ile geldi: Eğer

+1

Bu işe yarar - teşekkürler. HLint belgeleri bu konuda açık değildir. Pragma işlevleri için şunu söyler: '{- # ANN myFunction” HLint: "# -}' ifadesini yoksay. Pragmas modülleri için şunu söyler: '{- # ANN modülü 'HLint: Eta'yı yok say” # -} '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '. – haroldcarr

+0

@haroldcarr Açıkça belirtilmemiş, doğru. Bir şekilde, ilk harfin küçük harf olduğu ve modül adlarının büyük harfle başlayabildiği gerçeğinden kaynaklanabilir. Not; Cevabımı kabul edersen hoş olurdu. – MoFu

+4

Okumak için dokümanı güncelledim: \t {- # ANN modülü "HLint: Eta küçültmeyi yok say" # -} - bu modüldeki tüm eta azaltma önerilerini dikkate almayın ( modülünü kullanın tam anlamıyla, modülün adı değil) . Gitdiler, ancak dokümanlar bağlantısı sizi hala eski tarihli darka götürüyor. Bunu düzeltmek için bir hata yaptım. –

1

MoFu çözümü @ katılıyorum modülün ismini "module" yazmak zorunda değil

module Test where 

import Data.Char(toUpper) 

{-# ANN module "HLint: ignore Use string literal" #-} 
main :: IO() 
main = putStrLn ['a','b','c'] 

not. Ayrıca, destek argümanlarla belirli bir ihtarı göz ardı eder.

hlint -i 'Use string literal' [filename] 

bunu bağımsız değişkenlere veya diğer adlara ekleyin, bu nedenle bu uyarıyı dikkate almayın, ancak kodunuzu kırmayın. Bu arada, synatastic destek argümanları.

+0

Bunun için teşekkürler. Ben vim ile ale viz kullanıyorum ve çoğaltma ile ilgili uyarıları görmezden gelmek istiyorum, bu yüzden böyle bir şey yaptım: 'g: ale_linters = {'haskell': ['hlint -i' Çoğaltmayı azalt ''],}' . –