abap について
abaplintによる静的解析とClean ABAPの手動レビューで、ABAPコードを検査するスキルです。目的に応じたチェック方法を選び、優先度付きの改善案を提示します。
主な機能
- 01abaplintによる構文・型チェック
- 02設定可能なlintルール
- 03Clean ABAPスタイルレビュー
- 04優先度付きの改善提案
- 05Clean Coreレベルの説明
活用シーン
- 01ABAPプロジェクトのlint
- 02Clean ABAPに沿ったコードレビュー
- 03総合的な品質チェック
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ likweitan/ abap-skills --skill abapインストール後、Claude Code で/abapを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/abaplint.mdchecklist.mdCleanABAP.mdquick-reference.md詳細
ABAP
相補的な2つの方法でABAPコードの品質をチェックし、改善します。
- abaplint:CLIによる自動静的解析で、構文、型、設定可能なルールをチェックします
- Clean ABAP:Clean ABAPスタイルガイドの原則に基づき、手動でレビューします
ワークフロー
-
ユーザーの依頼に基づいてチェックの種類を判断します。
- lint、abaplintの実行、または構文チェックを依頼された場合:abaplintを使用します
- クリーンコードのレビュー、ベストプラクティス、またはコード品質について依頼された場合:Clean ABAPレビューを使用します
- 不明な場合、または全体的なチェックを依頼された場合:両方を使用します
-
abaplintのチェックの場合:
abaplintがインストールされていることを確認します(npx @abaplint/cli --versionまたはabaplint --version)- インストールされていない場合は、次のコマンドでインストールします:
npm install @abaplint/cli -g - プロジェクトのルートに
abaplint.jsonがあるか確認します - 設定ファイルがない場合は、作成を支援します(スターター設定については
references/abaplint.mdを参照してください) - プロジェクトのルートディレクトリで
abaplintを実行します - 検出結果を解析し、ユーザーに提示します
-
Clean ABAPレビューの場合:
- ユーザーが提示したABAPコードを読みます
- Clean ABAPのカテゴリーに照らして確認します:名前、言語、定数、変数、テーブル、文字列、ブール値、条件、IF文、クラス、メソッド、エラー処理、コメント、フォーマット、テスト
- 該当する行を具体的に示して違反を特定します
- コード例を用いて、実行可能な改善案を提示します
- 影響度(重大、大、小)に基づいて問題に優先順位を付けます
abaplintのクイックスタート
プロジェクトのルートで実行します。
abaplint
デフォルト設定を生成します(すべてのルール)。
abaplint -d > abaplint.json
On-Premise、Steampunk/BTP、HANA互換性向けのスターター設定を含む、abaplintの詳細な設定については、references/abaplint.mdを参照してください。
Clean ABAPのチェックカテゴリー
名前
- 内容が分かる名前を使用し、snakecaseにし、ハンガリアン記法(iv、lv*、lt*)は使用しません
- クラスには名詞、メソッドには動詞を使用し、不要な語句は避けます
言語
- 手続き型よりオブジェクト指向を、命令型より関数型を優先します
- NEW、インライン宣言、テーブル式などのモダンな構文を使用します
定数
- マジックナンバーを使用せず、ENUMまたはグループ化した定数を使用します
変数
- インライン宣言を優先し、連鎖したDATA宣言は使用しません
テーブル
- DEFAULT KEYは使用せず、INSERT INTO TABLE、LINE_EXISTS、WHERE句を使用します
文字列
- リテラルにはバッククォート、文字列テンプレートにはパイプを使用します
ブール値
- ABAP_BOOL、ABAP_TRUE/ABAP_FALSE、XSDBOOLを使用します
条件
- 肯定形の条件を使用し、NOT ISよりIS NOTを優先し、述語形式のメソッド呼び出しを使用します
IF文
- 空のIF分岐は作成せず、ELSE IFよりCASEを優先し、ネストの深さは3以下にします
メソッド
- 静的メソッドよりインスタンスメソッドを、EXPORTINGよりRETURNINGを優先し、パラメーターは3つ以下、行数は20行以下にします
エラー処理
- 戻りコードより例外を優先し、クラスベースの例外を使用し、CX_ROOTは捕捉しません
コメント
- 何をするかではなく、なぜそうするかを説明し、*ではなく"を使用し、コメントアウトしたコードは残しません
フォーマット
- 1行につき1つのステートメントとし、120文字以下に収め、一貫したインデントを使用します
テスト
- Given-when-thenの構成にし、焦点を絞ったアサーションと依存性注入を使用します
出力形式
分析結果は次のように構成します。
# ABAP Check Results
## abaplint Findings
[abaplint output, grouped by severity]
## Clean ABAP Review
### Summary
- Total Issues: [count]
- Critical: [count] | Major: [count] | Minor: [count]
### Critical Issues
#### [Category] - [Issue Title]
**Location:** Line [X] / Method [name]
**Problem:** [description]
**Recommendation:** [how to fix]
### Major Issues
[Same format]
### Minor Issues
[Same format]
### Positive Observations
- [Things done well]
Clean Coreレベルのコンテキスト
ABAP Cloudを対象とする、またはABAP Cloudの基準で評価するコードの場合、コード品質に関する検出結果をSAPのClean Coreレベルに対応付けられます。
- レベルA — リリース済みAPIのみを使用し、Clean ABAPとabaplintのチェックをクリア
- レベルB — クラシックAPIを使用し、安定していますが、クラシックABAPの言語バージョンが必要
- レベルC — SAPの内部オブジェクトを使用しており、後継のオブジェクトへの移行が必要
- レベルD — SAPテーブルへの直接書き込み、
EXEC SQL、内部利用向けにリリースされたAPIを使用しており、排除が必要
Clean Coreに関する検出結果は、スタイルに関する検出結果とは分けて扱います。書式が整ったSAPテーブルへのSELECTでも、レベルCです。レベルの定義についてはabap-cloudスキルを、自動チェックについてはatc-cloudificationを参照してください。
参考資料
- abaplint の設定とセットアップ:インストール方法、設定オプション、スターター設定については、
references/abaplint.mdをお読みください - Clean ABAP ガイド完全版:根拠と例を含む完全なスタイルガイドについては、
references/CleanABAP.mdをお読みください - クイックパターン:良いコードと悪いコードの例をまとめたものについては、
references/quick-reference.mdをお読みください - レビュー用チェックリスト:体系的なレビュー用チェックリストについては、
references/checklist.mdをお読みください
関連スキル
- abap-cloud:クリーンコアのレベルと ABAP Cloud への準拠に使用します
- abap-unit-testing:Clean ABAP の原則に沿ったユニットテストの作成に使用します
- abap-sql-amdp:コード品質の改善時に ABAP SQL をモダナイズするために使用します
コメント
Markdown 対応