コード監査
リポジトリ全体を毎週スキャン。複雑度のホットスポット、デッドコード、重複、アーキテクチャの問題を特定。ヘルススコアと優先度付きの改善提案をGitHub Issueとして作成。
How it works
静的解析とAIエージェントによる、信頼できる正確なレビュー
Problem
CopilotやClaudeなどのAIツールが、かつてないほど大量のコードを生成しています。開発は加速していますが、コードベースを誰が見守っていますか?
技術的負債は静かに蓄積します。複雑な関数、デッドコード、重複ロジックがPRレビューをすり抜け、少しずつ積み重なっていきます。
PRをレビューするだけでなく、コードベース全体を継続的に監視する。そんな自律的にメンテナンスする仕組みが求められています。
Instruments
Polyscanはプルリクエストを待ちません。スケジュールに従ってコードベース全体を能動的にスキャンし、アーキテクチャの問題を発見し、深刻化する前に報告します。
リポジトリ全体を毎週スキャン。複雑度のホットスポット、デッドコード、重複、アーキテクチャの問題を特定。ヘルススコアと優先度付きの改善提案をGitHub Issueとして作成。
プルリクエストを自動でレビュー。新しいコードの問題をマージ前にキャッチ。週次監査をリアルタイムのフィードバックで補完。
Analyzers
Polyscanは言語ごとの専用静的解析エンジン — Pythonはpyscn、JavaScript/TypeScript・Go・Rust・C++はpolyscan — を使用。ASTを解析してコードを深く理解します。単なるパターンマッチングではありません。複雑度と重複コードは全言語で検出し、デッドコード・依存関係・クラス設計の解析は現在PythonとJavaScript/TypeScriptで利用できます。
01
Pythonの変更されるデフォルト引数や循環インポート、TypeScriptの危険なanyや未使用エクスポート
02
ASTベースの解析で変数スコープと関数呼び出しを正確に追跡
03
「複雑そう」ではなく「複雑度18」。行動につながる数字
Readings
validate_and_process()の循環的複雑度は18です(閾値: 15)。複雑な関数はテストが困難で、バグが発生しやすくなります。
Suggestionvalidate_schema()、validate_constraints()、process_validated()に分割してください。
user.pyの45-62行目と、admin.pyの23-40行目に、ほぼ同じコードがあります(87%一致)。
Suggestion共通の処理をutils/validation.pyに移動してください。同じバグを2箇所で直す必要がなくなります。
Agent
結果を見ながら、次に使うツールを判断
単純なLLMラッパーとは異なり、PolyscanのAIエージェントは考えてから行動します。結果を見て、次に何を調べるべきか判断し、適切なツールを呼び出します。人間のレビュアーと同じです。
“まずは複雑度をチェックしよう”
pyscn complexity ./src→ utils.pyに複雑度18の関数がある
“複雑度が高い。コードを読んでみよう”
read_file("src/utils.py")→ validate_and_process()という関数が80行ある
“似たような処理がありそう。重複をチェック”
pyscn clones ./src→ admin.pyにも同じコードがある(87%一致)
“問題が分かった。提案をまとめよう”
レビューコメントを生成
validate_and_process()は複雑度18で、admin.pyにも同じ処理があります。共通部分をutils/validation.pyに移動しましょう。
AIエージェントは1回の分析で終わりません。結果を見て「次に何を調べるべきか」を考え、必要なツールを呼び出します。
人間のレビュアーと同じように、コードを読みながら問題を深掘りしていきます。
静的解析ツール
Security
セキュリティへの懸念は理解しています。コードがどう扱われるか、正確にお伝えします:
01
コードは当社のオンプレミス環境で動作するローカルLLMによって解析され、外部の生成AI APIには送信されません。
02
私たちはコードを保存しません。レビューが生成されGitHubに投稿されたら、コードは破棄されます。
03
Polyscanは必要な権限のみ要求します:コードの読み取り、PRコメントの書き込み、監査レポート用のIssue作成。
Install
PolyscanをインストールしてPRを作成。最初のレビューで違いを実感してください。
無料でインストール →