Pythonコードの "条件/決定カバレッジ"の割合を計算するツール/ライブラリはありますか?私はカバレッジを見つけましたが、 "ステートメントのカバレッジ"のパーセントしか計算しません。Pythonの条件カバレッジ
答えて
Coverage.py now includes branch coverage。
不思議なことに:実行前にコードが変更されていません。トレース機能は、実行中のどの行に続くかを追跡し、コンパイルされたバイトコードの静的解析とその情報を比較して、実行されない可能性を見つける。
cyclomatic complexity (Wikipedia)をお探しですか?これは、基本的に、コードを通るパスの数を計算します。例えば、PyMetricsやthis oneのように、Pythonコードのために計算するプロジェクトがいくつかあります。 Googleは確かにより多くをもたらすでしょう。
しかし、私はカバレッジを示す単体テストとのさらなる統合についてはわかりません。
私はPython用のブランチカバレッジツールについては知らないが、私はそれを書くことを考えている。私の考えは、ASTから始まり、各分岐点に追加の計測器を挿入することでした。それは可能ですが、いくつかのトリッキーなケースがあります。
例えば、このため
raise SomeException(x)
支店のカバレッジはSomeException(x)が完全にインスタンス化された、独自の例外を発生させなかったことを確認する必要があります。
assert x, "Oh No!: %r" % (x, y)
これは、アサーションステートメントの右側のテキストが完全に評価されていることを確認する必要があります。
return args.name or os.getenv("NAME") or die("no name present")
最初の2つの用語のそれぞれは、偽/偽のパスをチェックする必要がありますが、最後のものはチェックしないでください。実際には、最後は戻ってこないかもしれません。
気になるケースがたくさんありました。私は好奇心の他にそれほど緊急の必要がないため、どこにも行かなかった。私は、特定の警告を抑えるために何らかの方法が必要な、多くの誤認があるかどうかも疑問に思っていました。
このルートを試したい場合は、Python 2.6または3.0から始めます。これらのリリースでは、ASTモジュールが文書化されており、コードまたは.pycファイルを生成する前に独自のASTノードを作成できます。
"または" die "の例は読んで楽しく、書くのは楽しいかもしれません;) – myroslav
私はPythonに切り替える前にPerlのプログラマーでした。それはPerl-ismだ。 Perlは決して退屈な言語として知られていませんでした。 –
同じcoverage managerのメンテナーは、get coverage information at the bytecode levelへの方法について議論している記事を持っています。この方法はちょっとしたことです。それは、調整された行番号の.pycファイルを再組み立てすることです。しかし、それはあなたが求めることができる範囲で、カバレッジ測定の細分性を提供します。
自分で使ったことはありませんが、カバレッジ解析をmutation testingに置き換えたい場合は、「pester」と呼ばれる突然変異テスターについて聞いたことがあります。
私はグーグルでやっている間に、a list of python testing toolsにもいくつかのコードカバレッジツールを紹介しました。
ASTを解析して修正するのが正解、IMHOです。あなたが何をする必要があるかの詳細については、この論文 を参照してください: 「任意の言語のための支店カバレッジ容易に作った」
http://www.semanticdesigns.com/Company/Publications/TestCoverage.pdf
"楽器" 条件カバレッジ実装のように見えます:
Link about coverage.py and instrumental
は誰もがそれをしようとしているの?それは小さなバージョン番号を持っています。私は信頼できるものが必要です。
- 1. のPython:条件
- 2. Pythonの条件
- 3. 条件 - Pythonの
- 4. PythonのIF条件
- 5. PythonのElif条件
- 6. Pythonの:バイナリ条件
- 7. Pythonは:カバレッジ
- 8. Pythonのカバレッジとポストマン
- 9. Pythonの条件付きログ
- 10. 条件付きのPythonループ
- 11. Pythonのパンダ:条件値が
- 12. Sqlite3データベースPythonの条件文
- 13. のPythonなしと条件
- 14. Pythonのデータ型条件
- 15. Pythonコンソールのエラー条件文
- 16. Pythonの条件がre.sub
- 17. I-1の条件はPython
- 18. 条件付きのPythonブレークサイクル
- 19. 条件付きインポートノートブックのpython
- 20. Python条件変数設定
- 21. または条件Python
- 22. Bokeh Python条件付きCheckboxGroup
- 23. 条件チェックワークシート範囲python
- 24. 条件付きループ:Pandas Python
- 25. Pythonで条件付き条件を使用する
- 26. 条件内の条件
- 27. Pythonのtkinterの入力ボックスの条件
- 28. Pythonのかっこの条件式
- 29. Swift 3でのPythonスタイルの条件式
- 30. Pythonの複数の初期条件
>サイクロマティックな複雑さ(Wikipedia)をお探しですか? いいえ、興味深い情報をありがとう。 >しかし、私はカバレッジを示す単体テストとのさらなる統合についてはわかりません。 私も;) –
循環的複雑さは基本的に条件カバレッジと無関係です。 –