コンパイラは、書式文字列と必要な型とパラメータにアクセスできます。だから私はvarargsの欠落しているパラメータを示すいくつかの方法があるだろうと仮定しています...ケースのサブセットの場合でも。実行時に渡されたvarargsが問題を引き起こす可能性があることを示すために、eclipseまたは別のIDEのためにはいくらかですか?コンパイル時に文句を言うstring.formatを取得する方法
8
A
答えて
10
FindBugsが問題を解決できるかのように見えます。書式文字列に関連する警告カテゴリがいくつかあります。ところで
1
Javaコンパイラには、StringFormatパラメータの意味論的な知識が組み込まれていないため、コンパイル時にこれらをチェックすることはできません。 StringFormatは別のクラスであり、String.formatは別のメソッドであり、指定された書式文字列は他の文字列と同じものです。
しかし、ええ、私はあなたの痛みを感じ、過去のカップルの日にこれらの同じ問題に遭遇しました。彼らがしなければならないことは、パラメータの数について「あまり注意を払わない」ようにして、末尾の%sマーカーを置き換えないようにするだけです。
+0
おそらくコンパイラは言う...真実だが、多分そこにいくつかの静的解析ツールがあるのだろうか? – mafalda
関連する問題
- 1. Javaでコンパイル時にLong.MAX_VALUEの文字列値を取得する方法は?
- 2. コンパイル時にシングルトンオブジェクトのクラスを取得する方法は?
- 3. WHERE句でmysqlクエリのelse文を取得する方法は?
- 4. 解決方法:SwiftのOneSignalに文句を言う言語のコンテンツ
- 5. Valgrindはstring.append(string)に文句を言う。
- 6. Jenkinsがnullの文句を言うM2_HOME
- 7. powershellにstring.formatを文字列配列で使用する方法
- 8. nopCommerce 3.9で言語文化の言語IDを取得する方法は?
- 9. scalaz関数を使用して折りたたみをコンパイルすると、スカラコンパイラが奇妙に文句を言う
- 10. フラッシュでコンパイル時に文字列データをロードする方法は?
- 11. C言語のwhere句の特定の値を取得する
- 12. VSCodeはcreate-react-appの構文に文句を言う
- 13. システムロケール言語で言語/国名を取得する方法
- 14. 'in'でレコードを取得する方法とnull句です
- 15. string.formatの内部で文字列スライシングを使用する方法
- 16. 時間を取得する方法
- 17. Pythonで時刻文字列からutc時刻を取得する方法は?
- 18. QtでコンパイルするOpenGL ES2を取得する方法
- 19. ディレクトリでコンパイルするJavaコードを取得する方法
- 20. Guyrati言語(他の言語)のiosの文字列から単一文字を取得する方法
- 21. String.Formatのは、文句を言わない私は何千人も中にカンマ(例:1234)と、それを印刷しようとするXMLフィールドを持つ
- 22. Cプログラミング - コンパイル時にマシン名、ユーザー名を取得する
- 23. タイプ消去:コンパイル時に値型チェックを取得する
- 24. Cythonでコンパイル時に整数のサイズを取得する
- 25. ブラウザが無効なhtml入力で文句を言うようにする
- 26. 条件付きコンパイル:コンパイル時にパッケージ名を取得してテストする
- 27. nodejs:中古モデルについて文句を言う
- 28. どのようにあなたが文句を言わない
- 29. lapackがlibgcc_s_sjlj-1.dllについて文句を言う
- 30. STL for_each引数リストについて文句を言う
日食向上のためのニースのアイデア、。少なくとも静的なフォーマット文字列と固定サイズのvarargsをチェックできます。 –
ここで私の答えをチェックしてください - http://stackoverflow.com/questions/24769455/java-string-format-compile-time-error-checking-and-safer-alternative-それはまだ進行中のわずかな作業です –