Il s'agit du moteur Codacy pour l'analyse de code statique Scala construit au-dessus de Scala.Meta. Vérifiez la section DOCS pour plus d'informations.
Implémentation d'un nouveau modèle:
C'est généralement une bonne idée de commencer par implémenter le fichier de test. Il contient des problèmes que le nouveau modèle devrait détecter ainsi que des implémentations qui corrigent lesdits problèmes. Cela définit les contraintes de ce que le modèle doit et ne doit pas non plus détecter et aider à éviter les faux positifs. Pour créer un test de test, ajoutez-le aux ressources sous Docs / Tests / Vous pouvez jeter un œil aux tests déjà implémentés dans notre plugin de base
Ensuite, nous implémentons le code réel. Un modèle doit actuellement résider dans le package codacy.patterns et implémenter l'interface codacy.base.Pattern . Ce qui signifie qu'il doit implémenter le def apply(tree:Tree):Iterable[Result] . Dans la plupart des cas, la méthode collect sur les arbres que Scala.Meta nous fournit est suffisante à cette fin. Un Result consiste en un Message (qui est lui-même juste une chaîne enveloppée de type) et un Positionable qui peut actuellement être implicitement obtenu en passant un scala.meta.Tree ou un scala.meta.Token
Parfois, on peut vouloir modifier le comportement du motif en fonction d'une certaine configuration. Une telle configuration doit suivre certaines règles de base et est transmise au modèle comme le seul argument du constructeur. Les règles sont:
il doit être une classe de cas
Tous les arguments doivent définir les valeurs par défaut
Les lecteurs et écrivains JSON doivent exister pour les types d'arguments. (Actuellement, cela signifie des types primitifs et scala.util.matching.Regex )
Des étapes supplémentaires peuvent être trouvées dans l'intégration de l'outil de chapitre avec une exception: il n'est pas nécessaire d'ajouter explicitement des paramètres de modèle aux modèles définis dans patterns.json car cela est déjà couvert par la règle 2 des règles de configuration. Pour un exemple complet, consultez les modèles existants
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]
Vous pouvez créer le Docker en faisant:
sbt docker:publishLocal
Le Docker est exécuté avec la commande suivante:
docker run -it -v $srcDir:/src <DOCKER_NAME>:<DOCKER_VERSION>
Guide du développeur d'outils
Guide du développeur d'outils - Utilisation de Scala
Nous utilisons le test CODACY-PLUGINS pour tester notre intégration des outils externes. Vous pouvez suivre les instructions pour vous assurer que votre outil fonctionne comme prévu.
Codacy est un outil de révision de code automatisé qui surveille votre dette technique, vous aide à améliorer la qualité de votre code, enseigne les meilleures pratiques à vos développeurs et vous aide à gagner du temps dans les avis de code.
Codacy aide également à garder une trace de la couverture du code, de la duplication de code et de la complexité du code.
Codacy prend en charge PHP, Python, Ruby, Java, Javascript et Scala, entre autres.
Codacy est gratuite pour les projets open source.