Pergunta

Existem ferramentas para realizar a análise estática do código Scala, semelhante ao FindBugs e PMD para Java ou Splint para C/C ++? Eu sei que o FindBugs funciona no bytecode produzido pela compilação Java, por isso estou curioso para saber como funcionaria no Scala.

As pesquisas do Google (em 27 de outubro de 2009) revelam muito pouco.

As pesquisas do Google (a partir de 01 de fevereiro de 2010) revelam essa pergunta.

Foi útil?

Solução

O FindBugs analisa os códigos de byte JVM, independentemente da ferramenta que os gerou. Tentei usar o FindBugs para verificar os arquivos .class gerados pelo scala. Infelizmente, a FindBugs produziu muitos avisos, mesmo para programas triviais de Scala.

Outras dicas

Existe agora Scalastyle que faz o trabalho que o estilo de seleção faz para Java. Isso inclui não apenas as verificações de formatação, mas também algumas verificações de fontes conhecidas de bugs, como uma classe que implementa hashcode (), mas não é igual.

Atualmente, existem cerca de 40 cheques, mas estamos adicionando -os o tempo todo.

Para mais informações, veja www.scalastyle.org.

Há algum trabalho acontecendo nessa direção. Alguns links:

Há também uma discussão sobre a lista de correio Scala, arquivo disponível aqui.

Aqui está uma resposta atualizada a partir de agosto de 2014 para alguns que são direcionados ou funcionam bem com o Scala.

Pessoalmente, acho que os JVM ou Java acabam com muitos falsos positivos ou têm inspeções que são direcionadas principalmente a classes específicas de Java. Por exemplo, como em Scala não tendemos a usar as coleções Java, todas as inspeções baseadas na coleção FindBugs não são necessárias. Outro exemplo são as inspeções para o uso de campos estáticos irrelevantes em Scala.

Findbugs e outras ferramentas que são baseadas em bytecode funcionarão, no sentido de que encontrarão falhas em seu código. Infelizmente, as abordagens baseadas em bytecode foram sintonizadas com a saída dos compiladores JAVAC, o que significa que eles provavelmente produzem taxas falsas positivas muito altas e perdem questões básicas, porque a Scala estará produzindo idiomas diferentes do compilador JAVAC.

Estou me divertindo muito com o Codacy (por exemplo https://www.codacy.com/app/hejfelix/frase/dashboard) para projetos de código aberto

Existe um plug -in SBT para PMD Copy Polar Detector CPD.

https://github.com/sbt/cpd4sbt

detector de pasta de cópia do Scala, baseado no AST. Procurando por subárvores/ASTs de cópia e informe sobre isso.

É plugin para SBT.

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

Não sei muito sobre Scala, mas se for o produto solo da Java Compatible Klocwork. Você pode encontrá-lo aqui Klocwork Solo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top