Sonar как источник задач для регулярного рефакторинга

    Простая и короткая статья. Из серии «на заметку хозяйке».

    Есть гибкая система сканирования кода на соответствие правилам, метрикам (полезным, типа цикломатической сложности), и так далее.
    Называется Sonar.



    Пара скриншотов на живых данных под катом.


    Краткий обзор возможностей
    • Поддерживает основные языки (Java, C#, C/C++, Cobol, PL/SQL, ABAP, Javascript, PHP etc)
    • Имеет гибкую настраиваемую систему правил сканирования кода
    • Понимает ООП (цикломатическая сложность, количество уровней наследования, связанность, и так далее)
    • Настраивается за полдня
    • Интегрируется с TeamCity
    • Позволяет видеть изменения после рефакторинга (хранит лог изменений)


    Применяется просто
    1. Сонар натравливается на проект
    2. Даете список самых косячных классов на рефакторинг (да, рефакторинг обязателен и нужно давать на него время, иначе однажды вы, как менеджер проекта, услышите волшебные слова «проще все выбросить и переписать заново» — если у вас смелые и классные программисты, или же просто будут все делать тормозно и с кучей багов в неожиданных местах, если проггеры слабоватые или несмелые). Оно не заменяет codereview, но дополняет.
    3. Программисты рефакторит
    4. Натравливаете снова и видите дельту.

    Общий вид для проектов


    Список косяков


    Срез между двумя сканами


    На Хабре были статьи, но давно, и для Java в основном.

    В комментариях предлагаю поделиться средствами автоматизации QA, которые применяете вы у себя.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 27

      0
      из всех картинок что то понятно только на самой первой. На остальных вообще ничего не видно. Если вы рассказываете об утилите — рассказывайте нормально, а не так.
        0
        Сделал кликабельными.
        Настройка весьма индивидуальна, посему такой пиар-пост
          +1
          Но базовый пример инсталляции и настройки под какой-нибудь конкретный случай тоже были бы весьма полезны.
          • UFO just landed and posted this here
            • UFO just landed and posted this here
        0
        Поддерживает основные языки (Java, PHP, etc)

        А такие «Богом забытые» языки как С++ и С поддерживает? Просто из поста совершенно непонятно.
          0
          Поддерживает!!!
          Исправил, спасибо
            0
            Поддерживает!!!

            Причём, модули C/C++ — коммерческие, если я правильно понял это: docs.codehaus.org/display/SONAR/Plugin+Library
              0
              Буквально пару часов назад думал посмотреть что за зверь! Скачал, натравливаю на простенький сишный проект, а в ответ мне говорят, что требуется плагин для C. Захожу на сайт — там просят 7000 евро за плагин.
              • UFO just landed and posted this here
                  0
                  Будет интересно почитать. Кстати, у них заявлена поддержка MISRA-C — было бы замечательно, если в бесплатном варианте тоже есть.
                  • UFO just landed and posted this here
                    • UFO just landed and posted this here
                      • UFO just landed and posted this here
                        • UFO just landed and posted this here
                          • UFO just landed and posted this here
                            • UFO just landed and posted this here
                                0
                                +1 в карму добавил
                                • UFO just landed and posted this here
                                    0
                                    вы и запилите
                      • UFO just landed and posted this here
                          0
                          MISRA-C — это стандарт разработки, то есть набор правил написания кода, цель которого — улучшить безопасность, переносимость и надежность программ для встраиваемых систем.
                          • UFO just landed and posted this here
                              +1
                              MISRA-C:2004 (второе издание) носит заголовок «Guidelines for the use of the C language in critical systems».

                              По сути, MISRA-C является задокументированным здравым смыслом.
                              Например, запрещено использовать трюки, основанные на undefined или unspecified behaviour, а там, где используется implementation-defined behaviour (если не противоречит остальным правилам) должно быть задокументировано. Запрещено использовать триграфы. Запрещено использование восьмеричных констант (кроме нуля, который итак ноль). Не должно быть unreachable code. Запрещена рекурсия как прямая, так и косвенная (никто не хочет, чтобы установка, от которой зависит жизнь или просто дорогостоящее оборудование вышло из строя из-за stack overflow). И многое другое. Правила есть как обязательные, так и рекомендательные. Вообще, довольно разумный стандарт.
              0
              Использовал в связке с Java.

              Интегрировался через maven-sonar-plugin, вполне удобно: mvn sonar:sonar и радуемся жизни.
                0
                Используем sonar, PMD и HP fortify.
                  0
                  Используем Sonar + Checkstyle. Недавно писал статью об интеграции и использовании своих кастомных чеков в Sonar как расширение к существующему Checkstyle плагину. Кому интересно, делюсь ссылкой: Custom Checkstyle’s checks integration into SonarQube

                  Only users with full accounts can post comments. Log in, please.