VB.NET サンプル ソース解析レポート

  1. ソースコード

1.1 規模

指標 App (実測) Doc (実測) TOTAL 一般指標 (VB.NET業務系) 評価
LoC 128,420 行 980 行 129,400 行 小=0〜5,000 / 中=5,001〜20,000 / 大=20,001 以上 : 中規模の業務系目安を超える
ソースファイル数 1,024 本 12 本 1,036 本 小=0〜50 / 中=51〜200 / 大=201 以上 : プロジェクト数が多い
.vb ファイル数 612 本 0 本 612 本 小=0〜200 / 中=201〜600 / 大=601 以上 (一般目安) : VB 画面/ロジック中心
Windowsフォーム数 (.resx) 168 本 0 本 168 本 小=0〜40 / 中=41〜150 / 大=151 以上 (一般目安) : 画面数が多い
App/Doc 平均ファイルサイズ 5.4 KB / 3.1 KB 3.1 KB 5.3 KB 小=0〜2.5 KB / 中=2.6〜6 KB / 大=6.1 KB 以上 : レビュー可能な範囲

※指標値は業務系 VB.NET の一般的規模目安。サンプル値は営業資料用の仮置きであり、実測値ではない。

モジュール別規模 (App/Doc 区分)

モジュール 区分 総ファイル数 LoC .vb 本数 (行数) .resx 本数 .vbproj 本数 主な役割
APP App 520 68,300 318 (42,800 行) 98 26 受注・請求・在庫の WinForms 画面群
CORE App 210 31,900 168 (21,600 行) 12 10 業務ロジック/ドメイン層
BATCH App 126 14,700 72 (9,300 行) 0 8 夜間バッチ/集計/取込
SHARED App 168 13,520 54 (7,900 行) 58 12 共通 UI/ユーティリティ
doc Doc 12 980 0 0 0 説明資料/設計補助
TOTAL 1,036 129,400 612 168 56

考察

1.2 アーキテクチャ

1.2.1 全体構成図

ドメイン/業務ロジック

クライアント WinForms

APP 画面群

SHARED UI 共通

CORE ロジック

BATCH バッチ

SQL Server

帳票 Crystal Reports

外部連携 CSV/FTP

1.2.2 依存関係

カテゴリ 採用ライブラリ/技術 出現 所見
DB アクセス System.Data.SqlClient / Dapper 8 プロジェクト ADO.NET と軽量 ORM 併用。接続管理の共通化が鍵
UI/帳票 CrystalDecisions.* 3 プロジェクト ランタイム依存あり。配布手順を明文化
JSON Newtonsoft.Json 5 プロジェクト バージョン差分による互換性に注意
暗号 System.Security.Cryptography 2 プロジェクト 古いハッシュの利用有無を確認

1.3 構造解析

1.3.1 複雑度

複雑度帯 (近似 CC) ファイル数 総複雑度スコア 比率 コメント
小 (<=10) 410 1,820 67% 単純な CRUD 画面が中心
中 (11〜25) 140 2,520 23% 条件分岐が多い画面/バッチ
大 (>=26) 62 3,900 10% 複雑な帳票/集計ロジック

1.3.2 コード品質

指標 件数 抽出方法サンプル コメント
未使用変数 82 Dim 宣言後に参照されない変数 リファクタリングで削減可能
Null 参照の可能性 210 CType/DirectCast でガードなし If Is Nothing の共通化が必要
デッドロジック 6 #If False ブロック 仕様確定後に削除推奨
メモリリーク懸念 12 IDisposable 未解放 Using の徹底
スレッド安全性 4 Shared フィールドの非同期アクセス SyncLock 導入
その他 (例外握り潰し) 18 On Error Resume Next ログ付き Try/Catch へ変更

総評: 重大な欠陥は少ないが、型安全性と例外処理の標準化に改善余地がある。

1.3.3 セキュリティリスクの検出

リスク 件数 抽出例 コメント
SQL インジェクション懸念 24 文字列連結で SQL を構築 パラメータ化を徹底
ハードコードされた秘密情報 3 app.config の固定 API キー 秘匿情報の外出しが必要
不適切な入力検証 41 TextBox.Text を未検証で利用 バリデーション層を追加
脆弱な暗号方式 2 MD5 ハッシュ利用 SHA-256 へ移行
その他 (平文通信) 5 http:// 利用 TLS へ切替

総評: 重大なインシデント要因は限定的だが、SQL と秘匿情報の扱いは優先改善領域。

1.3.4 非推奨 API や非推奨メソッドの検出

API/コンポーネント 出現 影響と提案
Microsoft.VisualBasic.Compatibility.* 6 プロジェクト .NET 5+ では非推奨。標準 API へ置換
Oracle.DataAccess (ODP.NET unmanaged) 0 該当なし
PowerPacks 2 プロジェクト 代替コントロールへ移行推奨

1.3.5 コード重複度

1.3.6 コーディング規約違反

検出項目 件数 代表ファイル コメント
Option Strict Off 38 CORE\Common\ModuleSettings.vb On を標準化
On Error Resume Next 18 APP\Order\frmOrderEntry.vb 例外処理の統一
命名規約逸脱 27 BATCH\Job\Job_01.vb 命名規則の統一

最も逸脱が多いのは APP 配下の画面系で、テンプレートの見直しが有効。

1.3.7 コメント率

  1. テストコード

2.1 テストコード充足率

複雑度帯 対象ファイル数 推定必要テストケース (C0/C1=100% 前提) 既存テストコード数 充足率
小 (<=10) 410 1,820 120 6.6%
中 (11〜25) 140 2,520 48 1.9%
大 (>=26) 62 3,900 6 0.2%

備考

  1. ドキュメント