これは、Scala.metaの上に構築されたScala静的コード分析のためのCodacy Engineです。詳細については、ドキュメントセクションを確認してください。
新しいパターンの実装:
通常、テストファイルを実装することから始めることをお勧めします。新しいパターンを検出する問題と、上記の問題を修正する実装を含む問題が含まれています。これは、パターンがすべきことの制約を定義し、また、誤った陽性を回避するのに役立ちます。テストファイルを作成するには、ドキュメント/テストの下のリソースに追加します/ベースプラグインで既に実装されているテストをご覧ください
次に、実際のコードを実装します。パターンは現在、パッケージcodacy.patternsに存在し、 codacy.base.Patternインターフェイスを実装する必要があります。つまりdef apply(tree:Tree):Iterable[Result] 。ほとんどの場合、Scala.metaが提供する木のcollect方法は、その目的のために十分です。 Result 、 Message (それ自体が単なるタイプに包まれた文字列)と、 scala.meta.Treeまたはscala.meta.Tokenを渡すことで現在暗黙的に取得できるPositionableに構成されます。
ある構成に応じて、パターンの動作を変更したい場合があります。このような構成は、いくつかの基本的なルールに従う必要があり、コンストラクターの唯一の引数としてパターンに渡されます。ルールは次のとおりです。
ケースクラスである必要があります
すべての引数は、デフォルトを定義する必要があります
JSONの読者と作家は、引数タイプのために存在する必要があります。 (現在、プリミティブタイプとscala.util.matching.Regexを意味します)
追加の手順は、1つの脱出を使用したチャプターツールの統合にあります。 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-Testを使用して、外部ツールの統合をテストします。そこの指示に従って、ツールが期待どおりに機能していることを確認できます。
Codacyは、技術的な負債を監視し、コードの品質を向上させ、開発者にベストプラクティスを教え、コードレビューの時間を節約するのに役立つ自動コードレビューツールです。
Codacyは、コードカバレッジ、コードの複製、およびコードの複雑さを追跡するのにも役立ちます。
Codacyは、PHP、Python、Ruby、Java、JavaScript、Scalaなどをサポートしています。
Codacyはオープンソースプロジェクトでは無料です。