dart-long-lines について
Dart のコードやドキュメントを 80 文字以内の行に整えるスキルです。先にフォーマッターを実行し、空白やレイアウトが意味を持つ箇所を壊さないための指針も示します。
主な機能
- 01dart analyze または正規表現で長い行を検出
- 02手作業で折り返す前に dart format を実行
- 03コメントやドキュメントを単語単位で改行
- 04隣接する文字列リテラルで長い文字列を分割
- 05URL、正規表現、整形済みレイアウトを維持
活用シーン
- 01lines_longer_than_80_chars lint の修正
- 02Dart の変更に含まれる長いコメントの確認
- 03長い文字列リテラルの安全なリファクタリング
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ kevmoo/ dash_skills --skill dart-long-linesインストール後、Claude Code で/dart-long-linesを入力して読み込まれたか確認します。
同梱ファイルevals/evals.json
詳細
Dart の長い行
1. このスキルを使用する場面
次の場合にこのスキルを使用します。
- 80 桁の制限を超える可能性がある Dart コードを書くとき。
lines_longer_than_80_charslint に準拠するためにコードをリファクタリングするとき。 参考:https://dart.dev/tools/linter-rules/lines_longer_than_80_chars
使用しない場面(適用を控えるためのガイドライン)
次の場合は、行を分割したりコードを変更したりしないでください。
- 分割できない URL と URI:長い HTTP/HTTPS URL、インポート URI、 または分割するとリンクが無効になるファイルパスが含まれている行。
- 複雑な正規表現リテラル:空白や改行を挿入すると
マッチングの意味が変わる長い RegExp パターン(
RegExp(r'...'))。 - ASCII アート、表、または整形済み図表:コメントや文字列内の整形済みテキストブロック、 表の行、ASCII 図表など、折り返すと視覚的な配置が崩れるもの。
- 自動フォーマットの実行前:
dart formatを実行する前に、コードの行を手動で分割しないでください。 コードの折り返しはdart formatに任せてください。 フォーマッターが再折り返ししないコメント、ドキュメント、複数行文字列のみを手動で折り返します。
検出
制限を超える行を見つける方法:
自動解析
長い行を見つける最も信頼性の高い方法は、Dart アナライザーを使用することです。
- コマンド:
dart analyze - Lint:
lines_longer_than_80_chars
手動検索
正規表現で長い行を検索する方法:
- 正規表現:
^.{81,}$(81 文字以上の行に一致します)。
2. ガイドライン
先にフォーマットする
長い行を手動で分割する前に、必ず dart format を実行してください。
フォーマッターは、特に生成コードの長い行を自動的に修正し、標準的な Dart のスタイル規則を適用することがよくあります。
コードコメント
長いコードコメント(//)は、行が 80 文字を超えないように、
単語の区切りで適切に分割してください。簡潔な書式を維持し、不要な縦方向の余白は避けてください。
ドキュメントコメント(///)
- コードコメントと同じ行分割規則を適用してください。
[name]や[text](http://example.com)などの Markdown リンクブロックを 複数行に分割しないでください。制限を超える場合は独立した行に配置してください。- ドキュメントコメントは要約文 1 文で始め、その後に空行を入れてから コメントの残りを記述してください。80 桁の制限に収めるため、この最初の文を複数行に分割してもかまいません。
- 未解決の参照や、文として未完了の記述は避けてください。
長い文字列
- 隣接する文字列リテラル(例:
'part 1 ' 'part 2')を使って長い文字列を分割してください。 単語の区切りで分割します。 - 1 行の文字列に改行文字(
\n)が含まれる場合や、print文が連続する場合は、 複数行文字列リテラル(''')への移行を検討してください。
変更後にフォーマットと解析を行う
- 変更後に
dart formatとdart analyzeを実行してください。 - 文字列の分割によって、新たな lint が発生することがあります(例:
二重引用符の文字列を分割した結果、分割後の文字列に一重引用符が含まれなくなり、
prefer_single_quotesが発生する場合)。
3. 例
ドキュメントコメント内のリンク
避ける:
/// This is a long doc comment that contains a link to [a very long
/// URL](http://example.com/very/long/url/that/exceeds/eighty/chars).
推奨:
/// This is a long doc comment that contains a link to [a very long URL][ref].
///
/// [ref]: http://example.com/very/long/url/that/exceeds/eighty/chars
隣接する文字列リテラル
推奨:
final longString = 'This is a very long string that needs to be broken '
'across multiple lines to stay under the limit.';
複数行文字列への移行
避ける:
print('This is line 1\nThis is line 2 that is also quite long\nThis is line 3 which makes the whole thing exceed eighty characters');
推奨:
print('''This is line 1
This is line 2 that is also quite long
This is line 3 which makes the whole thing exceed eighty characters''');
コメント
Markdown 対応