종속성에서 제공하는 특정 기능의 사용을 방지하는 방법이 있습니까?

fcs

내 응용 프로그램에는 라이브러리 A에 대한 컴파일 종속성이 있습니다.이 라이브러리에는 성능 문제를 일으키는 특정 기능이 있습니다. 그러나 더 이상 사용되지 않는 것은 아니며 이러한 사전 정보가 없으면 사용하는 것이 안전하다고 생각할 것입니다. 이 함수를 어떻게 든 사용하지 않거나 직접 호출되지 않도록하는 방법을 찾고 있습니다.

정적 분석 도구 또는 내장 컴파일러 플래그를 통해이를 달성 할 수 있습니까?

fcs

scalafix를 확인했지만 이런 종류의 linting을 설정하기에는 너무 복잡했습니다. 결국 wartremover를 사용하고 사용자 지정 사마귀를 추가했습니다.

사용자 정의 사마귀는이 예제에 표시된대로 하위 프로젝트에 있습니다.

lazy val myWarts = project.in(file("my-warts")).settings(
  commonSettings,
  libraryDependencies ++= Seq(
  "org.wartremover" % "wartremover" % wartremover.Wart.PluginVersion cross CrossVersion.full
  )
)

lazy val main = project.in(file("main")).settings(
  commonSettings,
  wartremoverWarnings += Wart.custom("mywarts.ExtractOrElse"),
  wartremoverClasspaths ++= {
    (fullClasspath in (myWarts, Compile)).value.map(_.data.toURI.toString)
  }
)

내장 EitherProjectionPartial 사마귀 를 수정하여 사용자 정의 사마귀를 만들었습니다 .

object ExtractOrElse extends WartTraverser {
  def apply(u: WartUniverse): u.Traverser = {
    import u.universe._

    val extractableJsonAstNode = rootMirror.staticClass("org.json4s.ExtractableJsonAstNode")
    new u.Traverser {
      override def traverse(tree: Tree): Unit = {
        tree match {
          // Ignore trees marked by SuppressWarnings
          case t if hasWartAnnotation(u)(t) =>
          case Select(left, TermName("extractOrElse")) if left.tpe.baseType(extractableJsonAstNode) != NoType =>
            error(u)(tree.pos, "extractOrElse is deprecated - use toOption.map or extract[Option[A]] instead")
            super.traverse(tree)
          case _ => super.traverse(tree)
        }
      }
    }
  }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

DT의 버튼에 사용자 지정 R- 기능 동작을 추가하는 방법이 있습니까?

NPM에서 종속성의 종속성을 보는 방법이 있습니까?

Gradle에서 특정 버전의 라이브러리를 사용하도록 특정 종속성을 강제 할 수있는 방법

사용자 지정 정렬 기능에서 개체의 특정 속성에 대한 정렬을 구현하는 방법은 무엇입니까?

Substrate에는 하나의 사용자 정의 모듈에서 다른 모듈의 스토리지 및 기능을 사용하는 방법이 있습니까?

Scala에서 사용자 정의 컴파일 오류 메시지를 제공하는 방법이 있습니까?

작성기에서 사용하지 않는 종속성을 제거하는 방법은 무엇입니까?

Git / Gitlab : 병합하기 전에 사용자 지정 요구 사항을 적용하는 기본 제공 방법이 있습니까?

사용자 정의 후크에서 "useEffect에 누락 된 종속성이 있음"을 수정하는 방법

OpenCV - 마스킹을 사용하여 이미지의 특정 영역에서만 특정 색상의 개체를 감지하는 방법이 있습니까?

숫자 기능을 지정하는 특성이 있습니까?

javascript를 사용하여 HTML 요소의 특정 속성을 얻는 방법이 있습니까?

webpack을 사용하여 파일의 내용을 특정 변수에 할당하는 방법이 있습니까?

사용자 정의 개체에서 설정 가능한 기능을 만드는 방법이 있습니까?

WordPress의 특정 페이지에서 페이지 매김을 제공하는 방법은 무엇입니까?

QListWİdget에서 하나의 특정 행을 제외한 모든 행을 지우는 방법이 있습니까?

PosgreSQL에서 사용자의 플러드 삽입을 방지하는 방법이 있습니까? 어떤 종류의 속도 제한이 있습니까?

부울을 반환하여 특정 종속성이 gradle 파일에서 컴파일되는지 여부를 알 수있는 방법이 있습니까?

npm install : package.json의 특정 종속성을 무시하는 방법이 있습니까?

Maven을 사용하여 종속성 또는 artifactItem 내의 특정 요소를 참조하는 방법이 있습니까?

특정 요일 동안 Magento에서 카트 기능을 비활성화하는 방법이 있습니까?

클래스의 기본 속성을 지정하는 방법이 있습니까?

symfony의 특정 도메인에 대한 방화벽을 허용하지 않는 방법이 있습니까?

로컬 Gradle 캐시에서 하나의 종속성을 제거하는 간단한 방법이 있습니까?

Sharepoint 2010 사용자 정의 열을 SQL의 특정 열에 매핑하는 방법이 있습니까?

NestJS에서 종속성 주입과 함께 정적 메서드를 사용하는 방법이 있습니까?

내 로컬 함수의 특정 지점에서 전역 변수를 사용하는 방법이 있습니까?

JavaScript에서 FileReader를 사용하여 파일의 특정 부분을 가져 오는 방법이 있습니까?

수동 설치 및 java.library.path 설정없이 maven에서 javacv의 기본 부분에 대한 종속성을 설정하는 방법이 있습니까?

TOP 리스트

  1. 1

    Ionic 2 로더가 적시에 표시되지 않음

  2. 2

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  3. 3

    std :: regex의 일관성없는 동작

  4. 4

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  5. 5

    java.lang.UnsatisfiedLinkError : 지정된 모듈을 찾을 수 없습니다

  6. 6

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  7. 7

    상황에 맞는 메뉴 색상

  8. 8

    SMTPException : 전송 연결에서 데이터를 읽을 수 없음 : net_io_connectionclosed

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    Windows cmd를 통해 Anaconda 환경에서 Python 스크립트 실행

  11. 11

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  12. 12

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  13. 13

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  14. 14

    Cassandra에서 버전이 지정된 계층의 효율적인 모델링

  15. 15

    복사 / 붙여 넣기 비활성화

  16. 16

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  17. 17

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  18. 18

    SQL Server-현명한 데이터 문제 받기

  19. 19

    Seaborn에서 축 제목 숨기기

  20. 20

    ArrayBufferLike의 typescript 정의의 깊은 의미

  21. 21

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

뜨겁다태그

보관