kotlin, Lint 및 EditorConfig

6054 단어 AndroidKotlinlint
나는 팀에서 개인kotlin의 기술 성숙도가 작은 새에서 큰 새까지 프로젝트에서 각각 다르다고 생각한다.자유도에 맞는 인코딩 규칙이 필요한kotlin의 개발에서 Lint가 없으면 고통스럽다.나는 린트를 개발한 세계 각지의 엔지니어들에게 감사하면서 기대하고 있다.모두의 프로젝트는 어떤 규칙이 있고, 그것들은 어떻게 공통되어 있습니까?

Android Lint 및 Kotlin


유감스럽게도 나는 참가하지 않았다. 며칠 전 kotlinConf 린트에 관한 회의가 있었다.
  • 관련 비디오
  • 슬라이드
  • 앞으로 코드를 kotlin으로 교체하면서 더 강력한 지원을 안드로이드 Lint 2.0으로 추가한다고 한다.그러나 현재 AndroidLint는 IDE의 기능을 통해서만 kotlin 파일의 정적 분석을 할 수 있다.

    이것은 issue로 열거한 것이다.
    Lint checks with Kotlin don't work from command line
    Lint checks on Kotlin files only work from the Android Studio IDE. The currently do not run when you run lint directly from Gradle.
    따라서 CI 등은 자동화되지 않는 것이 좋은 느낌이다.그러면 잊어버리거나 귀찮아서 안 하는 게 세상일이에요.상술한 발표도 알려졌지만, Android Studio 3.1에서 지원되며, gradle 명령에서 Lint kotlin을 걸면 정적 해석이 가능하다.

    ktlint


    AS3.1 이후 안정적인 Lint를 제공하는 데 시간이 좀 걸릴 수 있기 때문에 다른 수단으로 Lint 조사를 진행하려면 다음과 같은 보도를 발견할 수 있습니다.
    코드로 하여금 bot로 하여금 Kotlin 코드의 스타일을 검사하게 하다
    위의 멋진 기사의 계발을 받아 저도 프로젝트ktlint에 가입하여 Danger와 Android Lint를 준비했는데 걸려 넘어질 줄은 몰랐습니다.ktlin은 kotlin의 공식 스타일 가이드를 바탕으로 형식에 대한 내용도 포함한다.
    예를 들어, 들여쓰기의 경우 kotlin Code Conversations:
    Naming Style
    - use 4 space indentation
    또한 kotlin guide
    Each time a new block or block-like construct is opened, the indent increases by four spaces. When the block ends, the indent returns to the previous indent level. The indent level applies to both code and comments throughout the block.
    따라서 들여쓰기를 두 공간으로 설정하면 개발에 불쾌감을 줄 수 있다는 경고가 대량으로 나온다.
    ...oO (it depends...

    내 주장은 항목과 취향에 따라 쉽게 변하는 부분을 Lint에 포함시키지 말라는 것이다
    Kotlin linter in spirit of feross/standard (JavaScript) and gofmt (Go).
    그래서 변형기 같은 부분도 있어요.그래서 가져오기 전에 상의해 봤어요.

    축소뿐만 아니라kotlin에 기술할 때 팀에 따라 다양한 부분이 있다.따로
  • 데이터 클래스의 표준은 무엇입니까
  • import
  • 포맷 방법
  • companion object의 위치가 어떻습니까 ktlint도 논의한 것 같아요.
  • 줄 바꾸기
  • 등등, 이런 사소한 일의 개발이 힘들기 때문에 가능한 것은 Lint로 해결하고 싶지만 그 ktlin은 간단하게 맞춤형으로 만들 수 없을 것 같습니다.
    이렇게 되면 공식 요청을 계속 기다릴 수밖에 없다...
    순간 머릿속에 스쳐 지나가는 건 재밌는 detekt로 커스텀 린트를 만드는 건가?!그렇긴 하지만 자신의 룰을 결정할 때마다 쓰면 좀 힘들어요.(그나저나 내가 없으면 아무도 관리하지 않는다.)
    참고로 Android Lint의 경우 build.gradle 에서 lintOption 을 지정할 수 있기 때문에 무시하고 싶은 Lint를 기술할 수 있습니다.다른 것도 워닝 등을 표시하지 않을 수 있습니다.
    build.gradle
    lintOptions {
        disable 'YourDisableCase',~~
        ignoreWarnings true
    }
    

    EditorConfig


    나는 이미 만계를 다 쓴 줄 알았는데, 최근에야 ktlint0.11.0부터 읽는 규칙을 알게 되었다.
    EditorConfig는 IDE에서 일관된 인코딩 스타일을 정의하여 현재 AndroidStudio에서 플러그인을 가져오지 않고 설정할 수 있습니다.
    따라서 파일을 추가하기만 하면 위의 들여쓰기 경고를 피할 수 있습니다.
    .editorconfig
    [*.{kt,kts}]
    indent_size=2
    
    다른 것도 많습니다EditorConfig. 검사해 주세요.
    이상은 이번에 넘어진 요점으로 간단하게 해결했지만 린트에서 해결할 수 없는 규칙도 있고 추천하는 해결 방법이 있으면 평어를 받을 수 있다는 등 기쁘다고 생각합니다.
    학술적으로 크기에 따른 분류가 없다고 한다속성
    마침 토론할 때 나왔는데 다시 잘 검사하면 되는데...

    좋은 웹페이지 즐겨찾기