Могу ли я динамически рассчитать технический долг?

У меня есть большое количество отдельных, несвязанных программ Java в папке "Программы", и мне бы очень хотелось, чтобы у вас была возможность автоматически рассчитывать баллы технического долга для каждой отдельной программы. Я понимаю, что SonarQube может позволить вам сделать это (вроде) с помощью Sonar-Runner, однако мне очень хотелось бы сделать это динамически, поэтому я могу script анализировать и записывать технические долговые баллы всех программ в папке "Программы" в csv.

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

Ответ 1

Да, вы можете, Sonar - инструмент анализа кода и имеет плагины, которые могут даже оценить технический долг в человеческих часах или долларах. На самом деле легко настраивать и запускать, вы просто загружаете его, извлекаете и запускаете (поставляется с внутренней БД, поэтому никаких дополнительных зависимостей от конфигураций не требуется). Затем, если вы используете maven, вы добавляете это в свой pom.xml:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>2.0</version>
</plugin>

и запустите:

maven sonar:sonar

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

------ Обновление 1 ------

Если у вас несколько проектов (при условии, что они являются maven), вы можете сделать их всех дочерних элементов одного родительского проекта и запустить mvn sonar:sonar у родителя, он проанализирует все ваши дети. Вот пример нескольких проектов.

Ответ 2

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

На странице:

Этот плагин Eclipse вычисляет различные показатели для вашего кода во время циклов сборки и предупреждает вас, используя представление "Проблемы" о "нарушениях диапазона" для каждой метрики. Это позволяет вам постоянно следить за состоянием вашего кода. Вы также можете экспортировать метрики в HTML для общедоступного отображения или в формат CSV или XML для дальнейшего анализа. Этот экспорт может быть выполнен из Eclipse или с помощью задачи Ant.

http://eclipse-metrics.sourceforge.net/

Ответ 3

Эти ответы были великолепны, но не совсем то, что я искал. Мне удалось создать свою собственную работу:

  • Когда я создаю java-проекты, у меня есть класс java, который автоматически записывает файл sonar-properties.properties в каждый отдельный проект.

  • Затем я запускаю сервер сонара (через командную строку)

  • Затем я написал script, который сверлит по каталогам, ища файлы sonar-properties.properties. Когда, если найдет один, он запускает сонара.

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