Menu / szukaj

Błąd StyleCop SA0120 w Visual Studio 2015

Aktualizacja środowiska do nowszej wersji jak zwykle powoduje, że pojawiają się nowe, dziwne sytuacje. W projektach wykorzystujących narzędzie StyleCop do analizy kodu może pojawić się błąd SA0120 CSharp.CsParser.

Wygląda na to, że jest to jakiś wewnętrzny błąd ponieważ nie został on wspomniany w dokumentacji listy ostrzeżeń generowanych przez StyleCop. Błąd ten nie pojawia się od razu po przejściu na Visual Studio 2015, a dopiero po wykorzystaniu składni wprowadzonej w C# 6.0. W sumie nie ma co się dziwić, że pojawiają się jakieś problemy z tym narzędziem, skoro ostatnia jego wersja (StyleCop 4.7.49.0) została opublikowana w kwietniu 2014 roku.

SA0120.png
Błąd SA0120

Opisany problem można rozwiązać na 3 sposoby:

  1. Nie używać składni wprowadzonej w C# 6.0, ale nie o to przecież chodzi.
  2. Spróbować wyłączyć regułę zgłaszającą opisany błąd. Niestety nie jesteśmy w stanie jej wyłączyć za pomocą SuppressMessage. Pozostaje tylko możliwość wyłączenia sprawdzania danego pliku przez StyleCopa. W tym celu należy dodać w pliku projektu (.csproj) następujący wpis:
    <Compile Include="filename.cs">
      <ExcludeFromStyleCop>True</ExcludeFromStyleCop>
    </Compile>
    

    Nie jest to jednak idealne rozwiązanie ponieważ wyłącza sprawdzanie całego pliku przez StyleCopa, a nie tylko tą jedną regułę.

  3. Istnieje zmodyfikowana wersja StyleCopa, która została przystosowana do pracy z Visual Studio 2015 oraz C#6.0Visual StyleCop. Dodatek ten można zainstalować używając NuGeta:

    Visual-StyleCop-NuGet.png
    NuGet: Visual-StyleCop

    Po zainstalowaniu dodatku należy pamiętać, aby usunąć wpisy dotyczące poprzedniej wersji StyleCopa z plików projektu (.csproj).

W przypadku projektów już istniejących polecałbym zastosować trzecie rozwiązanie. Natomiast w przypadku nowych projektów wykorzystałbym StyleCopAnalyzers .

Dodaj komentarz

imię*

e-mail* (nie publikowany)

strona www

This site uses Akismet to reduce spam. Learn how your comment data is processed.

.