OSS 기여: 2021년 8월 16일~23일

오랜만에 오픈 소스 소프트웨어에 기여하기 시작했습니다. 오랫동안 Deno을 눈여겨 봤습니다. 이번 주에 Deno Lint에서 첫 번째 PR을 병합했습니다. 다음은 문제에 대한 자세한 게시물입니다.

425호





카테고리: 리팩토링

문제에 대한 설명



문제를 살펴보면 각 규칙의 테스트에서 메시지와 힌트가 반복되는 것을 볼 수 있습니다. 예를 들어 previous commit의 *\ban_ts_comments.rs에서 메시지와 힌트가 반복되는 것을 볼 수 있습니다.

    r#"// @ts-nocheck"#: [
            {
              col: 0,
              message: DirectiveKind::Nocheck.as_message(),
              hint: DirectiveKind::Nocheck.as_hint(),
            }
          ],
    r#"/// @ts-nocheck"#: [
            {
              col: 0,
              message: DirectiveKind::Nocheck.as_message(),
              hint: DirectiveKind::Nocheck.as_hint(),
            }
          ],
    r#"//@ts-nocheck"#: [
            {
              col: 0,
              message: DirectiveKind::Nocheck.as_message(),
              hint: DirectiveKind::Nocheck.as_hint(),
            }
          ],
    r#"// @ts-nocheck    "#: [
      {
        col: 0,
        message: DirectiveKind::Nocheck.as_message(),
        hint: DirectiveKind::Nocheck.as_hint(),
      }


Deno Lint의 각 규칙에 대한 테스트 사례는 공통 메시지 및 힌트를 기반으로 함께 그룹화할 수 있습니다. 이 문제는 그것에 대해 이야기합니다. 매크로assert_lint_err는 테스트 케이스 실행을 담당합니다.

해결책



commit 에서 새 규칙으로 이 매크로를 확장했습니다. 이 매크로를 사용하여 동일한 메시지와 힌트가 있는 여러 테스트 사례를 실행할 수 있습니다. 다음은 수정된assert_lint_err 매크로입니다. 메시지와 힌트를 기반으로 테스트를 그룹화할 수 있는 두 가지 새로운 규칙을 추가했습니다.

도전


  • Rust에 대해 몰랐습니다. 이 문제를 해결하려면 macro_rules!에 대해 배워야 했습니다. 나는 그것에 관심을 갖게 되었다. 내가 얼마나 발전하는지 보자.
  • 이번이 처음이라 Deno에 기여를 하게 되어서 모든 형식을 의식하지 못했습니다. Deno 팀의 Yusuke Tanaka가 많은 도움을 주었습니다. 그들은 매우 수용적이고 활동적이었습니다. 그들의 도움으로 제 new issue도 받아 들일 수 있었습니다.
  • 이것은 도전이 아니라 학습입니다. Rust 스타일의 스타일을 완전히 이해할 수 없었습니다. 리뷰어는 저에게 그것들을 지적했습니다. 다음부터는 더 잘해야지.

  • 후속 조치



    이 커밋에서 나는 ban_ts_comment.rs을 다루었고
    no_await_in_loop.rs . 다른 파일도 덮어야 합니다. 누군가 이 게시물을 읽고 기여하고 싶은 기분이 든다면 그렇게 하도록 격려하겠습니다 😀😀. 도움/질문이 있는 경우 저 또는 Deno 팀의 누구에게나 연락하십시오. 기꺼이 도와드리겠습니다.

    Deno 및 Deno 개발의 다양한 측면과 후속 블로그 게시물에서 기여에 대한 자세한 게시물을 작성할 것입니다.

    좋은 웹페이지 즐겨찾기