Este é o mecanismo de codacia para análise de código estático do SCILA Criado no topo do scala.meta. Verifique a seção Docs para obter mais informações.
Implementando um novo padrão:
Geralmente é uma boa ideia começar implementando o arquivo de teste. Ele contém problemas que o novo padrão deve detectar, bem como implementações que corrigem os problemas referidos. Isso define as restrições do que o padrão deve e também não deve detectar e ajuda a evitar falsos positivos. Para criar um arquivo de testes, adicione -o aos recursos em Docs/ Tests/ você pode dar uma olhada nos testes já implementados em nosso plug -in base
Em seguida, implementamos o código real. Atualmente, um padrão deve residir na pacote codacy.patterns e implementar a interface codacy.base.Pattern . O que significa que ele deve implementar o def apply(tree:Tree):Iterable[Result] . Na maioria dos casos, o método collect em árvores que Scala.meta nos fornece é suficiente para esse fim. Um Result consiste em uma Message (que por si só é apenas uma string embrulhada por tipo) e um Positionable que atualmente pode ser obtido implicitamente ao passar um scala.meta.Tree ou um scala.meta.Token
Às vezes, pode -se querer alterar o comportamento do padrão de acordo com alguma configuração. Essa configuração deve seguir algumas regras básicas e ser passada para o padrão como o único argumento no construtor. As regras são:
precisa ser uma aula de caso
Todos os argumentos precisam definir padrões
Os leitores e escritores da JSON devem existir para os tipos de argumento. (Atualmente, isso significa tipos primitivos e scala.util.matching.Regex )
Etapas adicionais podem ser encontradas na integração da ferramenta de capítulo com uma exposição: não há necessidade de adicionar explicitamente parâmetros de padrão aos padrões definidos em patterns.json , pois isso já está sendo coberto pela Regra 2 das regras de configuração. Para um exemplo completo, confira os padrões existentes
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]
Você pode criar o Docker fazendo:
sbt docker:publishLocal
O Docker é executado com o seguinte comando:
docker run -it -v $srcDir:/src <DOCKER_NAME>:<DOCKER_VERSION>
Guia do desenvolvedor de ferramentas
Guia do desenvolvedor de ferramentas - usando o Scala
Utilizamos o teste de codacia-plugins para testar nossa integração de ferramentas externas. Você pode seguir as instruções para garantir que sua ferramenta esteja funcionando como esperado.
O Codacy é uma ferramenta automatizada de revisão de código que monitora sua dívida técnica, ajuda a melhorar sua qualidade de código, ensina as melhores práticas aos seus desenvolvedores e economiza tempo nas análises de código.
O Codacy também ajuda a acompanhar a cobertura do código, a duplicação de código e a complexidade do código.
O Codacy suporta PHP, Python, Ruby, Java, JavaScript e Scala, entre outros.
O Codacy é gratuito para projetos de código aberto.