プログラムでの1つのエラーのコスト、またはPVS-StudioとCppCatで発生するエラー

PVS-StudiuoおよびCppCatのバグを発見 記事を読んだ後に常に私たちに尋ねられる質問のリストには、「アナライザーのコードを自分でチェックしますか?」という質問があります。 答えは、インクリメンタル分析モードを使用して書き込み中に常にコードをチェックすることです(コンパイル直後にファイルをチェックします)。 また、すべてのコードの夜間チェックも開始されます。 この点に関して、残念ながら(皮肉なことに)ソフトウェア製品のエラーに関する記事を書くことはできません。



しかし、今日はそれが私たちの過ちの1つであり、それがどれだけ費用がかかるかについての記事です。 興味がありますか?







私の今日の話は直接会うので、最初の「クレジット」: 2月21日金曜日のある日、「コメントの結果:PVS-Studioを使用してFirebirdをチェックする 」という記事を公開しました。



CppCatはあなたが必要とするものです! 彼については別の投稿をする必要があります。 私は経営陣に頼みます、お茶は安価です:)



笑顔で、同僚のアンドレイは、すでに3つの記事がCppCatに関するものだと答えました。 確かに、同僚は私たちの新製品について誰も知らないという事実にすぐに追いつきました。 モスクワ時間16時16分でした...



すでに16:21に私のCppCatメールには、ミハイルからのウィッシュリスト付きの手紙がありました。 Michaelは、現在のようにCppCatエラーメッセージを別のウィンドウではなく、標準のVisual Studioエラーウィンドウに表示することを望んでいました。 私の視点、CppCatの「製品キーパー」から、この願いは実用的ではないようでした。メールとVisual Studioのメッセージを混同しないように特別に設計された別のウィンドウがあることをメールで説明しようとしました。 ウィンドウを特殊化できるなど、非常に便利です。 しかし、マイケルは単純な議論を引用して「あきらめなかった」。



「しかし、ファイルを再コンパイルした後、どのようにエラーを見ることができますか?」 私は彼らがすぐに窓の外に出されたことを望みます...



しかし、まさにこの目的のために、「キラー機能」のインクリメンタル分析があります! ファイルを再コンパイルすると、コードアナライザーが自動的に起動します。 実際のエラーが見つかった場合にのみ、トレイ通知が発行され、アナライザーウィンドウのタイトルバーが変更されます。 新しいエラーが見つかったことを示すフレーズがウィンドウに表示されます。 インクリメンタル分析モードは、メニューでオン/オフを切り替えることができます。



「ええ、はい」とミハイルは答えました。「ダニがいます。インクリメンタル分析」。 しかし、エラーがあるかどうかはどうすればわかりますか?



スクリーンショットを含む5文字の後に、すべてが正しくセットアップされたにもかかわらず、トレイで通知が発行されず、ウィンドウのテキストも変更されないことが明らかになりました。 そして時間は金曜日の夕方の6時間目でした...



「(前日から)長い間チェッカーを受け取らなかった!」という考えで、マイケルにAMMYY Adminでリモートアクセス経由でコンピューターを使用するように依頼しました。 私のプログラムにつまずいたとき、プログラムは機能しているように見えますが、新しいエラーの通知は本当にないことに気付きました。 夕方の6時近くだったので、Visual Studioへの統合を担当する同僚のPavelに行きました。 彼は、ユーザーのコンピューターで私が何をしていたか、通知が機能していないことを彼に示しました。



30秒後、ポールは言った:



-Eugene ...「Rebuild All」コマンドでは、インクリメンタル分析を特に開始しないことを忘れましたか。 これは意識的に行われ、すべてが正しいです。 一般に、自分の製品をより頻繁に見る必要があります。 そして、私はすでにすべてを忘れていました。 郵便で手紙に答えて、ビジネスに関する記事を書くためだけに...



顔を赤らめて、私はチェックに行きました...しかし、1つのファイルの再アセンブリ中、または複数のファイルの再アセンブリ中に通知はありませんでした。 別のプロジェクトで試してみました-結果は同じです。 動作しません。 さらに、ツールのキラー機能である非常に重要な機能は機能しません。 これをすべてユーザーのリモートマシンで試したことを思い出させてください。 私は再びポールに行きましたが、それはほぼ6でした。 そして、ユーザーは家に帰りたくて、Pavel ...おそらくこの関係で、なぜ一緒に動かないのか理解できませんでした。 月曜日にデバッグログを含むバージョンを発行することに決めたので、帰宅しました。



週末ずっとこの問題について考えました。 当社の製品に責任があるのか​​? もしそうなら、いつこの問題がコードに現れるのでしょうか? また、非常に重要なものが正常に機能しなかったため、製品を購入しなかった人が何人もいました。



この悲しいメモで月曜日に来ました。 ユーザーにデバッグログを含む特別なバージョンを提供しました。 彼は私たちにそれらを送りました。 残念ながら、ログは明確ではありませんでした。 より詳細なログを作成し、再生手順をできる限り詳細に説明しました...助けにはなりませんでした。 ログによると、コードは機能しませんでしたが、機能しなかったように見えました。



月曜日と火曜日に、最も詳細なデバッグログを含む複数のバージョンをミハイルに提供しました。 しかし、彼らは何が起こっているのか理解できませんでした。 新しいエラーの通知はまったくありませんでした。 彼と。 そして、私たちは常にそれを持っていました。



火曜日の半ば、ポールは私に電話をかけました。



-ユージン、あなたは信じられないだろう...しかし、私はCppCatで見つかったエラーに関する通知を受け取りません!



デバッグログは助けになったと思いますか? いいえ、PavelはVisual Studio内のCppCatウィンドウの自動非表示ボタンを誤ってクリックしました。 また、マウスを離すと、ウィンドウが自動的に非表示になり始めました。 どの開発者も自動非表示ボタンを使用していないため、このモードでは通知が実際に機能しないと考えることさえできませんでした!



つまり、自動非表示がオフになっている場合(通常モード)、新しいエラーの通知があり、自動非表示がオンになっている場合、新しいエラーの通知はありません。



ユーザーMichaelに、ケースが本当に自動非表示になっているかどうかを確認するように依頼しました。 彼はそのことを確認した。



その後、間違いを修正することはすでに技術的な問題でした。 プラグインコードが特定のウィンドウスタイルを正しく処理しなかったことが判明しました。 プログラマーのために、Pavelに問題とその解決策を説明するように依頼しましたが、Visual Studioのプラグインの開発者のみが理解できるため、ここではこのテキストを提供しません。



そのため、火曜日の午後に間違いを繰り返すことができました。 水曜日に、修正されたベータ版がミハイルに発行されました。



Pavelがパッチを作成している間、私はミハイルとCppCatおよびPVS-Studio製品のライセンスポリシーについて話しました。 ミハイルはCppCatに会ったときに間違いを犯しましたが、その後のコミュニケーションの中で、PVS-Studioが彼のチームにとって役立つ可能性があることがわかりました。



私たちが何をしているかをよく知らない読者の皆さんに思い出させてください。 250ドルで個人の開発者向けに独自のCppCatソフトウェア製品を開発、販売促進、販売しています。PVS-Studioは、最大9人のチームの最低ライセンス料が5000ユーロ強です。



そのため、ライセンスの問題について話し合うために、ミハイルは経営陣に手紙を送り、火曜日の夕方に上司のPVS-Studioのライセンスの問題について話し合いました。 私たちはすべてについて非常に迅速に話し合い、CppCatではなくPVS-Studioが必要であるという結論に達しました。



しかし、その間違いはどうですか? 水曜日に、Michaelに修正ベータ版を提供し、すべてが機能していることを確認しました。 水曜日に、上司のミハイルにPVS-Studioに支払う請求書を送りました。 木曜日に、私たちのアカウントのライセンスのお金を見ました。 そして彼は、この物語を説明するのは良いことだと決めました。突然、誰かに興味深いと思われるでしょう。



そのため、製品の1つのエラーを250ドルで修正すると、他の製品をまったく別のお金で販売できました。 これらはすべて1週間です。今日、2月28日金曜日に、あなたはすでにこの物語に関する記事を読んでいるからです。



このすべてを書いた理由を尋ねると、私の答えは非常に簡単です。 私たちのチームが自分の間違いをすぐに修正でき、顧客がそれを高く評価していることを誇りに思います。



PSエラーの診断を手伝ってくれたユーザーMikhailに感謝します。この話がなかったら起こりませんでした。 私たちのソフトウェアクライアントは世界で最高のユーザーです!



更新1:何らかの理由で、私はコメントで、割引を与える必要があるという事実について書いています。 もちろん、割引が認められましたが、他にどんな選択肢がありますか? :-)



更新2:マイケルは以下のコメントで指摘しました。 開発者がバグをキャッチできるように、カルマに彼をプラスしてください:-)。

残念ながら、CppCatプロジェクトの開発やサポートは終了しています。 理由についてはこちらをご覧ください



All Articles