Agent Skills: Mallet Linter Guide

malletリンターのルールと設定を適用。コードレビュー・品質チェック時に使用

UncategorizedID: cxxxr/.claude/cl-mallet-linter

Skill Files

Browse the full folder contents for cl-mallet-linter.

Download Skill

Loading file tree…

skills/cl-mallet-linter/SKILL.md

Skill Metadata

Name
cl-mallet-linter
Description
malletリンターのルールと設定を適用。コードレビュー・品質チェック時に使用

Mallet Linter Guide

Malletは、スタイルの強制ではなく実際の間違いを捉えることに特化したCommon Lispリンターです。

基本コマンド

# ファイル/ディレクトリをリント
mallet src/

# 全ルール有効化
mallet -a src/
mallet --all src/

# 自動修正(ドライラン)
mallet --fix-dry-run src/

# 自動修正実行
mallet --fix src/

# 出力形式指定
mallet --format json src/
mallet --format line src/   # GCC形式

重大度レベル

| レベル | 説明 | 例 | |--------|------|-----| | error | 確実に間違い | wrong-otherwise | | warning | バグの可能性 | unused-variables, missing-otherwise | | convention | イディオム推奨 | if-without-else, special-variable-naming | | format | フォーマット | trailing-whitespace, no-tabs | | info | スタイル選択 | line-length, constant-naming | | metrics | 品質測定 | cyclomatic-complexity, function-length |

主要ルール

Error(エラー)

| ルール | 説明 | |--------|------| | wrong-otherwise | ecase/etypecaseでotherwise/tを使用 |

Warning(警告)

| ルール | 説明 | |--------|------| | unused-variables | 未使用変数 | | unused-local-functions | 未使用ローカル関数 | | missing-otherwise | case/typecaseにotherwise句がない | | mixed-optional-and-key | &optionalと&keyの混在 |

Convention(慣例)

| ルール | 説明 | |--------|------| | if-without-else | else節なしのif → when/unless推奨 | | bare-progn-in-if | ifでprogn → cond推奨 | | interned-package-symbol | パッケージで#:形式推奨 | | special-variable-naming | 特殊変数はname形式 | | asdf-component-strings | ASDFコンポーネントに文字列使用 |

Format(フォーマット)

| ルール | 説明 | |--------|------| | no-tabs | タブ禁止 | | trailing-whitespace | 行末空白 | | final-newline | ファイル末尾改行 |

Info(情報)

| ルール | 説明 | デフォルト | |--------|------|------------| | line-length | 最大行長 | 100 | | consecutive-blank-lines | 連続空行 | 2 | | unused-local-nicknames | 未使用ニックネーム | - | | unused-imported-symbols | 未使用インポート | - | | constant-naming | 定数は+name+形式 | - | | needless-let* | 不要なlet* | - |

Metrics(メトリクス)

| ルール | 説明 | デフォルト | |--------|------|------------| | cyclomatic-complexity | 循環複雑度 | 20 | | function-length | 関数行数 | 50 |

設定ファイル (.mallet.lisp)

(:mallet-config
 ;; ベース設定
 (:extends :default)  ; :default, :all, :none

 ;; 無視パス
 (:ignore "vendor/**/*.lisp"
          "**/generated/*.lisp"
          "examples/**/*.lisp")

 ;; ルール有効化(オプション付き)
 (:enable :line-length :max 100)
 (:enable :cyclomatic-complexity :max 15)
 (:enable :function-length :max 40)
 (:enable :consecutive-blank-lines :max 2)
 (:enable :constant-naming)

 ;; ルール無効化
 (:disable :if-without-else)

 ;; パス固有設定
 (:for-paths ("tests")
   (:enable :line-length :max 120)
   (:disable :unused-variables))

 (:for-paths ("scripts" "examples")
   (:disable :line-length)
   (:disable :trailing-whitespace)))

CLIオプション

# プリセット
--preset default    # 推奨ルールのみ
--preset all        # 全ルール
--preset none       # ルールなし

# ルール制御
--enable rule-name
--enable rule-name:opt=value
--disable rule-name
--enable-group metrics
--disable-group info

# 出力
--format text       # デフォルト
--format line       # GCC形式(エディタ統合用)
--format json       # プログラム処理用

# 修正
--fix               # 自動修正
--fix-dry-run       # 修正プレビュー

# その他
--config path       # 設定ファイル指定
--debug             # デバッグモード

自動修正可能なルール

以下のルールは --fix で自動修正可能:

  • trailing-whitespace - 行末空白を削除
  • final-newline - ファイル末尾に改行追加
  • consecutive-blank-lines - 過度な空行を削除
  • unused-local-nicknames - 未使用ニックネームを削除
  • unused-imported-symbols - 未使用インポートを削除

ソースコード内での抑制

;; 次のフォームを抑制
#+mallet
(declaim (mallet:suppress-next :if-without-else))
(defun foo () (if x (print "yes")))

;; 領域を抑制
#+mallet
(declaim (mallet:disable :line-length))
;; ... 長い行のコード ...
#+mallet
(declaim (mallet:enable :line-length))

;; スコープ内で抑制
(defun foo ()
  #+mallet
  (declare (mallet:suppress :unused-variables))
  (let ((unused 1))
    (do-something)))

;; 全ルール抑制
#+mallet
(declaim (mallet:suppress-next :all))
(defun generated-code () ...)

終了コード

| コード | 意味 | |--------|------| | 0 | 問題なし | | 1 | 警告あり | | 2 | エラーあり | | 3 | 実行エラー |

推奨ワークフロー

開発中

# デフォルトルールでチェック
mallet src/

# 問題を確認して修正
mallet --fix-dry-run src/
mallet --fix src/

PR前

# 全ルールでチェック
mallet -a src/

# メトリクス確認
mallet --enable-group metrics src/

CI/CD

# 厳格チェック(エラーで失敗)
mallet --format line src/ && echo "Lint passed"
Mallet Linter Guide Skill | Agent Skills