이것은 Scala.meta 상단에 Scala 정적 코드 분석을위한 코드 유효 엔진입니다. 자세한 내용은 문서 섹션에서 확인하십시오.
새로운 패턴 구현 :
일반적으로 테스트 파일을 구현하여 시작하는 것이 좋습니다. 새로운 패턴이 감지 해야하는 문제와 해당 문제를 정확하게하는 구현을 포함합니다. 이것은 패턴이 무엇을 해야하는지에 대한 제약을 정의하고 또한 잘못된 긍정을 감지하고 피해야합니다. TestFile을 만들려면 Docs/ Tests의 리소스에 추가하십시오/ 기본 플러그인에서 이미 구현 된 테스트를 살펴볼 수 있습니다.
다음으로 실제 코드를 구현합니다. 패턴은 현재 패키지 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 의미합니다.
추가 단계는 하나의 예측과의 장 도구 통합에서 찾을 수 있습니다. 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>
도구 개발자 안내서
도구 개발자 안내서 - 스칼라 사용
우리는 외부 도구 통합을 테스트하기 위해 Codacy-Plugins-Test를 사용합니다. 도구가 예상대로 작동하는지 확인하기 위해 지침을 따라야합니다.
Codacy는 기술 부채를 모니터링하고 코드 품질을 향상시키고 개발자에게 모범 사례를 가르치며 코드 검토에서 시간을 절약 할 수 있도록 자동화 된 코드 검토 도구입니다.
Codacy는 또한 코드 적용 범위, 코드 복제 및 코드 복잡성을 추적하는 데 도움이됩니다.
Codacy는 PHP, Python, Ruby, Java, JavaScript 및 Scala를 지원합니다.
Codacy는 오픈 소스 프로젝트의 경우 무료입니다.