Это кодовой двигатель для анализа статического кода Scala на вершине Scala.Meta. Проверьте раздел DOCS для получения дополнительной информации.
Внедрение нового шаблона:
Обычно это хорошая идея, чтобы начать с реализации тестового файла. Он содержит проблемы, которые должен обнаружить новый шаблон, а также реализации, которые исправляют указанные проблемы. Это определяет ограничения того, что должен быть шаблон, а также не должен обнаружить и помогает избежать ложных срабатываний. Чтобы создать файл испытаний, добавьте его в ресурсы в соответствии с документами/ тестами/ Вы можете взглянуть на уже реализованные тесты в нашем базовом плагине
Далее мы реализуем фактический код. В настоящее время шаблон должен находиться в codacy.patterns и реализовать интерфейс codacy.base.Pattern . Что означает, что он должен реализовать def apply(tree:Tree):Iterable[Result] . В большинстве случаев метод collect на деревьях, который предоставляет нам Scala.Meta, достаточен для этой цели. Result состоит из Message (которое само по себе является просто строкой, облетавшей тип) и Positionable , которое в настоящее время может быть неявно получено путем передачи scala.meta.Tree или scala.meta.Token
Иногда можно захотеть изменить поведение шаблона в соответствии с некоторой конфигурацией. Такая конфигурация должна следовать некоторым основным правилам и передается в шаблон как единственный аргумент в конструкторе. Правила:
это должен быть класс дела
Все аргументы должны определять дефолты
Читатели и писатели JSON должны существовать для типов аргументов. (В настоящее время это означает примитивные типы и scala.util.matching.Regex )
Дополнительные шаги могут быть найдены в интеграции инструмента главы с одной бывшей: нет необходимости явно добавлять параметры шаблона к шаблонам, определенным в patterns.json . Для полного примера ознакомьтесь с существующими шаблонами
https://github.com/scalameta/scalameta/blob/master/notes/quasiquotes.md
https://docs.codacy.com/related-tools/tool-developer-guide/
import scala.meta._
val code = """ .... """
val tree = code.parse[Source]
codacy.patterns.Custom_Scala_ElseIf(tree)
//To see the tree structure:
tree.show[Structure]
Вы можете создать Docker, сделав:
sbt docker:publishLocal
Docker запускается со следующей командой:
docker run -it -v $srcDir:/src <DOCKER_NAME>:<DOCKER_VERSION>
Руководство разработчика инструментов
Руководство разработчика инструментов - Использование Scala
Мы используем тест Codacy-Plugins для проверки нашей интеграции внешних инструментов. Вы можете следовать инструкциям, чтобы убедиться, что ваш инструмент работает, как и ожидалось.
Codacy - это инструмент автоматического обзора кода, который контролирует ваш технический долг, помогает вам улучшить качество вашего кода, обучать лучшим практикам вашим разработчикам и помогает сэкономить время в обзорах кода.
Кодера также помогает отслеживать покрытие кода, дублирование кода и сложность кода.
Кодекс поддерживает PHP, Python, Ruby, Java, JavaScript и Scala, среди прочих.
Кодекс бесплатна для проектов с открытым исходным кодом.