WTF?

PVS-Studio、WTF?

認知的不協和音は私を去りません。 フォーラムでは、非常に信頼性の高いクラスを書くことについての崇高なアイデアについて議論しています。 主よ、これらの科学技術の成果はどこにありますか? バカなエラーが表示されるのはなぜですか? たぶん私に何か問題がありますか?







いいえ、実際、素晴らしいプロジェクトがあります。 例は、 ALGLIBライブラリです。 これは、コードの点で非常に興味深いライブラリです。 Pascalで記述され、C ++、C#に変換されます。 他のさまざまな利点の中でも、このアプローチを使用すると、同じプログラムが異なる言語のコンパイラによってコンパイルされるため、多くの異なるエラーをキャッチできます。 ただし、これは別の話です。 おそらく、どういうわけか、このライブラリの作成者と共同メモを作成します。



こうした快い例外は、おそらく、不協和音をさらに増大させます。 私の気持ちを想像してください。 数値解析の複雑なパッケージを使用しましたが、エラーは見つかりませんでした。 コードの品質に満足しています。 PVS-Studioがそのような人を売れないのは少し悲しいです。 まあ。 OpenCOLLADAプロジェクトを取り上げます。 確認します。 WTF? 他の言葉が見つかりません。 これらのデザイナーはどうですか?

struct short2 { short values[2]; short2(short s1, short s2) { values[0] = s1; values[2] = s2; } .... }; struct double2 { double values[2]; double2( double d1, double d2) { values[0]=d1; values[0]=d2; } .... }
      
      





最初のコンストラクターでは、配列が見つかりませんでした。 2番目に、彼らは行をコピーし、インデックスを変更するのを忘れました。



ごめんなさい、私は写真に抵抗することはできません。 彼女は私の感情を正確に伝えます。



WTF



「配信」およびその他のデザイナー。 たとえば、これは素晴らしいです:

 struct ParserString : public UnionString { ParserString() { UnionString::str = 0; UnionString::length = 0; } ParserString(const int& val) { ParserString(); } };
      
      





別のコンストラクターを呼び出す代わりに、一時オブジェクトが作成され、すぐに破棄されます。 また、クラスメンバーは初期化されません。 詳細



主よ、袖をまくり上げてC ++ 11、ラムダ、Boost.Asio、shared_ptr、constexpr、LINQについての記事を書いている人々はどこにいますか。 コードに表示される理由:

 struct ObjectGroups{ componentList objectGrpCompList; int objectGroupId; short objectGrpColor; void write(FILE* file) const; }* objectGroups; void write(FILE* file) const { size_t size = sizeof(objectGroups)/sizeof(ObjectGroups); for(size_t i=0; i<size; ++i) { objectGroups[i].write(file); if(i+1<size) fprintf(file," "); } }
      
      





ポインターのサイズを構造体のサイズで割って0を取得しました。ここで何をしたいのですか? WTF?



ただし、ファイルに何をどのように書き込みたいかさえ明確な場合、これは簡単ではありません。

 void write(FILE* file) const { fprintf(file,"%i %i %i %i ", sDivisionCount, tDivisionCount, uDivisionCount, pointCount); size_t size = pointCount*3; for(size_t i; i<size; ++i) { fprintf(file, "%f", points[i]); if(i+1<size) fprintf(file, " "); } }
      
      





バグに気付いていない場合は、お知らせします。 変数 'i'は初期化されません:for(size_t i; i <size; ++ i)。



これをすべてあなたと共有してすみません。 私にとっては簡単です。 同時に、これらのエラーはPVS-Studio静的コードアナライザーを使用して検出されたと自然に言います。 これらの場所と、このテキストファイルにここに投稿した他のいくつかの面白いエラー。 そしていつものように、このプロジェクトをより徹底的にチェックしたい人がいるなら、私は鍵を共有する準備ができています。



幸運と絶望的なコード!



All Articles