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

Обзор

NDepend — это инструмент статического анализа кода, который позволяет разработчикам управлять качеством кода с помощью набора показателей, визуализаций и правил. Это помогает выявлять ошибки и уязвимости, гарантируя, что ваш код соответствует отраслевым стандартам и передовым практикам. Совместимость с приложениями .NET и .NET Core упрощает подход к работе со сложными кодовыми базами, предоставляя больше контроля и наглядности.

NDepend управляет всем решением, предоставляя метрики, проверку кода, графики и многое другое для всего вашего кода в вашем решении. Вы можете найти его доступным для Visual Studio 2010–2022, поэтому с точки зрения версии VS NDepent поможет вам.

Обзор кода

Функция проверки кода — одна из центральных функций, предоставляемых NDepend. Разработанный с акцентом на улучшение качества кода, он использует статический анализ кода для систематического изучения вашей кодовой базы.

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

После установки расширения NDepend на VS2022 я искал проект Blog API, над которым мы работали все это время, и инициализировал анализ на нем.

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

Вы можете видеть, что NDepend показывает нам количество строк кода, содержащихся в нашем проекте, и сколько строк не принадлежит нашему коду, это означает код, принадлежащий внешним сборкам. Кроме того, мы можем видеть технический долг, который у нас есть в нашем проекте, в процентах, что, на мой взгляд, является одним из самых привлекательных графиков. Наконец, с правой стороны вы можете увидеть нарушения правил, пороги качества и существующие проблемы в нашем коде, и вы можете определить свои собственные правила, чтобы убедиться, что ваш код обеспечивает соблюдение лучших практик.

Разница в коде

Функция Code Diff в NDepend позволяет вам сравнивать различные версии вашей кодовой базы, выявляя изменения, обновления или регрессии. Это особенно полезно для отслеживания хода рефакторинга, выявления рискованных изменений кода или подтверждения того, что новые версии улучшают качество кодовой базы.

С помощью инструмента diff мы можем искать по элементу, сборке, пространству имен, типу, методу и так далее. Мы можем искать последние изменения, удаленные строки, обновленный код и широкие критерии для поиска изменений кода.

Тенденции

Мониторинг тенденций — ключевой аспект поддержания качества кода, и NDepend ярко проявляет себя в этой области. Благодаря функции Trending NDepend отслеживает различные показатели с течением времени, предоставляя ценную информацию об эволюции вашей кодовой базы. Вы можете легко визуализировать и анализировать эти тенденции, чтобы оценить эффективность своих стратегий развития.

Вы знаете, как иногда вам хочется увидеть, как ваш код изменился с течением времени? Например, стало лучше или хуже? Определенные ошибки появляются чаще? Это именно то, что делает функция Trendings.

Тенденции в NDepend похожи на запись того, как вы склонны программировать. Он отслеживает различные показатели с течением времени и помогает вам понять, как развивается ваша кодовая база. Это похоже на отчет о прогрессе, который показывает взлеты и падения качества вашего кода за разные периоды.

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

График зависимостей

Это один из моих любимых инструментов и причина, по которой я знаю NDepend, пару лет назад я работал над унаследованным проектом, которому было около 20 лет, поэтому у меня была куча зависимостей, к некоторым из которых у меня не было доступа, или я даже не знал об этом, и NDepend помог мне создать график зависимостей и, наконец, я смог хотя бы понять, что происходит с этим проектом. Я поделился снимком графика со своими коллегами, которые работали с этим решением гораздо дольше, и даже они были удивлены, увидев все зависимости, о существовании которых они не знали.

В случае графа, показанного ниже, это пример графа зависимостей, сгенерированного из нашего проекта BlogAPI, который не так уж сложен и все это время кодировался только одним разработчиком, поэтому здесь вы не увидите ничего сложного. Независимо от этого, это не означает, что мы не получаем никакой пользы от этой функции для нашего проекта, это очень полезно, и я почти уверен, что она пригодится в будущем, когда мы продолжим развивать наш API.

Эта функция дает вам визуальную карту вашего кода, показывающую, как различные части связаны или «зависят» друг от друга. Это как Google Maps, но для вашего кода. И точно так же, как вы можете видеть различные маршруты и соединения на карте города, график зависимостей позволяет вам увидеть сложную сеть соединений в вашем коде.

Это очень полезно, когда вы пытаетесь понять структуру своего кода, особенно если это большая или сложная база кода. График может показать вам, есть ли в вашем коде какие-либо странные или неожиданные связи, которые могут быть признаком того, что что-то не так. Это также может помочь вам определить лучший способ рефакторинга или реструктуризации вашего кода.

Кроме того, визуальный характер диаграммы зависимостей облегчает понимание и передачу этих зависимостей другим членам вашей команды. Это способ превратить сложные соединения кода во что-то, что вы можете увидеть и понять.

Матрица зависимостей

Матрица зависимостей NDepend предоставляет еще один способ анализа зависимостей. Он представляет собой матричное представление зависимостей между элементами вашего кода. Благодаря этой функции обнаружение циклических зависимостей и управление ими становится легким, что в конечном итоге приводит к более чистой и эффективной базе кода.

Он размещает ваш код в виде сетки, где строки и столбцы представляют различные элементы кода. Там, где пересекаются строка и столбец, вы можете увидеть, зависят ли эти два элемента друг от друга и каким образом. Например, если класс A использует класс B, пересечение строки A и столбца B покажет это.

Матрица зависимостей также поможет вам разобраться в общей структуре и организации вашего кода. Вы можете быстро увидеть, какие части вашего кода сильно взаимосвязаны, а какие более изолированы.

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

Просмотр показателей

Представление «Метрики» представляет собой своего рода тепловую карту или цветную древовидную карту, где каждый маленький блок представляет собой часть вашего кода, например класс или метод. Размер блока показывает размер кода, который он представляет, а его цвет указывает на некоторые конкретные характеристики, которые вас интересуют, такие как сложность или тестовое покрытие.

Это позволяет вам сразу увидеть, что происходит с вашим кодом. Вы можете мгновенно определить части вашего кода, которые являются большими (большие блоки) или очень сложными (блоки с более темными цветами). Это очень полезно, потому что в этих областях обычно любят прятаться ошибки и где могут возникнуть проблемы в будущем.

Круто то, что вы можете настроить характеристики, которые представляют цвета, в зависимости от того, что вас больше всего волнует. Например, если вы хотите убедиться, что ваш код хорошо протестирован, вы можете настроить цвета для отображения покрытия тестами. Таким образом, любые части вашего кода, в которых недостаточно тестов, будут выделяться как больной палец.

Заключение

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

Если вы хотите узнать больше о NDepend, попробовать его самостоятельно и посмотреть, соответствует ли он вашим потребностям, перейдите на https://www.ndepend.com/ и воспользуйтесь 14-дневной пробной версией и используйте его в своих сторонних проектах, чтобы получить шанс испытать все преимущества, которые он предоставляет.