2015-07-23 12 views
20

Sto usando la versione StyleCop: 4.7.49.0stringa Interpola C# 6.0 e StyleCop

Qualcuno ha usato l'ultima funzionalità stringa di interpolare in C# 6.0

esempio

var totalUnits = GetUnitsGetTotalIssuedShares(myId); 
var testString = $"Test Units :{totalUnits}, have been shipped."; 

Quando costruisco ottengo l'errore stylecop SA0102 - perché stylecop non può analizzare il file. Non sembra che esista una nuova versione di stylecop in grado di gestire 6.0 ancora?

errore: SA0102: un errore di sintassi è stato scoperto nel file di

C'è comunque intorno a questo errore?

+0

Stylecop non fa parte di Visual Studio e l'ultima versione ha 1 anno.Dovresti aggiornarlo a una versione più recente, una volta che diventa disponibile –

+0

Mi chiedevo solo se ci fosse un modo per sopprimere questo SA0102 – MicroMan

+3

Prova l'implementazione basata su Roslyn delle regole StyleCop: https://github.com/DotNetAnalyzers/StyleCopAnalyzers –

risposta

10

SA0102 è un internal stylecop error quindi non può essere soppresso o ignorato tramite un file di impostazioni.

È possibile eliminare un file da StyleCop trovando il nome del file e cambiando la sezione a questo nel csproj:

<Compile Include="<filename>.cs"> 
    <ExcludeFromStyleCop>True</ExcludeFromStyleCop> 
</Compile> 

si può ottenere lo stesso effetto facendo clic destro sul file incriminato e selezionando "escludere dal style cop "se hai installato il plugin StyleCop. E 'attualmente bisogno di essere 4.7.50 alpha per Visual Studio 2015.


Il modo più moderno di fare questo è quello di utilizzare la funzione di analizzatori di Visual Studio 2015, con StyleCop.Analyzers.

enter image description here

Trasferirsi in Stylecop.Analyzers, questo li aggiungerebbe nelle regole del fascicolo * .ruleset (stesso luogo, come regole CodeAnalysis)

enter image description here

e si possono eseguire via

enter image description here

che ha lo stesso effetto come tasto destro Run StyleCop:

I.e. dono:

enter image description here

Ciò avrà un miglior supporto per C# 6, come StyleCop 4.7.50, che supporta Visual Studio 2015, è in versione alpha e non supporta ancora C# 6.

+1

Non sono sicuro che questa sia un'ottima soluzione per disabilitare l'analisi dello stile per file che utilizza le funzionalità 6.0. Sfortunatamente questa versione di StylCop (l'ultima versione) non è compatibile con C# 6.0, quindi è necessario spegnerla o, si spera, qualcuno possa aggiornare e distribuire una patch. – ChrisCW

+1

Um ... scusa? Forse il [progetto del poliziotto di stile] (http://stylecop.codeplex.com/) sarebbe uno sfogo migliore per le tue frustrazioni di me. – NikolaiDante

+4

Ignorare il file per sopprimere un avviso? non è buono! – DAG

1

StyleCop dovrebbe essere in grado di gestire C# 6 ora:

Modifiche Beta 4.7.51: Aggiunto iniziale (e non testato) il supporto per C# 6.0 sintassi

Quindi, con build stabile 4.7.54 o successivo non si dovrebbe incontrare più questo: http://stylecop.codeplex.com/releases/view/621306

+4

No, apparentemente no, ho appena aggiornato a 4.7.54 e ho ancora lo stesso problema. :(Tuttavia, solo quando uso complicate interpolazioni $ @ stringa in particolare: Quando si contengono espressioni con parentesi tra parentesi, non variabili – Efrain

+0

Sembra che abbiano trascurato alcuni casi limite. Si dovrebbe aprire un problema con alcuni esempi concreti da lasciare loro sanno (http://stylecop.codeplex.com/workitem/list/basic). – Hinek

+0

Ho 4.7.58.3 e ho ancora un problema con l'interpolazione di stringhe + letterale, ad es. 'stringa x = $ @" {var1} è non un numero, {var2} è ";' – ps2goat