Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BSVR-54] Spotless pre-commit hook 추가 #4

Merged
merged 10 commits into from
Jul 1, 2024
Merged

[BSVR-54] Spotless pre-commit hook 추가 #4

merged 10 commits into from
Jul 1, 2024

Conversation

EunjiShin
Copy link
Collaborator

@EunjiShin EunjiShin commented Jun 30, 2024

📌 개요 (필수)

  • 코드 포맷팅을 자동화하기 위해, spotless 플러그인과 pre-commit hook을 추가해요.

🔨 작업 사항 (필수)

  • spotless plugin 추가
  • spotless java extension 설정 추가
    • google java code style format 적용
    • import order 적용
    • unused import 삭제 적용 (근데 이거 일 안하더라구요..?? 공식 깃헙에 이슈 올라와있는걸보니 버전 이슈인 것 같기도)
    • 라인 끝 공백 적용
    • 파일 끝에 새로운 라인 추가 적용
  • commit 찍을 때 자동으로 spotlessApply 돌도록 hook 추가
    • 매번 직접 ./gradlew spotlessApply 돌려주기는 귀찮기도하고, 깜빡하기도 쉬우니까 훅으로 추가했어요
  • google java code editorconfig 추가
  • codeowners 추가
    • spotless랑 관련있는 변경은 아닌데, 너모 작은 변경이라 슬쩍 같이 추가했어요!ㅎ.ㅎ

🌱 연관 내용 (선택)

  • 처음 pull 받은 후, 훅 적용을 위해 ./gradlew compileJava 한번만 돌려주세요!
  • application/* 변경사항은 spotless 돌리면서 포맷팅 된 것들이에요! 내용 변경은 없으니 참고해주세요~

@EunjiShin EunjiShin requested a review from a team June 30, 2024 17:17
@EunjiShin EunjiShin self-assigned this Jun 30, 2024
@EunjiShin EunjiShin added ✨ Feature 기능 개발 🛠 Setting 개발 환경 세팅 and removed ✨ Feature 기능 개발 labels Jun 30, 2024
@wjdwnsdnjs13
Copy link
Member

wjdwnsdnjs13 commented Jun 30, 2024

음... 간단한 내용이 아닌 듯해서 해당 PR 내용 중 모르는 부분은 내일 오전에 조금 찾아본 다음, 다시 PR 확인하고
approve 할까 하는데, approve는 지금 하는 게 나은가요??

@EunjiShin
Copy link
Collaborator Author

음... 간단한 내용이 아닌 듯해서 해당 PR 내용 중 모르는 부분은 내일 오전에 조금 찾아본 다음, 다시 PR 확인하고 approve 할까 하는데, approve는 지금 하는 게 나은가요??

아하 급한 내용은 아니라서, 그럼 찾아보고 리뷰 주시면 될 것 같아요~~~ (근데 저희 코드리뷰에선 다시 존댓말하나요??)

@wjdwnsdnjs13
Copy link
Member

음... 간단한 내용이 아닌 듯해서 해당 PR 내용 중 모르는 부분은 내일 오전에 조금 찾아본 다음, 다시 PR 확인하고 approve 할까 하는데, approve는 지금 하는 게 나은가요??

아하 급한 내용은 아니라서, 그럼 찾아보고 리뷰 주시면 될 것 같아요~~~ (근데 저희 코드리뷰에선 다시 존댓말하나요??)

여긴 좀 공적이라 존댓말이 낫지 않나 싶었는데, 편한 쪽으로 해도 될 거 같아요 ㅋㅋㅋ

Copy link

This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size.

@EunjiShin
Copy link
Collaborator Author

EunjiShin commented Jun 30, 2024

This PR exceeds the recommended size of 1000 lines. Please make sure you are NOT addressing multiple issues with one PR. Note this PR might be rejected due to its size.

@depromeet/15th-6team-server

요거 editorconfig 때문인데, 이게 google java style을 다 담고 있는 파일이라... 사이즈가 클 수 밖에 없다 ^.ㅠ
배포되고 있는 컨벤션을 그대로 넣은 만큼, 리뷰 대상이 아니라서 이번 PR label은 무시해줘도 될 듯!!

@wjdwnsdnjs13
Copy link
Member

spotless 얘도 xml 파일 intellij에서 코드 스타일 적용해줘야 하는 거지??

Comment on lines +42 to +55
spotless {
java {
// Google Java 포맷 적용
googleJavaFormat().aosp()
// 아래 순서로 import문 정렬
importOrder("java", "javax", "jakarta", "org", "com")
// 사용하지 않는 import 제거
removeUnusedImports()
// 각 라인 끝에 있는 공백을 제거
trimTrailingWhitespace()
// 파일 끝에 새로운 라인 추가
endWithNewline()
}
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wjdwnsdnjs13 놉! 요기 build.gradle 보면 spotless에서 어떤 포맷을 사용할건지 설정해두었어~
그래서 별다른 설정 안해도 ./gradlew spotlessApply만 하면 알아서 적용될거야!

그런데 매번 spotlessApply를 하면 번거로우니까,

  • ./gradlew compileJava를 돌릴때 (build.gradle tasks.named compileJava 부분)
  • commit을 찍을 때 (.githooks의 pre-commit 부분)

내가 굳이 spotless을 돌리지 않아도 자동으로 동작하게 만들어둔게 pre-commit 설정~~

@EunjiShin
Copy link
Collaborator Author

spotless 얘도 xml 파일 intellij에서 코드 스타일 적용해줘야 하는 거지??

여기에 답변 달아두었오~

Copy link
Member

@wjdwnsdnjs13 wjdwnsdnjs13 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

슬랙 내용까지 전부 확인 완료!

Copy link
Collaborator

@pminsung12 pminsung12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다~

@@ -0,0 +1 @@
* @EunjiShin @wjdwnsdnjs13 @pminsung12
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

루트 디렉토리의 모든 파일에 대해 특정 사용자 지정하는 방법이구나 👍🏻

Comment on lines +44 to +53
// Google Java 포맷 적용
googleJavaFormat().aosp()
// 아래 순서로 import문 정렬
importOrder("java", "javax", "jakarta", "org", "com")
// 사용하지 않는 import 제거
removeUnusedImports()
// 각 라인 끝에 있는 공백을 제거
trimTrailingWhitespace()
// 파일 끝에 새로운 라인 추가
endWithNewline()
Copy link
Collaborator

@pminsung12 pminsung12 Jul 1, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

주석 👍🏻 이해완.


// git commit시 자동으로 spotless 적용되도록 설정
// 최초 적용시 && script 변경시 ./gradlew compileJava 한번 실행해주세요
tasks.register<Copy>("updateGitHooks") {
Copy link
Collaborator

@pminsung12 pminsung12 Jul 1, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기서 .git/hooks에 파일을 바로 정의하지 않고, pre-commit에 정의해서 컴파일 하기 전에 복사하는 이유는 버전관리 떄문이야?

Copy link
Collaborator Author

@EunjiShin EunjiShin Jul 1, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고것도 있는데, .git 폴더가 기본적으로 숨김폴더라서 직접 스크립트를 넣을 수가 없더라고!
.git은 로컬에서 관리되는 값이지 리모트 저장소로 올라가는 값이 아니라서, .git에 바로 정의하면 팀원끼리 해당 스크립트를 공유할 수가 없다고 하더라고??

저 스크립트가 각자의 로컬에 있어야 원하는대로 훅이 동작해서, 스크립트 공유 목적으로 빼둔거라고 생각하면 될 것 같아!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아 그러네 .git은 당연히 공유가 안되겠다 .github랑 개념을 혼동했다. 확인~

Comment on lines +64 to +71
tasks.register<Exec>("makeGitHooksExecutable") {
commandLine("chmod", "+x", "${rootProject.rootDir}/.git/hooks/pre-commit")
dependsOn("updateGitHooks")
}

tasks.named<JavaCompile>("compileJava") {
dependsOn("makeGitHooksExecutable")
}
Copy link
Collaborator

@pminsung12 pminsung12 Jul 1, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

compile 전에 githook이 무조건 걸리는구나 👍🏻

@EunjiShin EunjiShin merged commit 44a65e4 into main Jul 1, 2024
1 check passed
@EunjiShin EunjiShin deleted the feat/BSVR-54 branch July 1, 2024 06:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🛠 Setting 개발 환경 세팅 size/XL
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants