Skip to content

[#173] clippy fix#178

Merged
myyrakle merged 1 commit intomasterfrom
feat/#173
Nov 16, 2025
Merged

[#173] clippy fix#178
myyrakle merged 1 commit intomasterfrom
feat/#173

Conversation

@myyrakle
Copy link
Copy Markdown
Owner

@myyrakle myyrakle commented Nov 16, 2025

resolves: #173

설명

린트 수정

Summary by CodeRabbit

  • Refactor
    • 내부 코드 구조 개선 및 정리를 통한 유지보수성 향상
    • 에러 처리 로직 단순화 및 조건문 최적화
    • 열거형 타입의 기본값 처리 방식 개선
    • 코드 가독성 및 일관성 강화

@myyrakle myyrakle self-assigned this Nov 16, 2025
@myyrakle myyrakle linked an issue Nov 16, 2025 that may be closed by this pull request
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Nov 16, 2025

전체 개요

Clippy 린트 설정 추가 및 여러 모듈에서 명시적 Default 구현을 파생 트레이트로 전환하고, 조건부 로직을 통합하여 코드 간결성을 개선하는 리팩토링입니다.

변경 사항

응집 주제 / 파일 변경 요약
Cargo.toml 린트 설정
Cargo.toml
Clippy 린트 구성 추가: to_string_trait_impl = "allow"
Default 트레이트 파생 변환
src/ast/dml/parts/join.rs, src/ast/dml/parts/order_by.rs, src/ast/types/data_types.rs, src/wal/endec/implements/bitcode.rs
명시적 impl Default 제거 후 derive(Default)#[default] 속성으로 치환. JoinType(InnerJoin), OrderByType(Asc), OrderByNulls(Last), DataType(Int), BitcodeEncoder, BitcodeDecoder 기본값 지정
에러 처리 통합
src/executor/initializer.rs, src/wal/manager/builder.rs
중첩된 에러 체크와 조건부 로직을 &&를 사용한 단일 조건으로 결합
조건부 로직 단순화
src/executor/implements/dml/select.rs
GROUP BY 절 처리에서 중첩 조건을 결합 조건으로 변환
리팩토링 및 코드 정리
src/executor/executor.rs, src/parser/implements/dml/expression.rs, src/pgwire/protocol/extension/data_row_batch.rs
매개변수 이름 지정(_wal_manager), 필드 초기화 단축형 사용, 수명 매개변수 추가(DataRowWriter<'_>), 임포트 재정렬
패턴 매칭 단순화
src/executor/encoder/storage.rs, src/wal/endec/implements/bitcode.rs
Result 매칭을 .ok() 또는 직접 에러 반환으로 변환

코드 검토 예상 노력

🎯 2 (단순) | ⏱️ ~12분

  • 주의 필요 영역:
    • src/pgwire/protocol/extension/data_row_batch.rs: 공개 API의 반환 타입에 수명 매개변수 추가 — 호출 지점에서의 호환성 확인 필요
    • src/executor/implements/dml/select.rs: 통합된 조건부 로직의 의도 동등성 검증 필요
    • 모든 derive(Default) 변환: 기본값 선택(어느 variant가 기본인지)이 의도와 일치하는지 확인

🐰 린트를 정리하고 기본값을 정렬하니,
중첩 조건들이 깔끔하게 흘러가고,
파생 트레이트로 코드는 가벼워져,
리팩토링의 춤을 춘다네요! ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 23.53% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목이 핵심 변경사항을 명확하게 요약합니다: clippy 린트 수정 관련 변경으로, 실제 변경사항(Default 파생, 조건문 단순화 등)이 린트 개선과 직접 관련이 있습니다.
Linked Issues check ✅ Passed PR 변경사항이 #173 린트 리팩토링 요구사항을 충족합니다: Cargo.toml 린트 설정 추가, Default 파생 구현 최적화, 패턴 매칭 단순화 등 코드 품질 개선이 이루어졌습니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 린트 수정 및 코드 최적화와 관련되어 있으며, 범위 내 변경입니다: 파생 추가, 조건문 단순화, 에러 처리 리팩토링 등이 모두 린트 개선 목표와 부합합니다.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/#173

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (2)
src/ast/types/data_types.rs (1)

5-8: LGTM! derive(Default) 사용으로 간소화

명시적인 impl Default#[derive(Default)]#[default] 속성으로 대체했습니다. 이는 더 관용적이고 간결한 Rust 코드입니다. 기본 동작(DataType::Int)은 그대로 유지됩니다.

테스트 커버리지 향상을 위해 default() 메서드를 직접 테스트하는 것을 고려해보세요:

#[test]
fn test_data_type_default() {
    assert_eq!(DataType::default(), DataType::Int);
}
src/ast/dml/parts/order_by.rs (1)

26-32: LGTM! 일관된 리팩토링입니다.

OrderByType과 동일한 패턴으로 derive 매크로를 사용하여 코드가 일관되고 간결해졌습니다. Last를 기본값으로 선택한 것도 일반적인 데이터베이스 동작과 일치합니다.

관련 코드 스니펫에서 다른 파일들(src/ast/dml/insert.rs, src/ast/dml/expressions/subquery.rs, src/ast/types/expression.rs)에도 수동 impl Default 블록이 있는 것으로 보입니다. 일관성을 위해 가능한 경우 동일한 derive 패턴을 적용하는 것을 고려해보세요.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4b03163 and d16d609.

📒 Files selected for processing (12)
  • Cargo.toml (1 hunks)
  • src/ast/dml/parts/join.rs (1 hunks)
  • src/ast/dml/parts/order_by.rs (1 hunks)
  • src/ast/types/data_types.rs (1 hunks)
  • src/executor/encoder/storage.rs (1 hunks)
  • src/executor/executor.rs (2 hunks)
  • src/executor/implements/dml/select.rs (1 hunks)
  • src/executor/initializer.rs (3 hunks)
  • src/parser/implements/dml/expression.rs (3 hunks)
  • src/pgwire/protocol/extension/data_row_batch.rs (2 hunks)
  • src/wal/endec/implements/bitcode.rs (3 hunks)
  • src/wal/manager/builder.rs (3 hunks)
🧰 Additional context used
🧬 Code graph analysis (3)
src/wal/endec/implements/bitcode.rs (1)
src/wal/endec/mod.rs (1)
  • decode (10-10)
src/ast/dml/parts/order_by.rs (3)
src/ast/dml/insert.rs (1)
  • default (20-22)
src/ast/dml/expressions/subquery.rs (1)
  • default (11-13)
src/ast/types/expression.rs (1)
  • default (41-43)
src/executor/initializer.rs (1)
src/errors/execute_error.rs (1)
  • wrap (16-21)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Rust project - latest (windows-latest, stable)
  • GitHub Check: Rust project
🔇 Additional comments (17)
src/executor/implements/dml/select.rs (1)

128-132: LGTM! Clippy 린트 수정이 올바르게 적용되었습니다.

중첩된 if문을 let-chain 문법으로 병합하여 코드 가독성을 개선했습니다. 로직의 동작은 동일하게 유지되며, Rust의 관용적인 패턴을 따릅니다.

src/pgwire/protocol/extension/data_row_batch.rs (2)

5-5: LGTM! 임포트 순서 정리

Clippy 린트를 만족시키기 위한 임포트 재정렬로, 의미상 변경 사항은 없습니다.


41-41: 생명주기 표기는 올바름 - 검증 완료

코드 검증 결과, DataRowWriter<'_> 반환 타입의 명시적 생명주기 표기는 완전히 올바릅니다:

  • DataRowWriter<'a> 구조체 정의와 일치
  • '_&mut self 차용의 생명주기를 올바르게 표현
  • Rust clippy ELIDED_LIFETIMES_IN_PATHS 린트 요구사항 충족
  • 동작상 변경 없음 (암묵적 추론 → 명시적 표기)
  • 커밋 d16d609 [#173] clippy fix로 확인됨
src/executor/encoder/storage.rs (1)

19-19: LGTM! 간결한 Result → Option 변환

match 패턴을 .ok()로 대체한 것은 Rust의 관용적인 표현입니다. 동작은 동일하며 코드가 더 간결해졌습니다.

Cargo.toml (1)

58-60: LGTM! Clippy 린트 설정 추가

프로젝트 전체에 to_string_trait_impl 린트를 허용하도록 설정했습니다. 이는 직접적인 ToString 구현을 허용하는 합리적인 설정입니다.

src/wal/manager/builder.rs (3)

68-72: LGTM! let-chain을 사용한 조건 결합

중첩된 if 문을 if let ... && condition 형태로 결합하여 코드 가독성이 향상되었습니다. 로직은 동일하게 유지됩니다.


84-90: LGTM! 직접 Display 포맷팅 사용

e.to_string() 대신 e를 직접 사용하여 불필요한 중간 String 할당을 제거했습니다. 더 효율적인 코드입니다.


110-117: LGTM! matches! 매크로를 사용한 간결한 패턴 매칭

조건 확인에 matches! 매크로를 사용하여 코드가 더 간결하고 관용적으로 변경되었습니다.

src/ast/dml/parts/join.rs (1)

16-19: LGTM! derive(Default) 사용으로 간소화

명시적인 impl Default#[derive(Default)]#[default] 속성으로 대체했습니다. InnerJoin이 기본값으로 지정되었습니다.

src/executor/executor.rs (1)

33-33: LGTM! 미사용 파라미터 경고 억제

파라미터명을 _wal_manager로 변경하여 clippy의 미사용 파라미터 경고를 억제했습니다. Line 38의 TODO 주석에서 언급된 대로 WAL 로깅이 추가되면 이 파라미터가 사용될 예정입니다.

src/wal/endec/implements/bitcode.rs (3)

11-15: LGTM! Default 구현 추가

BitcodeEncoderDefault 구현을 추가하여 clippy의 new_without_default 경고를 해결했습니다. new()를 호출하는 표준 패턴입니다.


31-35: LGTM! Default 구현 추가

BitcodeDecoderDefault 구현을 추가하여 clippy의 new_without_default 경고를 해결했습니다.


44-46: LGTM! 에러 처리 간소화

불필요한 중간 변수와 ? 연산자를 제거하고 map_err 결과를 직접 반환하도록 변경했습니다. 더 간결하고 관용적인 코드입니다.

src/executor/initializer.rs (1)

56-61: LGTM! let-chain을 사용한 에러 처리 간소화

여러 함수에서 중첩된 에러 처리를 if let Err(error) = ... && error.kind() != AlreadyExists 패턴으로 결합하여 코드 가독성이 크게 향상되었습니다. 로직은 동일하게 유지되며, 기존 테스트가 다양한 에러 시나리오를 커버하고 있습니다.

Also applies to: 92-95, 103-106, 153-159

src/ast/dml/parts/order_by.rs (1)

17-23: LGTM! 깔끔한 clippy 수정입니다.

#[derive(Default)]#[default] 속성을 사용하여 수동 impl 블록을 제거한 것은 Rust의 모던한 관용구입니다. Asc를 기본값으로 선택한 것도 SQL 표준과 일치합니다.

src/parser/implements/dml/expression.rs (2)

365-366: 필드 초기화 단축 구문 적용이 좋습니다!

Rust의 필드 초기화 단축 구문을 사용하여 코드가 더 간결하고 관용적이 되었습니다. 이는 clippy가 권장하는 표준 수정사항입니다.


11-11: 원본 리뷰 코멘트는 잘못되었습니다.

검증 결과, predule은 오타가 아닙니다. src/errors/mod.rs에서 pub mod predule;로 명시적으로 정의되어 있으며, 전체 코드베이스의 파서 파일들에서 일관되게 use crate::errors::predule::ParsingError;로 임포트하고 있습니다. 비표준적인 이름이지만 의도된 모듈명이며, 코드가 정상적으로 컴파일됩니다.

lexer::predule::Token 패턴도 동일하게 사용되고 있습니다.

Likely an incorrect or invalid review comment.

@myyrakle myyrakle merged commit 1cbb349 into master Nov 16, 2025
4 of 6 checks passed
@github-actions
Copy link
Copy Markdown

Pull reviewers stats

Stats of the last 14 days for rrdb:

User Total reviews Time to review Total comments

⚡️ Pull request stats

@myyrakle
Copy link
Copy Markdown
Owner Author

Total Coverage: 54.42%
🔗 Coverage View (최대 몇분 정도의 지연시간이 발생할 수 있습니다.)

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.

리팩토링: Lint

1 participant