2016-07-13 28 views
2

私は比較的大きなPythonプロジェクトを手がけています。私たちは、自動化されたテストと配備プロセスの一環としてサイクロマティックな複雑さのツールを持っていません。Pythonの循環的複雑度測定基準

Pythonでサイクロマティックな複雑さのツールはどれくらい重要ですか?あなたやあなたのプロジェクトはそれらを使用して効果的であると感じていますか?誰かが持っていれば素敵な前後のストーリーが欲しいので、私たちは答えの中から主観を少し取り除くことができます(つまり、私たちがサイクロプス・ツールを持っていないうちに、起こった、悪いことBが起こった、等)。このタイプの質問には、他にも多くの一般的な回答がありますが、特にPythonプロジェクトでは見つけられませんでした。

私は最終的に、それを私たちのプロセスに追加する価値があるかどうか、そして大規模なPythonプロジェクトにはどのようなメトリックとツール/ライブラリが最適かを判断しようとしています。私たちの主な目標の1つは長期的なメンテナンスです。

答えて

4

テストオートメーションに関連するプロジェクトの1つでRADONツールを使用しました。

RADON

は、新しい機能や要件に応じて、我々はそのプロジェクトにコードを追加/ /更新を修正/削除する必要があります。また、ほぼ4〜5人がこれに取り組んでいました。したがって、レビュープロセスの一環として、RADONツールを識別し、使用しました。なぜなら、コードを管理し読みやすくするためです。

RADONツールの出力に依存して、コードを再作成し、さらにメソッドを追加し、ループを修正しました。

これがあなたにとって有用かどうかお知らせください。

+1

私はラドン好きになった。これを自動構築プロセスに含めることは難しいが、その努力は価値がある。 – iankit

3

Pythonはサイクロマティックな複雑さに関しては特別ではありません。 CCは、分岐ロジックがコードの塊にどのくらいあるかを測定します。

経験によれば、分岐が「高」の場合、分岐がより低いコードよりも、そのコードを理解して確実に変更することが難しくなります。

メトリックでは、通常は重要な値ではありません。それはあなたの組織が経験する相対的な価値です。さまざまなメトリック(CCは1つ)を測定し、そのメトリックとコード内で見つかったバグとを関連付けるカーブの膝を探します。膝がどこにあるかを知ったら、複雑さが膝の下にあるモジュールを書くようコーダーに頼んでください。これは長期的なメンテナンスへの接続です。

測定していないものは、制御できません。

+0

Pythonで特定のツールを使用していますか?ラドンはいいですか? シクロクロプメトリックのしきい値をどのように把握しましたか? JIRAの問題を追跡するだけで、すべてのリリース/スプリントの最後に戻って、バグフィックス/フィックスアップしたものを手動で把握しましたか? – mwm314

+0

CCがあまり意味を持たない、珍しいプログラミングDSLを使用してメトリクスツールをビルドします。 (私たちは実際には、より良い内部DSLを構築することによって得られる生産性に関心があります)。メトリックを理解しようとするほとんどの人は、通常、モジュールのメトリックを計算するために使用されるバージョン管理システム(ソースコードなど)とバグトラッキング(モジュールに追跡されるエラー)の情報を複数のソースからの情報を組み合わせます。トレンドを追跡するために、このデータ収集をすべて定期的に実行します。 (メトリクスツールについては、私のバイオを参照し、自分のサイトへのリンクをたどります)。 –