Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
c2c7574
refactor: 성공 시엔 status code와 body만 있으면 되므로, 공통 응답 구조 삭제
zzaekkii Nov 28, 2025
d2b61e9
refactor: 에러 response 변환에서 body 제거
zzaekkii Nov 28, 2025
b0576ba
refactor: 기존 헬스 체크 응답 구조 변환
zzaekkii Nov 28, 2025
cba7ac3
fix: cargo fmt 적용
zzaekkii Nov 28, 2025
cb8d340
chore: sonarcloud 재적용
zzaekkii Nov 28, 2025
7e21055
chore: sonarcloud 프로젝트키 재설정
zzaekkii Nov 28, 2025
a4fc55b
chore: sonarcloud 커버리지 리포트 포맷 변경
zzaekkii Nov 28, 2025
c2612e8
chore: sonarcloud 커저리지 관련 코드 변경
zzaekkii Nov 28, 2025
43f6b52
chore: sonarcloud 환경변수 등록, xml로 변경
zzaekkii Nov 28, 2025
6c3a674
chore: sonarcloud scan 오류 고치기 시도 1
zzaekkii Nov 28, 2025
ea68948
chore: sonarcloud scan 오류 고치기 시도 2
zzaekkii Nov 28, 2025
d6358f1
chore: sonarcloud scan 오류 고치기 시도 3 (메모리 문제)
zzaekkii Nov 28, 2025
17ebdea
chore: sonarcloud scan 오류 고치기 시도 4 (grcov 에러)
zzaekkii Nov 28, 2025
c27a027
chore: sonarcloud 커버리지 리포트 에러 (단순화)
zzaekkii Nov 28, 2025
0ea99ad
chore: sonarcloud 커버리지 리포트 에러 (단순화)
zzaekkii Nov 28, 2025
e82ff8e
chore: sonarcloud 커버리지 리포트 에러 해결 시도
zzaekkii Nov 28, 2025
31d1d3d
chore: sonarcloud 커버리지 리포트 에러 해결 시도 2
zzaekkii Nov 28, 2025
f8275bf
chore: sonarcloud 커버리지 리포트 에러 해결 시도 3
zzaekkii Nov 28, 2025
0bc5ad0
chore: sonarcloud 커버리지 리포트 에러 해결 시도 4
zzaekkii Nov 28, 2025
1a05fc6
chore: sonarcloud 커버리지 리포트 에러 해결 시도 5
zzaekkii Nov 28, 2025
1bba3d5
chore: sonarcloud 커버리지 리포트 에러 해결 시도 6
zzaekkii Nov 28, 2025
45c62a8
chore: sonarcloud 커버리지 리포트 에러 해결 시도 7
zzaekkii Nov 28, 2025
49a31ff
chore: sonarcloud 커버리지 리포트 에러 해결 시도 8
zzaekkii Nov 28, 2025
ffcab4c
chore: sonarcloud 커버리지 리포트 에러 해결 시도 9
zzaekkii Nov 28, 2025
3bb9af7
chore: sonarcloud 커버리지 리포트 에러 해결 시도 10
zzaekkii Nov 28, 2025
dfe1dd0
chore: sonarcloud 커버리지 리포트 에러 해결 시도 11
zzaekkii Nov 28, 2025
9fb2e28
chore: sonarcloud 커버리지 리포트 에러 해결 시도 12
zzaekkii Nov 28, 2025
bda52a7
chore: sonarcloud 커버리지 리포트 에러 해결 시도 13
zzaekkii Nov 28, 2025
1413615
chore: sonarcloud 커버리지 리포트 에러 해결 시도 14 - xml 확인
zzaekkii Nov 28, 2025
3aaca29
chore: sonarcloud 커버리지 리포트 에러 해결 시도 15 - xml 포맷 변경
zzaekkii Nov 28, 2025
f4c47f5
chore: sonarcloud 커버리지 리포트 에러 해결 시도 16 - xml 포맷 변경
zzaekkii Nov 28, 2025
3528660
chore: sonarcloud 커버리지 리포트 에러 해결 시도 17 - xml 포맷 변경
zzaekkii Nov 28, 2025
1e71333
chore: sonarcloud 커버리지 리포트 에러 해결 시도 18 - xml 버전
zzaekkii Nov 28, 2025
a35f6df
chore: sonarcloud 커버리지 리포트 에러 해결 시도 19 - xml 버전
zzaekkii Nov 28, 2025
dd92e47
chore: sonarcloud 커버리지 리포트 에러 해결 시도 20 - xml 버전
zzaekkii Nov 28, 2025
8adcdea
chore: sonarcloud 커버리지 리포트 에러 해결 시도 21 - xml 버전
zzaekkii Nov 28, 2025
da29b3c
chore: sonarcloud 커버리지 리포트 에러 해결 시도 22 - xml파일 내 태그
zzaekkii Nov 28, 2025
2dfc19c
chore: sonarcloud 커버리지 리포트 에러 해결 시도 23 - xml파일 내 태그
zzaekkii Nov 28, 2025
3a6dd0d
chore: sonarcloud 커버리지 리포트 에러 해결 시도 24 - xml파일 내 태그
zzaekkii Nov 28, 2025
83e960a
chore: sonarcloud 커버리지 리포트 에러 해결 시도 25 - xml파일 내 태그
zzaekkii Nov 28, 2025
0eeb9c3
chore: sonarcloud 커버리지 리포트 에러 해결 시도 26 - xml파일 내 태그
zzaekkii Nov 28, 2025
3893284
chore: sonarcloud 커버리지 리포트 에러 해결 시도 27 - xml파일 내 태그(gemi)
zzaekkii Nov 28, 2025
7470b2d
chore: sonarcloud 커버리지 리포트 에러 해결 시도 28 - xml파일 내 태그(claud)
zzaekkii Nov 28, 2025
1204ad6
chore: sonarcloud 커버리지 리포트 에러 해결 시도 29 (claud)
zzaekkii Nov 28, 2025
a9b89d1
chore: sonarcloud 커버리지 리포트 에러 해결 시도 30 (claud)
zzaekkii Nov 28, 2025
631e139
chore: sonarcloud 커버리지 리포트 에러 해결 시도 31 (claud)
zzaekkii Nov 28, 2025
1408972
chore: sonarcloud 커버리지 리포트 에러 해결 시도 32 (claud)
zzaekkii Nov 28, 2025
967e7f7
chore: sonarcloud 커버리지 리포트 에러 해결 시도 33 (claud)
zzaekkii Nov 28, 2025
e51faf2
chore: sonarcloud 커버리지 리포트 에러 해결 시도 34 (claud)
zzaekkii Nov 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 54 additions & 16 deletions .github/workflows/sonarcloud.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,44 +10,82 @@ on:

jobs:
sonar:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install Rust toolchain
- name: Install Rust Toolchain & Components
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
components: clippy, llvm-tools-preview

- name: Install grcov
run: cargo install grcov
run: cargo install grcov --force

- name: Generate coverage
run: |
export CARGO_INCREMENTAL=0
export RUSTFLAGS="-Cinstrument-coverage"
export LLVM_PROFILE_FILE="coverage-%p-%m.profraw"

cargo test
- name: Run Tests with Coverage Instrumentation
env:
CARGO_INCREMENTAL: "0"
RUSTFLAGS: "-Cinstrument-coverage"
LLVM_PROFILE_FILE: "%m.profraw"
run: cargo test --all --verbose

grcov . --binary-path ./target/debug/ \
- name: Generate Coverage Report (lcov format)
run: |
grcov . \
--binary-path ./target/debug/deps/ \
-s . \
-t lcov \
--branch \
--ignore-not-existing \
--ignore "/*" \
-o lcov.info

- name: Convert lcov to SonarCloud Generic Coverage format
run: |
python3 << 'EOF'
import re

coverage = {}
current_file = None

with open('lcov.info', 'r') as f:
for line in f:
if line.startswith('SF:'):
current_file = line[3:].strip()
if current_file not in coverage:
coverage[current_file] = []
elif line.startswith('DA:') and current_file:
parts = line[3:].strip().split(',')
if len(parts) >= 2:
line_num = parts[0]
hits = parts[1]
coverage[current_file].append((line_num, hits))

with open('coverage.xml', 'w') as f:
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
f.write('<coverage version="1">\n')
for filepath, lines in coverage.items():
if lines:
f.write(f' <file path="{filepath}">\n')
for line_num, hits in lines:
f.write(f' <lineToCover lineNumber="{line_num}" covered="{"true" if int(hits) > 0 else "false"}"/>\n')
f.write(' </file>\n')
f.write('</coverage>\n')
EOF

- name: Delete profraw files
run: find . -name "*.profraw" -type f -delete

- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@v2
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
args: >
-Dsonar.projectKey=morutine_backend
args: >
-Dsonar.projectKey=MORUTINE_backend
-Dsonar.organization=morutine
-Dsonar.projectBaseDir=.
-Dsonar.coverageReportPaths=lcov.info
-Dsonar.coverageReportPaths=coverage.xml
3 changes: 0 additions & 3 deletions morutine-api/src/common/error/error_into_response.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ impl<E: ErrorCode> IntoResponse for AppError<E> {
let body = Json(json!({
"code": reason.code,
"message": reason.message,
"data": {}
}));

(StatusCode::from_u16(reason.status).unwrap(), body).into_response()
Expand All @@ -30,9 +29,7 @@ impl IntoResponse for DatabaseApiError {
fn into_response(self) -> Response {
let app_error: AppError<CommonErrorCode> = match self.0 {
DatabaseErrorCode::UniqueViolation(_) => AppError::new(CommonErrorCode::Conflict),

DatabaseErrorCode::NotFound => AppError::new(CommonErrorCode::NotFound),

_ => AppError::new(CommonErrorCode::InternalServerError),
};

Expand Down
1 change: 0 additions & 1 deletion morutine-api/src/common/mod.rs
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
pub mod error;
pub mod response;
40 changes: 0 additions & 40 deletions morutine-api/src/common/response/api_response.rs

This file was deleted.

1 change: 0 additions & 1 deletion morutine-api/src/common/response/mod.rs

This file was deleted.

5 changes: 3 additions & 2 deletions morutine-api/src/domain/system/handlers.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::common::response::api_response::ApiResponse;
use axum::Json;
use axum::response::IntoResponse;
use serde_json::json;

pub async fn health_check() -> impl IntoResponse {
ApiResponse::success("OK")
Json(json!({"status": "OK"}))
}