Slide 26
Slide 26 text
Claude Code Actionでドキュメントとソースコードの乖離をチェックした結果① 26
# 深刻度 対象ドキュメント(file:line) 実装の実態(file:line) 乖離の内容 推奨対応
1High
docs/system-design/rest-api.yml:168-172
(companiesPostRequestBody.required: ["companyName"])
packages/server/src/lambda/handlers/api-
gateway/rest-api/companies-post.ts:13 (zodスキーマ
は name フィールドのみ)
OASのrequiredに"companyName"と書いてあるが
propertiesキーは"name"。存在しないフィールド名を
requiredに指定している
OASのcompaniesPostRequestBody.requiredを
["name"]に修正
2High
docs/system-design/rest-api.yml:186
(companiesPostResponseBody.required:
["id","createdAt","companyName"])
packages/server/src/lambda/domains/services/schem
as.ts:3-8 (Company型のキーはid/createdAt/name) /
packages/e2e/rest-api/test-cases/companies-
post.ts:62 (nameで検証)
POSTレスポンスのOASスキーマがcompanyNameを
requiredに含むが、実際のレスポンスフィールドは
name
OASのcompaniesPostResponseBodyのpropertiesを
id/createdAt/nameに修正し、requiredを
["id","createdAt","name"]に修正
3High
docs/system-design/rest-api.yml:150-163
(companiesGetResponseBody.properties: companyId,
companyName) / 189-203 (companiesIdGetResponseBody同
様)
packages/server/src/lambda/domains/services/schem
as.ts:3-8 (フィールド名はid, name) /
packages/e2e/rest-api/test-cases/companies-
get.ts:31-48 (id/nameフィールドを使用)
GET /companies および GET /companies/{id} のOASス
キーマがcompanyId/companyNameだが、実装は
id/name
OASのcompaniesGetResponseBodyと
companiesIdGetResponseBodyのpropertiesをid/name
に合わせて修正
4High
packages/iac/README.md:3-13 ("IacStack"、"Amazon SQS
queue subscribed to an Amazon SNS topic"と記載)
packages/iac/lib/main-stack.ts:14 (スタック名は
MainStack。SQS/SNSの直接構築なし)
IaCパッケージのREADMEがCDK初期テンプレートのまま
で、本プロジェクトの実態(Lambda+API
GW+DynamoDB+Cognito+WAF等)と完全に乖離
packages/iac/README.mdをプロジェクト実態に合わせ
て書き直す
5Med
README.md:36 (.github/workflows/cicd.yml参照) /
README.md:136 (.github/workflows/manual-deploy-to-
development.yml参照)
リポジトリに.github/workflows/ディレクトリが存在し
ない
GitHub ActionsワークフローファイルをREADMEで参照
しているが、対応するファイルが存在しない
.github/workflows/が意図的に非公開なら注釈を追加。
公開する場合はファイルを追加
6Med
packages/server/README.md:10 (ユースケース層パ
ス: ./src/lambda/domain/usecases/)
packages/server/src/lambda/配下の実際のパス:
domains/services/ (domain→domains、usecasesディ
レクトリは存在しない)
ドキュメント記載パスが実際のディレクトリ構造と異な
る
packages/server/README.mdのパス表記を実際のディ
レクトリ構造に合わせて修正
7Med
docs/system-design/rest-api.yml:101,108 (パスパラメータ名を
{companyId}と定義)
packages/server/src/lambda/handlers/api-
gateway/rest-api/router.ts:40,55 (/companies/:idと
ルーティング) / companies-id-get.ts:12, companies-id-
delete.ts:12 (id フィールドで受け取る)
OASでは{companyId}だが、Express routerは:idとして
受け取りhandlerもidとして参照している
OASのパスパラメータ名companyIdと実装のパラメータ
名idを統一する
8Med README.md:46 (システム設計書にバケット仕様書を列挙)
packages/iac/lib/配下にS3バケットの構築コードは存在
しない
S3バケット仕様書が設計書一覧に掲載されているが対応
する実装が存在しない
READMEの設計書一覧からバケット仕様書を削除するか、
T.B.D であることを明記
9Low
README.md:30, docs/user-guide/README.md:30 (Serverless
ExpressリンクURL: github.com/CodeGenieApp/serverless-
express)
packages/server/package.json:14 (npmパッケージ名:
@codegenie/serverless-express)
リンク先URLのGitHubオーナー(CodeGenieApp)とnpm
パッケージ名(@codegenie)のケーシングが異なる(同一
プロジェクトの可能性大だが要確認)
URLとnpmパッケージ名の整合性を確認し、正しいURL
に修正