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

Step4 - 🚀 4단계 - 자동차 경주(우승자) #5540

Closed
wants to merge 48 commits into from

Conversation

rkaehdaos
Copy link

No description provided.

rkaehdaos added 30 commits April 6, 2024 10:38
- Car는 전진한 거리 distance를 가진다.
- Car는 random값이 4 이상이면 거리증가
- 초기화 streawm 이용
- 0 이하시 에러
- runRound 추가
- 아예 차가 나타나지 않는 현상 방지
build.gradle
- deprecated 확인 옵션 추가
- 필드 추가
- 생성자 추가
- 5자 제한 추가
- getter 추가
- 테스트도 따라서 추가
- 상수 사용
- `null` check
rkaehdaos and others added 12 commits April 15, 2024 16:43
- pmd로 ncss 15line 강제화
- jdk21 apply
- 기존 에
* 에러 정의 차이

리플렉션을 사용하여 생성자를 호출하면, 생성자 내부에서 발생하는 예외는 InvocationTargetException에 감싸져서 발생합니다. 이 때문에 예외가 직접적으로 UnsupportedOperationException가 아니라 InvocationTargetException으로 포착되는 것입니다.

* 최적화

* Car 상수 사용 및 보완

* formatting

* 가독성

* workflow 수정

* workflow 수정

* pmdtest4에 step4 넣음

* workflow에 pmd summary 추가

* 15라인 rule은 main 코드에만 ㅋㅋ

* Extract PMD info and update step summary

* test dependon pmdmain

* pmd 실패여도 진행

* xmllint 사용 제거

* 메시지 추출 부분 수정

* 일단 원복

* awk로 개선된 스크립트

설명
파일 처리:

awk를 사용하여 <file> 태그로 시작하고 </file> 태그로 끝나는 블록을 찾습니다. 이는 awk '/<file name=/,/<\/file>/' 명령으로 처리합니다.
파일 내부 처리:

awk 스크립트는 각 파일 블록을 처리하면서 파일 이름을 추출하고, 각 위반 사항의 정보를 파싱합니다.
파일 이름은 gensub() 함수를 사용하여 추출하고, 위반의 라인 번호, 메시지, URL을 추출하여 출력합니다.
Markdown 형식:

추출된 정보는 콘솔에 출력되고 pmd_summary.md 파일에 Markdown 형식으로 기록됩니다.
최종적으로, 이 Markdown 파일은 GitHub Actions 단계 요약에 추가됩니다.
장점
성능: awk는 스트림을 처리하면서 발생하는 데이터를 효율적으로 처리할 수 있으므로, 큰 XML 파일에 대해서도 성능상의 이점이 있습니다.
간결성: awk를 사용하면 복잡한 grep 및 sed 조합을 하나의 명령으로 대체할 수 있어 스크립트가 더욱 간결해집니다.
유지 관리: 스크립트가 간결해지므로 유지 관리가 용이해지며, 변경 사항을 적용하기 쉬워집니다.

* awk로 개선된 스크립트2 - 텍스트 한정

변경된 부분 설명
태그 내용 처리 로직: <violation> 태그를 만나면 내용 캡처를 시작하고, </violation> 태그를 만나면 내용 캡처를 종료하며, 그 사이에 있는 모든 텍스트를 content 변수에 누적합니다.
텍스트 출력: 최종적으로 각 violation의 설명이 content 변수에 저장되고, 이를 Markdown 링크의 텍스트로 사용하여 출력합니다.
이 수정을 통해 PMD 요약 정보에는 각 violation의 상세 설명이 <violation> 태그 사이의 텍스트로 정확히 제공됩니다. 이 방법은 XML 데이터에서 필요한 정보만을 추출하여 보다 명확하고 유용한 요약을 생성하는 데 도움이 됩니다.

* message 수정

* workflow-PR 생성

* NCSS 5->15

* NCSS 5->15

* NCSS 15->5

* README.md 수정

* onPRTest

* onPRTest -             $GITHUB_STEP_SUMMARY

* onPRTest

* Comment SUMMARY Report on PR body check

* body-path: 'PR_summary.md'

* body-path: 'PR_summary.md'

* PUSH_summary.md 에 모으기

* PR_summary.md 에 total count 추가

* push workflow는 pr이 있으면 작동하지 않음

* pr workflow type 지정

* PR시에는 build task

* github.event.pull_request삭제 - pr workflow에서만 true 가능

* types 가독성

* graalvm 적용

* 정리

* 언어 정리

* pmd pmdtest는 전부 제외, pmdmin은 step4만

* 메서드라인은 15라인

* 문제가 없을시 pmd report 요약 액션 에러 수정

* push workflow - 문제가 없을시 pmd report 요약 액션 에러 수정

* PR 멈추기

* push test

* push test2

* error 수정: branches-ignore: ['*']

* total_violations 출력 수정

* 극단적 test

* 극단적 test2

* 극단적 test3

* PMD 리포트 요약 복원

* grep 명령 실패 허용

* jacoco summary 지워지는 거 방지

* PR workflow 활성화

---------

Co-authored-by: Kai Ahn <[email protected]>
* psvm 클래스 rename

* 패키지 이동

* 메서드명 변경

* CarRacingRunner 생성

* 단일책임 원칙

---------

Co-authored-by: GeunChang Ahn <[email protected]>
@rkaehdaos rkaehdaos closed this Apr 17, 2024
C
Merge branch 'rkaehdaos' into step4_racing_winner
@rkaehdaos rkaehdaos reopened this Apr 17, 2024
@rkaehdaos rkaehdaos closed this Apr 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant