Существуют ли какие-либо инструменты для выполнения статического анализа кода Scala?[закрыто]

StackOverflow https://stackoverflow.com/questions/1598882

Вопрос

Существуют ли какие-либо инструменты для выполнения статического анализа кода Scala, похожие на FindBugs и PMD для Java или Splint для C / C ++?Я знаю, что FindBugs работает с байт-кодом, созданным путем компиляции Java, поэтому мне любопытно, как это будет работать на Scala.

Поисковые запросы Google (по состоянию на 27 октября 2009 года) показывают очень мало.

Поисковые запросы Google (по состоянию на 01 февраля 2010 года) выявляют этот вопрос.

Это было полезно?

Решение

FindBugs анализирует байтовые коды JVM, независимо от инструмента, который их сгенерировал.Я пробовал использовать FindBugs для проверки файлов .class, сгенерированных Scala.К сожалению, FindBugs выдавал много предупреждений даже для тривиальных программ Scala.

Другие советы

Сейчас есть Scalastyle который выполняет ту же работу, что и Checkstyle для Java.Это включает в себя не только проверку форматирования, но и некоторые проверки на наличие известных источников ошибок, таких как класс, который реализует hashCode(), но не equals.

В настоящее время существует около 40 проверок, но мы добавляем их постоянно.

Для получения дополнительной информации см. www.scalastyle.org.

В этом направлении ведется определенная работа.Некоторые ссылки:

Существует также обсуждение списка рассылки scala, доступный архив здесь.

Вот обновленный ответ по состоянию на август 2014 года для некоторых, которые нацелены или хорошо работают со Scala.

Лично я думаю, что JVM или Java заканчиваются слишком большим количеством ложных срабатываний или имеют проверки, которые нацелены в основном на специфические классы Java.Например, поскольку в Scala мы не склонны использовать коллекции Java, все проверки на основе коллекций findbugs не нужны.Другим примером являются проверки на использование статических полей, которые неуместны в Scala.

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

Мне очень весело с Codacy (например https://www.codacy.com/app/hejfelix/Frase/dashboard) для проектов с открытым исходным кодом

Существует плагин SBT для детектора копирования-вставки PMD CPD.

https://github.com/sbt/cpd4sbt

детектор копирования-вставки scala, основанный на AST.Ищу скопированные поддеревья / ASTS и сообщаю об этом.

Это плагин для sbt.

https://github.com/ajtkulov/scala-cpd

Я мало что знаю о Scala, но если совместима с Java, то сольный продукт Klocwork может сработать.Вы можете найти его здесь Клокворк Соло

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top