-
-
Notifications
You must be signed in to change notification settings - Fork 3
Closed
smalruby/scratch-vm
#91Description
概要
scratch-vm の lint 実行時に 11 件の警告が発生しています。これらを解消します。
$ docker compose run --rm gui bash -c "cd /app/gui/scratch-vm && npm run lint"警告内容
| ファイル | 行 | 警告 |
|---|---|---|
src/engine/runtime.js |
866, 917, 1017, 1026, 1268, 1369, 1452 | format-message/literal-pattern |
src/extension-support/extension-manager.js |
371, 375 | format-message/literal-pattern |
src/util/maybe-format-message.js |
13 | format-message/literal-pattern, format-message/literal-locale |
原因
format-message ライブラリの ESLint ルールは、パターン(メッセージID)とロケールがリテラル文字列であることを期待しています。これにより静的解析やメッセージの抽出が可能になります。
しかし、maybeFormatMessage 関数は動的なメッセージオブジェクトを処理するために設計されており、変数を formatMessage に渡しています:
// src/util/maybe-format-message.js
const maybeFormatMessage = function (maybeMessage, args, locale) {
if (maybeMessage && maybeMessage.id && maybeMessage.default) {
return formatMessage(maybeMessage, args, locale); // 警告発生
}
return maybeMessage;
};解決案
このケースでは、ESLint のインラインコメントで警告を抑制するのが適切です。
理由
maybeFormatMessageは拡張機能から渡される動的なメッセージオブジェクトを処理するために設計されている- 拡張機能のメッセージはコンパイル時には不明
- これは意図的な設計であり、静的解析の制限
修正内容
1. src/util/maybe-format-message.js (13行目)
const maybeFormatMessage = function (maybeMessage, args, locale) {
if (maybeMessage && maybeMessage.id && maybeMessage.default) {
// eslint-disable-next-line format-message/literal-pattern, format-message/literal-locale
return formatMessage(maybeMessage, args, locale);
}
return maybeMessage;
};2. src/engine/runtime.js (7箇所)
maybeFormatMessage を呼び出す各箇所に以下のコメントを追加:
// eslint-disable-next-line format-message/literal-pattern対象行: 866, 917, 1017, 1026, 1268, 1369, 1452
3. src/extension-support/extension-manager.js (2箇所)
maybeFormatMessage を呼び出す各箇所に以下のコメントを追加:
// eslint-disable-next-line format-message/literal-pattern対象行: 371, 375
完了条件
-
npm run lintで警告が 0 件になること
Metadata
Metadata
Assignees
Labels
No labels