Skip to content

docflow check

export된 함수, 클래스, 인터페이스, 타입에서 @public JSDoc 태그가 없거나 @param/@property/@returns 태그가 누락된 것들을 찾아서 알려줘요.

예제

기본 사용법

현재 워크스페이스의 모든 패키지에서 JSDoc이 누락된 export들을 검사해요.

bash
docflow check

특정 엔트리 포인트만 검사

설정 파일에서 검사할 엔트리 포인트를 지정한 경우에 사용되는 필드에요.

javascript
export default {
  commands: {
    check: {
      entryPoints: ["packages/core/src/index.ts"],
    },
  },
};

내부 동작

한 번에 모든 API를 문서화하는 것은 어려워요. 점진적으로 문서화를 진행하면서 놓친 부분이 있는지 확인할 때 사용하는 명령어예요.

check 커맨드는 각 패키지의 export된 선언들을 검사해서 다음 항목들을 리포트해요.

  • @public 태그가 없는 선언
  • 함수에서 @param 태그가 누락되거나 불필요한 @param 태그가 있는 선언
  • 인터페이스, 타입 별칭, 객체 리터럴에서 @property 태그가 누락되거나 불필요한 @property 태그가 있는 선언
  • @returns 태그가 누락되거나 실제 반환 타입과 일치하지 않는 함수

검사 대상

다음 선언 타입을 검사해요.

  • 함수 선언 (function, 화살표 함수, 함수 표현식): @param, @returns 태그를 검증해요.
  • 인터페이스 (interface): 프로퍼티와 메서드에 대한 @property 태그를 검증해요.
  • 타입 별칭 (type): 객체 타입 리터럴의 프로퍼티에 대한 @property 태그를 검증해요.
  • 객체 리터럴 (const obj = { ... }): 프로퍼티에 대한 @property 태그를 검증해요.

내부 동작 과정

docflow check 명령어가 실행될 때 내부적으로 진행되는 절차는 다음과 같아요.

  1. 설정 파일 로드: docflow.config.js 파일에서 프로젝트 설정을 읽어와요.
  2. 워크스페이스 패키지 탐색: 설정된 include/exclude 패턴에 따라 대상 패키지들을 찾아요.
  3. 각 패키지별 처리:
    • TypeScript 설정을 로드하고 소스 파일들을 파싱해요.
    • 엔트리 포인트 파일들만 필터링해요. (기본값은 package.json의 main, module, exports 필드에요.)
    • export되는 선언들만 추출해서 barrel re-export는 제외시켜요.
    • @public JSDoc 태그가 없는 선언들을 찾아서 리포트해요.
    • @public 태그가 있는 선언들에 대해 @param, @property@returns 태그를 검증해요.

출력 예시

다음과 같은 형태로 검사 결과를 보여줘요.

bash
npx docflow check
📝 core processing...
 core has missing JSDoc:
  - packages/core/index.ts:fetchData - missing @public
  - packages/core/utils.ts:processData - missing @param for 'input'
  - packages/core/utils.ts:processData - missing @returns
  - packages/core/types.ts:Config - missing @property for 'host'

📝 math processing...
 math has JSDoc for all exports
  • ✅ 모든 export에 @public 태그가 있고, @param/@property/@returns 검증을 통과한 경우
  • ❌ 문제가 있는 export가 있는 경우, 파일 경로·심볼명·에러 메시지를 표시해요

에러 타입

에러설명
missing @public@public 태그가 없어요.
missing @param for '<name>'코드에 존재하는 함수 파라미터에 대한 @param 태그가 없어요.
unused @param '<name>'코드에 존재하지 않는 함수 파라미터에 대한 @param 태그가 있어요.
missing @property for '<name>'코드에 존재하는 프로퍼티에 대한 @property 태그가 없어요.
unused @property '<name>'코드에 존재하지 않는 프로퍼티에 대한 @property 태그가 있어요.
missing @returns함수에 @returns 태그가 없어요.
Expected <type>, got <type>@returns 태그의 타입이 실제 반환 타입과 일치하지 않아요.

설정 옵션

entryPoints

  • 타입: string[]
  • 기본값: package.json의 main, module, exports에서 자동 감지
  • 설명: 검사할 엔트리 포인트 파일들이에요. 지정하지 않으면 package.json에서 자동으로 찾아요.

MIT 라이선스에 따라 배포됩니다.