Как Omnisharp использует подстановочные знаки в своих файлах конфигурации?

Фон

Это относится к старый вопрос stackoverflow. Я надеялся запросить более подробную информацию, но еще не получил репутацию, чтобы писать комментарии. Обстоятельства те же: я добавляю предупреждения проверки кода, которые хочу игнорировать, редактируя раздел «IgnoredCodeIssues» файла config.json Omnisharp.

Вопрос

Какие подстановочные знаки/регулярные выражения здесь работают и как? Возможно, это известный стандарт с собственной документацией, которую я могу прочитать?

Пример

Если я ввожу предупреждение о проблеме дословно, оно работает, но было бы намного эффективнее использовать подстановочные знаки. Например, это предупреждение:

Method 'Update' has the same with 'Start'

это предупреждение, которое меня не волнует, и оно будет часто всплывать. Хорошим решением было бы настроить его так, чтобы он работал для всех экземпляров этой проблемы, то есть использовать подстановочные знаки в частях «Обновление» и «Пуск». Используя типичное регулярное выражение, это будет выглядеть так:

/(Method)\s'\w+'\shas the same with\s'\w+'/g

но это, очевидно, не синтаксис здесь и просто сломает файл конфигурации. Поэтому я надеюсь понять особый синтаксис подстановочных знаков в этом конкретном файле.

Подробнее

Я использую Omnisharp-sublime и Sublime Text 3. Я прочитал документы и порылся на странице GitHub (нет ссылок, так как моя репутация слишком низка для 2+ ссылок), но единственная актуальная информация — это пример файла конфигурации с несколькими игнорируемыми проблемами:

"IgnoredCodeIssues": [
    "^Keyword 'private' is redundant. This is the default modifier.$",
    ".* should not separate words with an underscore.*"
  ],

EDIT: Использование

"Method '.*.' has the same with.*",

(обратите внимание на .*.) предупреждения исчезают, но я понятия не имею, есть ли побочные эффекты или другие последствия, такие как сокрытие предупреждений, о которых я мог бы захотеть получать уведомления. Есть ли кто-нибудь, кто видел такие расширения с подстановочными знаками раньше? Было бы здорово иметь возможность посмотреть и изучить его, прежде чем добавлять что-то еще в мой config.json.


person DaLath    schedule 10.01.2016    source источник


Ответы (1)


Основываясь на примерах в файле конфигурации, вы должны просто использовать стандартное регулярное выражение внутри двойных кавычек. Не используйте стиль Perl /regex/replace/options. config.json читается сервером OmniSharp, написанным на C#, поэтому, если вы хотите сделать что-то необычное со своими регулярными выражениями, убедитесь, что они совместимы с C#.

Так, например, ваш пример регулярного выражения будет выглядеть так:

"(Method)\s'\w+'\shas the same with\s'\w+'"
person MattDMo    schedule 10.01.2016
comment
Спасибо за ответ! К сожалению, размещение этого в качестве одного из выражений в config.json приводит к тому, что сервер omnisharp выводит сообщение об ошибке System.InvalidOperationException: синтаксическая ошибка JSON. - person DaLath; 10.01.2016
comment
Полная трассировка: System.InvalidOperationException: синтаксическая ошибка JSON. at Nancy.Json.JsonDeserializer.Deserialize(ввод TextReader) atOmniSharp.Configuration.ConfigurationLoader.Load(String configLocation, String clientMode) at OmniSharp.ReloadSolution.ReloadSolutionModule.‹ReloadSolutionModule›c__AnonStore0.‹›m__0(Object x) в Nancy.Routing. Route.‹›c__DisplayClass4.‹Wrap›b__3(Параметры объекта, контекст CancellationToken) - person DaLath; 10.01.2016
comment
@DaLath попробуйте избежать побегов, используя \\ для каждого \. - person MattDMo; 10.01.2016