Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Игорь Мамай «Анализаторы кода и их польза для п...

Игорь Мамай «Анализаторы кода и их польза для прикладной разработки»

Мы ежедневно используем анализаторы кода — например, запускаем компилятор Roslyn, который выдаёт ошибки и предупреждения, или настраиваем правила для линтеров, которые фиксируют командные практики и договоренности. Однако есть много других способов извлечь пользу из анализаторов кода в повседневной работе. Игорь сравнит анализаторы с программным API (Roslyn и ReSharper) и расскажет, для решения каких задач они используются в его команде (60 человек в 3 городах).

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

DotNetRu

April 20, 2018
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. Анализаторы кода и их польза Анализаторы кода и их польза

    в сельском хозяйстве в сельском хозяйстве Мамай Игорь [email protected] https://github.com/BigBabay 1
  2. О чем поговорим О чем поговорим Зачем нам анализаторы Примеры

    задач из жизни нашей команды Советы по выбору анализатора 2
  3. Зачем нам анализаторы? Зачем нам анализаторы? Большая команда (20 бекэнд-разработчиков)

    Большая кодовая база (1 000 000 строк кода) Shared Code Ownership Единый стиль кодирования 4
  4. Анализаторов много Анализаторов много Поиск багов Fxcop Clocksharp PRQA QA·C#

    PVS-Studio CAT.NET Spec# ... Оценка качества кода NDepend Nitriq RSM Squared C# Metrics SourceMonitor Code Metrics Vil Общий стиль StyleCop Agent Smith Поиск дублирующегося кода Simian CloneDR Clone Detective Atomiq 5
  5. 12

  6. 2.x to 3.x 2.x to 3.x Найти методы, размеченные ExpectedException

    Найти тестируемый метод Завернуть в обертку, подставив данные из ExpectedException 15
  7. Рефакторинг Рефакторинг Программисты любят рефакторить Никто не любит делать одно

    и тоже больше 1 раза Иногда нужно изменить концепт, который используется по всему коду 16
  8. Способы решения Способы решения Посмотреть в IDE Сделать руками (посадить

    стажера) Нажать Ctrl+H и попробовать заменить Написать RegEx Использовать ReplacePattern Написать утилиту, которая все 17
  9. Плагин AsyncConverter – помощник Плагин AsyncConverter – помощник по написанию

    асинхронного кода по написанию асинхронного кода 22
  10. AsyncConverter AsyncConverter Заменить возвращаемый тип Добавить суффикс Async Добавить пространство

    имен Посмотреть все вызовы, если есть асинхронные аналоги, то заменить Заменить вызовы .Result и .Wait() на await Во всех точках вызовов либо вызвать await, либо .Result, либо .Wait() Конвертация из синхронных в асинхронные Конвертация из синхронных в асинхронные 29
  11. Автоматизируй это! Автоматизируй это! Если повторяете что-то – может есть

    алгоритм Если есть алгоритм – можно автоматизировать Если автоматизируете – идите от простого Получайте удовольствие от автоматизации 31
  12. Roslyn ReSharper Написание внешней утилиты ✔ ❌ Поддержка IDE VisualStudio

    Rider(2018.1 EAP) VisualStudio+ReSharper Rider Удобство написания Шаблон от MS Syntax Visualizer Тестовый фреймворк PSI Viewer Способ распространения Локальная установка Референс в проект Локальная установка Настройки TeamSettings Интеграция с CI Встраивается в билд ReSharper CLT Поддеживаемые технологии C#, VB.NET JetBrains products(dotPeek, dotMemory, dotTrace, dotCover) Языки C#, VB.NET, C++, HTML, ASP.NET, JavaScript, TypeScript, Angular 2 HTML, CSS, JSON, XML, XAML, MSBuild, Protobuf 32
  13. Roslyn ReSharper Написание внешней утилиты ✔ ❌ Поддержка IDE VisualStudio

    Rider(2018.1 EAP) VisualStudio+ReSharper Rider Удобство написания Шаблон от MS Syntax Visualizer Тестовый фреймворк PSI Viewer Способ распространения Локальная установка Референс в проект Локальная установка Настройки TeamSettings Интеграция с CI Встраивается в билд ReSharper CLT Поддеживаемые технологии C#, VB.NET JetBrains products(dotPeek, dotMemory, dotTrace, dotCover) Языки C#, VB.NET, C++, HTML, ASP.NET, JavaScript, TypeScript, Angular 2 HTML, CSS, JSON, XML, XAML, MSBuild, Protobuf 33
  14. Roslyn ReSharper Написание внешней утилиты ✔ ❌ Поддержка IDE VisualStudio

    Rider(2018.1 EAP) VisualStudio+ReSharper Rider Удобство написания Шаблон от MS Syntax Visualizer Тестовый фреймворк PSI Viewer Способ распространения Локальная установка Референс в проект Локальная установка Настройки TeamSettings Интеграция с CI Встраивается в билд ReSharper CLT Поддеживаемые технологии C#, VB.NET JetBrains products(dotPeek, dotMemory, dotTrace, dotCover) Языки C#, VB.NET, C++, HTML, ASP.NET, JavaScript, TypeScript, Angular 2 HTML, CSS, JSON, XML, XAML, MSBuild, Protobuf 34
  15. Roslyn ReSharper Написание внешней утилиты ✔ ❌ Поддержка IDE VisualStudio

    Rider(2018.1 EAP) VisualStudio+ReSharper Rider Удобство написания Шаблон от MS Syntax Visualizer Тестовый фреймворк PSI Viewer Способ распространения Локальная установка Референс в проект Локальная установка Настройки TeamSettings Интеграция с CI Встраивается в билд ReSharper CLT Поддеживаемые технологии C#, VB.NET JetBrains products(dotPeek, dotMemory, dotTrace, dotCover) Языки C#, VB.NET, C++, HTML, ASP.NET, JavaScript, TypeScript, Angular 2 HTML, CSS, JSON, XML, XAML, MSBuild, Protobuf 35
  16. Roslyn ReSharper Написание внешней утилиты ✔ ❌ Поддержка IDE VisualStudio

    Rider(2018.1 EAP) VisualStudio+ReSharper Rider Удобство написания Шаблон от MS Syntax Visualizer Тестовый фреймворк PSI Viewer Способ распространения Локальная установка Референс в проект Локальная установка Настройки TeamSettings Интеграция с CI Встраивается в билд ReSharper CLT Поддеживаемые технологии C#, VB.NET JetBrains products(dotPeek, dotMemory, dotTrace, dotCover) Языки C#, VB.NET, C++, HTML, ASP.NET, JavaScript, TypeScript, Angular 2 HTML, CSS, JSON, XML, XAML, MSBuild, Protobuf 36
  17. Roslyn ReSharper Написание внешней утилиты ✔ ❌ Поддержка IDE VisualStudio

    Rider(2018.1 EAP) VisualStudio+ReSharper Rider Удобство написания Шаблон от MS Syntax Visualizer Тестовый фреймворк PSI Viewer Способ распространения Локальная установка Референс в проект Локальная установка Настройки TeamSettings Интеграция с CI Встраивается в билд ReSharper CLT Поддеживаемые технологии C#, VB.NET JetBrains products(dotPeek, dotMemory, dotTrace, dotCover) Языки C#, VB.NET, C++, HTML, ASP.NET, JavaScript, TypeScript, Angular 2 HTML, CSS, JSON, XML, XAML, MSBuild, Protobuf 37