VS11でC++のコード解析を実行すると、多くの誤検出がありました。例えば、私は数ダースのスイッチがあり、それは私のポインタがnullかもしれないと言います。スイッチ内のすべてのケース(少なくとも1つのケース)では、ポインタが設定され、デフォルトではassert(0)と例外をスローするmy関数が呼び出されます。私は、アサーションと例外がメソッドにあるので、ポインタがnullであることが不可能であることを認識していないと思います。どのように私はそれをヒントまたは修正するので、このような偽陽性が現れないでしょうか?VS11コード分析のヒント?
0
A
答えて
1
デフォルトのケースで呼び出されたメソッドが何も返さない場合は、デフォルトの場合にポインタに割り当てられる「偽の」null値を返すようにすることができます。
Type* MyClass::methodCalledInDefaultCase()
{
pointer = 0;
assert(0);
throw Exception;
return 0; // Hope this doesn't cause unreachable code warning
}
void MyClass::myMethod()
{
pointer = 0;
switch(whatever)
{
case foo:
...
case bar:
....
default:
pointer = methodCalledInDefaultCase();
break;
}
}
希望します。
2
スイッチで_Analysis_assume_(FALSE)
を使用しようとすると、到達不能なコードがコンパイラに通知されます。
_Analysis_noreturn_
でスローして返さない関数をデコレートすることもできます。
関連する問題
- 1. XMLコード分析
- 2. SQLコード分析
- 3. コード分析は、VS2010
- 4. Javaの静的コード分析
- 5. コード分析 - CA1704:Microsoft.Naming::「Psの」
- 6. 構文解析のヒント
- 7. メインマシンのVS11ベータ?
- 8. ヒントが必要な分野についてのヒントを「削除」のコードのどの部分
- 9. 分析FxCopの/コード分析の警告CA1506:AvoidExcessiveClassCoupling
- 10. c#フルスクリーンログインアプリケーションのヒント/コード
- 11. コード分析は二回
- 12. コード分析CA1063火災
- 13. 二分探索のヒント?
- 14. C#user control crashing VS11
- 15. 可能とNullReferenceException ReSharperのコード分析C#
- 16. VS11アプリケーションの閉じるボタン
- 17. Visual Studioコード分析対StyleCop + FxCop
- 18. 無効にコード分析は、2012年
- 19. Pyparsing:SQLヒントを解析する方法
- 20. WSO2分析対IS分析
- 21. Eclipse Ganymedeヒント、ヒント、ヒント、ヒント、ベストプラクティス
- 22. jQueryコードの構成(その他のヒント)
- 23. NetBeans HTMLコードのヒント/属性の補完
- 24. CSSコードのヒントを示すEclipseのバージョン
- 25. Visual Studioコード - JavaScriptファイルのヒントのタイプ
- 26. flinkコード、特にスケジューリング部分を理解して分析する
- 27. カスタムjqueryコードのヒントを改善する
- 28. VS2008コード分析からMFCコードを除外する方法
- 29. Xcodeの分析は、私はXcodeのと私のコードを解析するとき
- 30. DB2 SQLのヒント/ヒント
ああ。これはうまくいくと思いますが、fakeptr()テンプレートを作成して、それを欺くためのポインタを返すようにしても良いでしょう(偽ではあるが便利なauto_castに似ています) –