ProjectAnalyzer.Core 1.2.6

dotnet add package ProjectAnalyzer.Core --version 1.2.6
                    
NuGet\Install-Package ProjectAnalyzer.Core -Version 1.2.6
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ProjectAnalyzer.Core" Version="1.2.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ProjectAnalyzer.Core" Version="1.2.6" />
                    
Directory.Packages.props
<PackageReference Include="ProjectAnalyzer.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ProjectAnalyzer.Core --version 1.2.6
                    
#r "nuget: ProjectAnalyzer.Core, 1.2.6"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ProjectAnalyzer.Core@1.2.6
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ProjectAnalyzer.Core&version=1.2.6
                    
Install as a Cake Addin
#tool nuget:?package=ProjectAnalyzer.Core&version=1.2.6
                    
Install as a Cake Tool

Project Analyzer

NuGet Version NuGet Downloads

概要

Project Analyzer は、指定されたプロジェクトフォルダまたはGitHubリポジトリの構造と内容を分析し、AI (LLM) のコンテキストとして利用しやすいように、Markdownファイルとして出力する.NET製のコマンドラインツールおよびクラスライブラリです。

主にGithubのリポジトリ自作のプロジェクトフォルダNotebookLMなどのAIツールのソースとして使う際に活用できます。

さらに、ソースコードだけでなくWordやExcel、PowerPointなどのOfficeソフトのファイル読み込みにも対応しており、仕様書や設計データも含めたプロジェクト全体のコンテキストをAIに提供することが可能です。

主な機能

  • 🐙 GitHubリポジトリの直接分析 GitHubのリポジトリURLを指定するだけで、自動的に一時フォルダへクローンして分析を実行できます。手動で git clone する手間を省き、リモートのリポジトリを素早くコンテキスト化できます。
  • 📁 フォルダツリーの生成 プロジェクトのフォルダとファイルの階層構造をツリー形式で 00_ProjectTree.md に出力します。
  • 📄 統合されたコンテキストの生成 プロジェクト内の全ソースファイルの内容を、シンタックスハイライトと折りたたみ機能付きで Markdownファイル (01_ProjectContext.md) に集約して出力します。大規模なプロジェクトの場合は自動的に複数ファイルに分割出力されます。
  • ⚙️ 柔軟な除外設定 .projectanalyzerignore ファイルを使用して、分析から除外したいファイルやフォルダを簡単に指定できます。また、bin obj .git などの一般的なフォルダはデフォルトで除外されます。
  • 💻 柔軟な利用形態 (CLI / DLL) CLIツール(EXEファイル)としてスタンドアロンで実行できるほか、コアロジック(ProjectAnalyzer.Core)をDLLやNuGetパッケージとして自作のプロジェクトに組み込んで利用することも可能です。
  • 🧠 メモリ上での結果取得 (DLL利用時) ファイルへの書き出しを行わず、分析結果のテキストデータをプログラム内で直接受け取ることができます。Markdownのコードブロック記号(```)を省略するオプションも備えており、他のシステムとの連携が容易です。
  • 🛡️ NotebookLM向けのHTML無害化機能 --sanitize-html オプションを指定することで、出力結果に含まれるHTMLタグ(<details>, <div>など)を <details> のような無害な形式(全角)に変換し、AIが誤ってコードを解釈してしまうのを防ぎます。

必要なもの

  • .NET ランタイム または SDK (バージョン 6.0 以降 / 開発やソースコードからの実行にはSDKが必要です)

📷 OCR機能(--enable-ocr)を利用するための事前準備

画像内の文字抽出を行う --enable-ocr オプションを利用する場合、実行するOS環境によってはTesseractエンジンの事前インストールが必要です。

1. OSごとの必須要件

🪟 Windows 環境

  • OS側への追加インストールは不要です。NuGetパッケージに含まれるライブラリで自動的に動作します。

🐧 Linux (Ubuntu / Debian) 環境

  • OCRエンジン本体と日本語データのインストールが必要です。ターミナルで以下のコマンドを実行してください。
    sudo apt-get update
    sudo apt-get install -y tesseract-ocr libtesseract-dev libleptonica-dev tesseract-ocr-jpn
    
    

🍎 macOS 環境

  • Homebrewを使用してTesseract本体と多言語データをインストールしてください。
    brew install tesseract tesseract-lang
    
    
2. 学習済みデータ (tessdata) の配置について

ソースコードからビルド・実行する場合は、実行ディレクトリ(または src/ProjectAnalyzer.Core/)に tessdata フォルダを作成し、以下の学習済みモデルを配置してください。

※Linux/macOS環境でネイティブライブラリの読み込みに失敗した場合は、自動的にOSにインストールされた tesseract コマンドを使用するフォールバック機能が作動します。

⚠️ 制限事項

本ライブラリはOCR処理に Tesseract を使用しており、実行時に物理的なネイティブDLL(x64/ 等)と学習データ(tessdata/)を必要とします。そのため、.NETの 単一ファイル発行 (PublishSingleFile=true) には対応していません。ビルドや発行を行う際は、通常の形式(複数ファイルが出力される形式)でご利用ください。

使い方

1. セットアップ

CLIツールとして使用する場合は、配布されている実行ファイル(ProjectAnalyzer.Cli.exe)をダウンロードするか、ソースコードをローカル環境に準備します。

ご自身のプロジェクトに組み込んで利用する場合は、ProjectAnalyzer.Core をNuGetパッケージ等から追加してください。

2. 除外設定(任意)

分析したくないファイルやフォルダがある場合は、分析対象プロジェクトのルートディレクトリに .projectanalyzerignore ファイルを作成し、除外対象を1行に1つずつ記述します。

  • # で始まる行はコメントとして無視されます。
  • デフォルトで除外される主な項目: bin, obj, .vs, .git, 出力フォルダ, .projectanalyzerignore

.projectanalyzerignore の記述例:

# IDE/Editor specific
.vscode
.idea
.DS_Store

# Dependencies
node_modules
packages

# Build output
dist

3. CLIツールとしての実行

実行環境に合わせて、以下のいずれかの方法でコマンドを実行します。

引数を指定しない場合は、カレントディレクトリが分析対象となり、カレントディレクトリ内の output フォルダに出力されます。

オプション:

  • --no-codeblock: 出力されるMarkdownファイル内のコードブロック記号(```)を省略します。

  • --sanitize-html: NotebookLMなどでコード内のHTMLタグが誤動作するのを防ぐため、<details> などのタグを <details> に置換して出力します。ソースコード内の if (a < b) などは影響を受けません。

  • --remove-indent: 行頭にあるインデント(スペースやタブ)をすべて削除します。インデントによるMarkdownコードブロックの誤解釈を防ぐために利用します(※Pythonなどインデントに意味がある言語の構造が壊れる可能性があるため注意してください)。

  • --per-file: ファイルごとに個別のMarkdownファイルを出力します。

  • --enable-ocr: このオプションを利用することで、Officeファイル内の画像もOCRを用いてテキストとして抽出することが可能になります。

  • A. EXEファイルから実行する場合 (Windows)

    配布されている ProjectAnalyzer.Cli.exe を使用します。

    # 基本的な使い方 (カレントディレクトリを分析)
    ProjectAnalyzer.Cli.exe
    
    # コードブロック記号を省略する場合
    ProjectAnalyzer.Cli.exe --no-codeblock
    
    # コードブロック記号を省略し、AIツール向けに記号とインデントを取り除く場合
    rojectAnalyzer.Cli.exe --no-codeblock --sanitize-html --remove-indent
    
    # パスを指定して実行
    ProjectAnalyzer.Cli.exe "[分析したいプロジェクトのパス]" "[出力先のパス]"
    
    # GitHubリポジトリを直接分析
    ProjectAnalyzer.Cli.exe "https://github.com/username/repository.git"
    
    # プライベートリポジトリの場合 (アクセストークンを含める)
    ProjectAnalyzer.Cli.exe "https://<YOUR_TOKEN>@github.com/username/repository.git"
    
  • B. ソースコードから実行する場合 (.NET SDK環境 / クロスプラットフォーム)

    ターミナルを開き、このツールの ProjectAnalyzer.Cli プロジェクトディレクトリ内で以下のコマンドを実行します。

    # 基本的な使い方
    dotnet run
    
    # コードブロック記号を省略する場合
    dotnet run -- --no-codeblock
    
    # コードブロック記号を省略し、AIツール向けに記号とインデントを取り除く場合
    dotnet run -- --no-codeblock --sanitize-html --remove-indent
    
    # パスを指定して実行
    dotnet run -- "[分析したいプロジェクトのパス]" "[出力先のパス]"
    
    # GitHubリポジトリを直接分析
    dotnet run -- "https://github.com/username/repository.git"
    
    # プライベートリポジトリの場合 (アクセストークンを含める)
    dotnet run -- "https://<YOUR_TOKEN>@github.com/username/repository.git"
    

    パス指定の実行例:

    dotnet run -- "C:\path\to\your\project" "C:\path\to\output"
    

4. 自作プロジェクトへの組み込み (ProjectAnalyzer.Core の利用)

ProjectAnalyzer.Core はクラスライブラリ(DLL)として提供されています。NuGetパッケージ等から自身のプロジェクトに追加することで、C#のコード内から直接アナライザーを呼び出して利用することができます。

基本的な実装例 (ファイルへ出力する場合):

using ProjectAnalyzer.Core;

// 1. 設定の読み込み (分析対象のパスと出力先のパスを指定)
var settings = SettingsLoader.Load("C:\\path\\to\\your\\project", "C:\\path\\to\\output");

// 2. 分析処理の実行
using var analyzer = new Analyzer(settings);
AnalyzerResult result = analyzer.Analyze(); // ファイル出力と同時に結果オブジェクトも返ります

高度な実装例 (ファイル出力せず、メモリ上でテキストを受け取る場合):

DLLとして組み込む際、ファイルI/Oを発生させずに分析結果の文字列だけを取得し、Markdownのコードブロック(```)も不要な場合は、引数でフラグを指定します。

using ProjectAnalyzer.Core;

// outputToFile: false にするとファイル出力をスキップします。
// omitCodeBlockTicks: true にすると Markdownの ``` プログラムコード ``` の部分を省略します。
var settings = SettingsLoader.Load(
    projectPath: "C:\\path\\to\\your\\project",
    outputPath: "", // 出力しない場合は空で構いません
    outputToFile: false,
    omitCodeBlockTicks: true,
    sanitizeHtmlTags: true,
    removeIndent: true
);

using var analyzer = new Analyzer(settings);
AnalyzerResult result = analyzer.Analyze();

// 結果をプログラム内で自由に利用できます
Console.WriteLine(result.ProjectTree); // ツリー構造の文字列

foreach (var context in result.ProjectContexts)
{
    // 各ファイルの内容をまとめた文字列(分割されている場合は複数要素)
    Console.WriteLine(context);
}

出力結果 (ファイル出力有効時)

実行後、指定した出力先フォルダ(デフォルトでは output)に以下のファイルが生成されます。

  • 00_ProjectTree.md: プロジェクト全体のフォルダ構成をツリー形式で示します。
  • 01_ProjectContext.md: プロジェクト内のすべてのファイルの内容を一つにまとめたMarkdownファイルです。各ファイルは相対パスと共に記載され、コードブロックはシンタックスハイライト付きで表示されます。
    (※プロジェクトのファイルサイズが大きい場合、自動的に 01_ProjectContext_1.md, 01_ProjectContext_2.md ... のように分割して出力されます)

プロジェクトの構造

このツールは、責務の分離原則に基づいたシンプルなアーキテクチャで構成されており、コアロジック(Core)とコンソールアプリ(Cli)に分かれています。

ProjectAnalyzer.Cli (エントリーポイント)

  • Program.cs: アプリケーションのエントリーポイント。コマンドライン引数を解釈し、分析処理を起動します。

ProjectAnalyzer.Core (コアロジック)

  • Analyzer.cs: 分析処理全体を統括するオーケストレーターです。
  • AnalyzerResult.cs: 分析結果(ツリーテキストやコンテキストテキストのリスト)を保持するクラスです。
  • AnalyzerSettings.cs: 分析対象のパス情報、除外リスト、出力制御フラグなどの設定を保持します。
  • SettingsLoader.cs: .projectanalyzerignore ファイルを読み込み、デフォルト設定とマージして設定オブジェクトを生成します。
  • TreeGenerator.cs: 00_ProjectTree.md 用のフォルダ構成ツリーを生成します。
  • FileContentGenerator.cs: 全てのファイルの内容を読み込み、01_ProjectContext.md 用のコンテンツを生成します。
  • LanguageMapper.cs: ファイルの拡張子を、Markdownのシンタックスハイライトで使われる言語識別子にマッピングします。

ライセンス

このプロジェクトは MITライセンス の下で公開されています。

謝辞

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.6 97 4/28/2026
1.2.3 97 4/27/2026
1.1.1 109 3/13/2026
1.1.0 102 3/5/2026
1.0.1 105 2/23/2026
1.0.0 101 2/23/2026