2015-07-23 2 views
20

Я использую версию StyleCop: 4.7.49.0Interpolate строка C# 6.0 и StyleCop

Кто-нибудь использовал последнюю функциональность интерполировать строки в C# 6.0

например

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

Когда я строю я получаю ошибка стиля SA0102 - потому что стиль не может проанализировать файл. Кажется, не существует новой версии стиля, которая может обрабатывать 6.0?

ошибка: SA0102: синтаксическая ошибка была обнаружена в файле

Есть в любом случае вокруг этой ошибки?

+0

Stylecop не является частью Visual Studio, а последней версии 1 год.Вам нужно будет обновить его до более новой версии, как только он станет доступен. –

+0

Просто интересно, был ли способ подавить этот SA0102. – MicroMan

+3

. Попробуйте внедрить правила StyleCop на основе Roslyn: https://github.com/DotNetAnalyzers/StyleCopAnalyzers –

ответ

10

SA0102 - internal stylecop error, поэтому его нельзя подавить или проигнорировать через файл настроек.

Вы можете подавить файл из StyleCop, находя имя файла и изменения раздела этого в csproj:

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

Вы можете получить тот же эффект, щелкнув правой кнопкой мыши на файле обижая и выбрав «исключить из style cop ", если у вас установлен плагин StyleCop. В настоящее время она должна быть 4.7.50 альфа для Visual Studio 2015.


Более современный способ сделать это, чтобы использовать функции анализаторами Visual Studio 2015, с StyleCop.Analyzers.

enter image description here

Переход к Stylecop.Analyzers, это добавит их в правила в соответствующем * .ruleset файла (то же самое место, как правила CodeAnalysis)

enter image description here

и вы можете запустить их через

enter image description here

который имеет тот же эффект как правый щелчок Run StyleCop:

I.e. даяние:

enter image description here

Это будет иметь лучшую поддержку C# 6, а StyleCop 4.7.50, который поддерживает Visual Studio 2015, находится в альфа и еще не поддерживает C# 6.

+1

Я не уверен, что это отличное решение для отключения анализа стиля для каждого файла, который использует 6.0. К сожалению, эта версия StylCop (последняя версия) просто не совместима с C# 6.0, поэтому вам либо нужно отключить ее, либо, надеюсь, кто-то может обновить и распространить патч. – ChrisCW

+1

Ум ... извините? Возможно, проект [style cop project] (http://stylecop.codeplex.com/) станет лучшим вариантом для ваших разочарований, чем я. – NikolaiDante

+4

Игнорирование файла для предупреждения? это не хорошо! – DAG

1

StyleCop должны быть в состоянии справиться с C# 6 сейчас:

Изменения Beta 4.7.51: Добавлена ​​начальная (и непроверенные) поддержка C# 6.0 синтаксисом

Так со стабильной сборки 4.7.54 или более поздней версии, вы не должны столкнуться с этим больше: http://stylecop.codeplex.com/releases/view/621306

+4

Нет, по-видимому, нет, я просто обновился до 4.7.54, и у меня все еще такая же проблема. :(Однако, только когда я использую сложные интерполяции $ @ string. В первую очередь: когда вы содержите выражения с круглыми скобками в скобках, а не переменными. – Efrain

+0

Похоже, что они упускают из виду некоторые случаи краев. Вы должны открыть проблему с некоторыми конкретными примерами, чтобы позволить они знают (http://stylecop.codeplex.com/workitem/list/basic). – Hinek

+0

У меня есть 4.7.58.3 и все еще есть проблема со строковой интерполяцией + литерал, например, 'string x = $ @" {var1} is а не число, {var2} is ";' – ps2goat