export const ReactMensagens = {
    linkTargetBlank: 'target="_blank" のリンクに rel="noreferrer"/"noopener" がありません。',
    dangerouslySetInnerHTML: 'dangerouslySetInnerHTML が使用されています。必要性を確認してください。',
    imgWithoutAlt: '画像に alt 属性がありません(アクセシビリティ)。',
    httpFetch: 'TLSなしのHTTP呼び出しが検出されました。HTTPSを優先してください。',
    hardcodedCredential: 'ハードコードされた認証情報の可能性があります。環境変数を使用してください。',
    locationHrefRedirect: 'location.href への直接代入です。オープンリダイレクトを防ぐため送信元を検証してください。',
    listItemNoKey: 'リストアイテム(map)に key 属性がありません。',
    indexAsKey: 'インデックスを key として使用しています(並べ替えの問題を引き起こす可能性があります)。',
    inlineHandlerJsx: 'JSXにインラインハンドラーが検出されました。安定した関数(useCallback)を優先するか、レンダ―外に抽出してください。',
    deprecatedLifecycleMethod: (name) => `非推奨のライフサイクルメソッド: ${name}。componentDidMount、componentDidUpdate、またはフックを使用してください。`,
    complexInlineStyles: '複雑なインラインスタイルが検出されました。パフォーマンスと整理のため、CSSモジュールまたはstyled-componentsの使用を検討してください。'
};
export const ReactHooksMensagens = {
    useEffectNoDeps: 'useEffect に依存配列がありません(ループを避けるため依存関係を確認してください)。',
    memoCallbackNoDeps: 'フックに依存配列がありません(useMemo/useCallback)。',
    hookInConditional: '条件分岐内でフックが宣言されています(フックのルールに違反)。'
};
export const TailwindMensagens = {
    conflictingClasses: (key, tokens) => `${key} の競合の可能性あり(${tokens.slice(0, 4).join(', ')})。重複を確認してください。`,
    repeatedClass: (token) => `重複したクラスが検出されました(${token})。冗長性を排除することを検討してください。`,
    importantUsage: (token) => `!(important)の使用が検出されました(${token})。important の代わりにユーティリティクラスまたはスコープの強化を優先してください。`,
    variantConflict: (prop, variants) => `${prop} のバリアント競合の可能性あり(バリアント: ${variants.slice(0, 6).join(', ')})。順序/スコープを確認してください。`,
    dangerousArbitraryValue: (token) => `潜在的に危険な url を含む任意の値(${token})。javascript:/data:text/html は避けてください。`,
    arbitraryValue: (token) => `任意の値を含むクラス(${token})。デザインと一致しているか確認してください。`
};
export const CssMensagens = {
    duplicatePropertySame: (prop) => `同一値の重複プロパティ(${prop}): エラーが検出されました。`,
    duplicatePropertyDifferent: (prop, prev, curr) => `異なる値の重複プロパティ(${prop})。エラーの可能性: "${prev}" 対 "${curr}"。`,
    importantUsage: '!important の使用が検出されました。適切な詳細度を優先してください。',
    httpImport: 'HTTPインポートが検出されました。HTTPSまたはローカルバンドルを優先してください。',
    httpUrl: 'url() 内のHTTP経由外部リソース。HTTPSを優先してください。',
    unifySelectors: (selectors, propsCount) => `同一のCSSルール(${propsCount}個のプロパティ)がセレクター(${selectors.slice(0, 6).join(', ')})にあります。ユーティリティクラスまたは共有セレクターへの統合・一元化を検討してください。`,
    idSelectorPreferClass: (selector) => `IDセレクター(${selector})が検出されました。再利用性と一貫性のため、可能な限りクラスを優先してください。`,
    invalidProperty: (prop) => `無効または不明なCSSプロパティ(${prop})。綴りまたはブラウザーのサポートを確認してください。`,
    malformedSelector: (selector) => `不正または無効なCSSセレクター(${selector})。レンダリングの問題を引き起こす可能性があります。`,
    emptyRule: '空のCSSルールが検出されました。宣言のないルールは削除してください。',
    vendorPrefixDeprecated: (prop) => `非推奨のベンダープレフィックス(${prop})。サポートされている場合は標準プロパティを使用してください。`,
    cssHackDetected: (hack) => `CSSハックが検出されました(${hack})。最新のアプローチまたはフィーチャークエリを検討してください。`
};
export const HtmlMensagens = {
    doctype: '<!DOCTYPE html> が宣言されていません。',
    htmlLang: '<html> 要素に lang 属性がありません(アクセシビリティ)。',
    metaCharset: 'ドキュメントに <meta charset="utf-8"> がありません。',
    viewport: 'レスポンシブ対応の viewport メタがありません。',
    title: 'ドキュメントに <title> が定義されていません。',
    linkTargetBlank: 'target="_blank" のリンクに rel="noreferrer"/"noopener" がありません。',
    linkNoHref: '有効な href またはハンドラーのないリンク(UX)。<button> または role="button" を使用してください。',
    imgWithoutAlt: '画像に alt 属性またはアクセシビリティ設定がありません(WCAG 2.1)。',
    imgWithoutLoading: '画像に loading 属性がありません(パフォーマンス)。loading="lazy" の使用を検討してください。',
    imgWithoutDimensions: '画像に width/height がありません(レイアウトシフト)。CLS を防ぐため寸法を定義してください。',
    formWithoutMethod: 'フォームに method が指定されていません(GET/POST)。',
    formWithoutAction: 'フォームに action または処理用の data-attribute がありません。',
    inputWithoutLabel: '入力フィールドに name、id、または aria-label がありません(アクセシビリティ/ユーザビリティ)。',
    passwordWithoutAutocomplete: 'パスワードフィールドに autocomplete が指定されていません(セキュリティ)。',
    inputWithoutType: '入力フィールドに type が指定されていません(text が想定されますが、明示してください)。',
    inlineHandler: 'インラインハンドラー(on*)が検出されました。外部リスナーまたは JS 付き data-attribute を優先してください。',
    inlineScript: 'インラインスクリプトが検出されました。より良いキャッシングと CSP のため外部ファイルを優先してください。',
    inlineStyle: 'インラインスタイルが検出されました。より良いキャッシングのため外部CSSファイルを優先してください。',
    scriptWithoutDefer: 'スクリプトに defer/async がありません。レンダリングをブロックする可能性があります。defer を検討してください。',
    headingSkipped: (current, expected) => `見出しがスキップされました: h${current} の前に h${expected} がありません(セマンティック構造)。`,
    buttonWithoutText: 'ボタンにテキストまたは aria-label がありません(アクセシビリティ)。',
    tableWithoutCaption: 'テーブルに <caption> または aria-label がありません(アクセシビリティ)。',
    iframeWithoutTitle: 'iframe に title がありません(アクセシビリティ)。',
    largeInlineScript: 'インラインスクリプトが大きすぎます。外部ファイルに移動してください。',
    multipleH1: '複数の <h1> が検出されました。SEO/アクセシビリティのため、1ページに1つだけ使用してください。'
};
export const XmlMensagens = {
    xmlPrologAusente: 'XML に <?xml ...?> 宣言がありません(任意ですが、互換性が向上します)。',
    doctypeDetectado: 'XML に <!DOCTYPE> が含まれています。XXE ベクター(外部エンティティ)に注意してください。',
    doctypeExternoDetectado: 'XML に外部識別子(SYSTEM/PUBLIC)付きの DOCTYPE が含まれています。パーサーが安全でない場合、XXE リスクが高くなります。',
    entidadeDetectada: 'XML に <!ENTITY> が含まれています。展開/XXE のリスクがないか確認してください。',
    entidadeExternaDetectada: 'XML に外部エンティティ(SYSTEM/PUBLIC)が含まれています。パーサーが安全でない場合、XXE リスクが高くなります。',
    entidadeParametroDetectada: 'XML にパラメータエンティティ(<!ENTITY % ...>)が含まれています。XXE/DTD インジェクションに使用される可能性があります。注意して確認してください。',
    xincludeDetectado: 'XML に XInclude(<xi:include>)が含まれています。外部リソースを読み込む可能性があります。送信元とパーサーを検証してください。',
    namespaceUndeclared: (prefix) => `名前空間プレフィックス "${prefix}" が xmlns:${prefix} 宣言なしで使用されています。`,
    invalidXmlStructure: '無効な XML 構造が検出されました(閉じられていないタグ、または不適切なネスト)。',
    encodingMismatch: (declared, detected) => `宣言されたエンコーディング(${declared})が検出されたエンコーディング(${detected})と一致しません。`,
    largeEntityExpansion: '非常に大きな展開を持つエンティティの可能性。Billion Laughs 攻撃のリスク。',
    cdataInAttribute: '属性値に CDATA が検出されました(XML で無効)。'
};
export const FormatadorMensagens = {
    naoFormatado: (parser, detalhes) => {
        const base = `ファイルがフォーマットされていない可能性があります(パーサー: ${parser})。Tutanus フォーマッターで正規化することを検討してください。`;
        if (!detalhes)
            return base;
        return `${base}(${detalhes})`;
    },
    parseErro: (parser, err) => `内部フォーマットの検証に失敗しました(パーサー: ${parser}): ${err}`
};
export const SvgMensagens = {
    naoPareceSvg: '.svg ファイルに有効な <svg> タグが含まれていません。',
    semViewBox: 'SVG に viewBox がありません(レスポンシブ対応に悪影響を与える可能性があります)。',
    scriptInline: 'SVG に <script> が含まれています。セキュリティリスク: 埋め込みスクリプト付き SVG は避けてください。',
    eventoInline: 'SVG にインラインハンドラー(on*)が含まれています。アセットのインラインイベントは避けてください。',
    javascriptUrl: 'SVG の URL/href に javascript: が含まれています。セキュリティリスク。',
    podeOtimizar: (originalBytes, optimizedBytes, mudancas) => `SVG を最適化できます(${originalBytes}B → ${optimizedBytes}B)。変更: ${mudancas.join(', ')}。`
};
export const CssInJsMensagens = {
    detectedStyledComponents: 'styled-components パターンが検出されました(CSS-in-JS)。',
    detectedStyledJsx: 'styled-jsx パターンが検出されました(React の CSS-in-JS)。',
    globalStyles: (fonte) => `グローバルスタイルが検出されました(${fonte})。可能であればローカルスコープを優先してください。`,
    importantUsage: 'CSS-in-JS で !important の使用が検出されました。適切な詳細度を優先してください。',
    httpUrl: 'url() 内のHTTP経由外部リソース。HTTPSを優先してください。',
    bestPracticesDescricao: 'CSS-in-JS の悪い慣行を検出します',
    detectorGlobalStyles: 'グローバルスタイルが検出されました',
    sugestaoEvitarGlobalStyles: 'グローバルスタイルを避けてください - CSS Modules またはスコープ付きスタイルを使用してください',
    importantDetected: 'CSS-in-JS での !important の使用',
    sugestaoEspecificidade: '!important の代わりに詳細度を適切に設定してください',
    httpUrlDetected: 'CSS-in-JS での HTTP URL の使用',
    sugestaoHttps: '外部リソースには HTTPS を使用してください',
    mixedStyling: 'className とインラインスタイルの混在',
    sugestaoMixedStyling: 'CSS-in-JS かインラインスタイルのいずれかに統一してください'
};
export const CssInJsPontuacaoMensagens = {
    notDetected: 'CSS-in-JS が検出されませんでした',
    detected: 'CSS-in-JS が検出されました',
    noGlobalStyles: 'グローバルスタイルなし',
    globalStylesIssue: 'グローバルスタイルが検出されました',
    noImportant: '!important なし',
    importantUsageCount: (count) => `${count} 箇所で !important を使用`,
    noHttpUrls: 'HTTP URL なし',
    httpUrlCount: (count) => `${count} 個の HTTP URL`,
    consistentStyling: 'スタイリング方法が統一されている',
    mixedStylingIssue: 'className とインラインスタイルの混在',
    themeUsage: 'テーマシステムを使用',
    noThemeSystem: 'テーマシステムなし - ThemeProvider の使用を検討してください'
};
export const CssInJsCorrecaoMensagens = {
    description: 'CSS-in-JS 問題の自動修正',
    correctionSuggested: (tipo) => `修正提案: ${tipo}`,
    sugestaoFormat: (original, sugerido, confianca) => `[エラー] ${original}\n[OK] ${sugerido}\n信頼度: ${confianca}%`,
    extractGlobalCss: '// 別のグローバル CSS ファイルに移動することを検討してください'
};
export const PythonMensagens = {
    missingTypeHints: '型ヒントのない関数が検出されました。可読性向上のため型ヒントを追加してください。',
    hardcodedString: (string) => `ハードコードされた文字列が検出されました(${string.slice(0, 30)}...)。定数の使用を検討してください。`,
    httpWithoutVerify: 'verify=True なしでHTTPリクエストが検出されました。SSL証明書を検証してください。',
    sqlInjection: 'SQL インジェクションの可能性が検出されました。プリペアドステートメントを使用してください。',
    broadExcept: '汎用例外(except:)が検出されました。具体的に指定してください。',
    bareRaise: 'コンテキストなしの raise が検出されました。スタックトレースを維持するため、必ず例外を渡してください。',
    passInExcept: 'except ブロック内の pass。適切なエラー処理を実装してください。',
    printInsteadOfLog: 'print() が検出されました。本番環境では logging モジュールを優先してください。',
    evalUsage: 'eval() が検出されました。eval の使用は避けてください - セキュリティ脆弱性。',
    execUsage: 'exec() が検出されました。exec の使用は避けてください - セキュリティ脆弱性。',
    subprocessShellTrue: 'shell=True の subprocess が検出されました。コマンドインジェクションのリスク。引数リストと shell=False を優先してください。',
    pickleUsage: 'pickle load(s) が検出されました。信頼できないデータの逆シリアル化は絶対に行わないでください(RCE)。安全なフォーマット(JSON)を優先してください。',
    yamlUnsafeLoad: '安全な Loader なしで yaml.load が検出されました。yaml.safe_load を優先してください(実行を防止)。',
    globalKeyword: 'global キーワードの使用が検出されました。パラメータとして渡すことを優先してください。',
    mutableDefault: '変更可能なデフォルト値(list/dict)を持つ引数が検出されました。デフォルトとして None を使用してください。',
    listComprehensionOpportunity: 'リスト内包表記にできるループが検出されました。',
    loopingOverDict: '.items() なしで dict を反復処理しています。.items() の使用を検討してください。'
};
export const GoMensagens = {
    uncheckedError: 'エラーを返す可能性のある関数呼び出し後にエラーがチェックされていません。',
    printWithoutFormat: 'fmt.Print* がフォーマット文字列なしで使用されています。fmt.Printf とフォーマットを推奨します。',
    deferInLoop: 'ループ内の defer はリソースリークの原因になります。ループ外に移動してください。',
    hardcodedSecret: 'ハードコードされたシークレットの可能性があります。環境変数を使用してください。',
    unbufferedChanSend: '同じgoroutine内のバッファなしチャネルへの送信 - デッドロックのリスク。',
    magicNumber: 'マジックナンバーが検出されました。名前付き定数に抽出してください。',
    longFunction: '関数が長すぎます。より小さな関数にリファクタリングを検討してください。',
    missingDeferClose: 'リソースが defer で閉じられていません。defer resource.Close() を追加してください。',
    globalVar: 'グローバル変数が検出されました。依存性注入を検討してください。',
    ignoredError: 'エラーが _ で明示的に無視されています。エラーを確認することを検討してください。',
    sqlInjection: 'SQLクエリが文字列連結で構築されています。SQLインジェクションのリスク。パラメータ化クエリを使用してください。',
    commandInjection: '変数補間でコマンドが構築されています。コマンドインジェクションのリスク。',
    pathTraversal: 'ユーザー入力によるファイル操作。パストラバーサルのリスク。パスを検証/サニタイズしてください。',
    namingConvention: (funcName) => `関数 '${funcName}' はGoの命名規則(CamelCase)に従っていません。`,
    longVariableName: (varName) => `変数 '${varName}' は短いスコープの変数には長すぎます。より短い名前を検討してください。`,
    incompleteImportPath: (path) => `インポートパス '${path}' がドットで終わっています。不完全なパスの可能性があります。`,
    goodErrorWrapping: '良い習慣: fmt.Errorf での %w を使ったエラーラッピング'
};
export const RustMensagens = {
    unwrapUsage: '.unwrap() が検出されました。Result/Option のパターンマッチングを推奨します。',
    emptyExpect: '.expect() のメッセージが空です。説明的なメッセージを提供してください。',
    unsafeBlock: 'unsafe ブロックが検出されました。可能な限り unsafe を避けてください。',
    transmuteUsage: 'transmute の使用が検出されました。安全な TryFrom/From 変換を推奨します。',
    noTrimOnInput: 'read_line に trim がありません。値に改行が含まれる可能性があります。',
    vecWithoutCapacity: 'with_capacity なしで作成された Vec への Vec.push()。パフォーマンスのために事前割り当てを行ってください。',
    mutexAcrossAwait: 'Mutex ロックが .await 中に保持されています。デッドロックのリスク。',
    printlnInLib: 'ライブラリコード内の println!。ロギングフレームワークを使用してください。',
    magicNumber: 'マジックナンバーが検出されました。定数に抽出してください。',
    hardcodedSecret: 'ハードコードされたシークレットの可能性があります。環境変数を使用してください。',
    longFunction: '関数が長すぎます。より小さな関数にリファクタリングを検討してください。',
    genericExpect: '.expect() のメッセージが一般的です。値が Some/Ok であるべき理由を説明してください。',
    unwrapInResult: 'Result を返す関数内の .unwrap()。代わりに ? 演算子を使用してください。',
    stubMacro: (name) => `${name}() はスタブとしてのみ使用すべきです。本番コードでは削除してください。`,
    todoFound: 'todo!() マクロが見つかりました。リリース前に実装してください。',
    rawPointer: 'unsafe ブロック内で生ポインタが使用されています。安全性の不変条件を文書化してください。',
    reprC: '#[repr(C)] が検出されました。FFI 互換性のために必要かを確認してください。',
    missingDoc: (fnName) => `公開関数 '${fnName}' にドキュメンテーションコメント (///) がありません。`,
    namingConvention: (constName) => `定数 '${constName}' は SCREAMING_CASE 規約に従うべきです。`,
    redundantReturn: '関数末尾の return は冗長です。Rust は暗黙の戻り値 (最後の式) を使用します。',
    wildcardImport: (importPath) => `ワイルドカードインポート '${importPath}' は名前空間を汚染する可能性があります。明示的なインポートを推奨します。`
};
export const JavaMensagens = {
    sysoutDetected: 'System.out/err.print が検出されました。ロギングフレームワーク(SLF4J, Logback)を使用してください。',
    printStackTrace: 'e.printStackTrace() が検出されました。ロガーを使用して例外を記録してください。',
    hardcodedSecret: 'ハードコードされたシークレットの可能性があります。環境変数を使用してください。',
    sqlConcatenation: 'SQLの文字列連結が検出されました。PreparedStatement を使用してください。',
    nullAssignment: 'null 代入が検出されました。Optional を検討してください。',
    emptyCatch: '空の catch ブロックが検出されました。少なくともエラーをログに記録してください。',
    genericCatch: '汎用例外(Exception/Throwable)のキャッチ。具体的に指定してください。',
    mutableStatic: '可変の static フィールドが検出されました。final またはカプセル化を推奨します。',
    longMethod: 'メソッドが長すぎます。より小さなメソッドに抽出することを検討してください。',
    lateinitWithoutCheck: 'lateinit var が使用前に ::isInitialized チェックされていません。'
};
export const PhpMensagens = {
    sqlInjection: 'SQLインジェクションの可能性があります。プリペアドステートメント(PDO)を使用してください。',
    evalUsage: 'eval() が検出されました。セキュリティ脆弱性 - 使用を避けてください。',
    assertString: '文字列での assert() が検出されました。コードインジェクションのリスク。',
    unserializeUsage: 'unserialize() が検出されました。信頼できないデータの場合RCEのリスク。',
    extractUsage: 'extract() が検出されました。変数の上書きリスク。',
    urlFetch: 'URL付き file_get_contents が検出されました。URLを検証して制限してください。',
    commandExecution: 'コマンド実行関数が検出されました。コマンドインジェクションのリスク。',
    requestUsage: '$_REQUEST が検出されました。明確さのため $_GET、$_POST、または $_SERVER を推奨します。',
    hardcodedSecret: 'ハードコードされたシークレットの可能性があります。環境変数を使用してください。',
    deprecatedMysql: '非推奨の mysql_* 関数が検出されました。PDO または MySQLi に移行してください。',
    shortOpenTag: '短縮オープンタグ(<?)が検出されました。互換性のため <?php を推奨します。',
    errorSuppression: 'エラー抑制演算子(@)が検出されました。適切にエラー処理を行ってください。',
    longFunction: '関数が長すぎます。リファクタリングを検討してください。',
    debugOutput: 'プロダクションコードで var_dump/print_r/die が検出されました。削除するかロガーを使用してください。',
    camelCaseFunction: 'camelCase の関数名。PHPの慣習として snake_case を検討してください。'
};
export const SeverityNiveis = {
    error: 'エラー',
    warning: '警告',
    info: '情報',
    suggestion: '提案'
};
export const AnalystTipos = {
    react: 'react/ルール',
    reactHooks: 'react-hooks/ルール',
    tailwind: 'tailwindcss/ルール',
    css: 'css/ルール',
    html: 'html/ルール',
    python: 'python/ルール',
    xml: 'xml/ルール',
    formatador: 'フォーマッター/ルール',
    svg: 'svg/ルール',
    cssInJs: 'css-in-js/ルール',
    go: 'go/ルール',
    rust: 'rust/ルール',
    php: 'php/ルール'
};
export const AnalystOrigens = {
    react: 'アナリスト-react',
    reactHooks: 'アナリスト-react-hooks',
    tailwind: 'アナリスト-tailwind',
    css: 'アナリスト-css',
    html: 'アナリスト-html',
    python: 'アナリスト-python',
    xml: 'アナリスト-xml',
    formatador: 'アナリスト-フォーマッター',
    svg: 'アナリスト-svg',
    cssInJs: 'アナリスト-css-in-js',
    go: 'アナリスト-go',
    rust: 'アナリスト-rust',
    php: 'アナリスト-php'
};
//# sourceMappingURL=plugin-messages.js.map