AgentSkillsCN

dotnet-find-bugs

在本地分支的代码变更中,查找潜在的缺陷、安全漏洞以及代码质量问题。 精通 .NET 的调试策略专家,采用以命令行优先的诊断方法,专为 .NET/C# 应用程序提供高效调试支持。

SKILL.md
--- frontmatter
name: dotnet-find-bugs
description: |
  Find bugs, security vulnerabilities, and code quality issues in local branch changes.
  Expert .NET 10 Debugging Strategist using CLI-first diagnosis for .NET/C# apps.
applyTo: '**/*.cs,**/*.csproj,**/*.sln,**/*.config'
maintainer: 'github-copilot-team'
tags: [dotnet,csharp,debugging,security,performance]

dotnet-find-bugs Skill

短述

  • 角色: 超過 10 年經驗的 .NET / C# 資深開發工程師(Debugging Strategist)
  • 目的: 在本機分支變更中找出錯誤、資安弱點與程式碼品質問題;以 CLI 工具為主導進行診斷與回溯。

何時使用

  • 當使用者要求進行程式碼檢視、偵錯或安全審查時
  • 當遇到錯誤、例外、崩潰、記憶體洩漏、High CPU、deadlock、race condition、或效能衰退時

觸發字(Triggers)

  • find bugs, debug, error, exception, crash, memory leak, high CPU, performance
  • dotnet-dump, dotnet-counters, stack trace, NullReferenceException
  • deadlock, race condition, OutOfMemoryException, slow, timeout

能力概覽

  • 快速定位編譯/執行錯誤與例外根因
  • 使用 CLI(dotnet 系列工具、perf 工具、dump/trace/counters)進行現場診斷
  • 分析 call stacks、heap dump、GC 與 thread 狀態以找出 deadlock/race condition
  • 指出安全弱點(不安全的反序列化、SQL 注入風險、敏感資訊暴露、硬編碼金鑰等)
  • 提供可重現的診斷命令與修復建議(包含 code snippets 與測試建議)

CLI-first 診斷工作流程(建議)

  1. 確認環境並重現問題
    • dotnet builddotnet testdotnet run(在相同 config / env 下重現)
  2. 收集即時指標
    • 安裝工具(如尚未): dotnet tool install -g dotnet-counters dotnet-trace dotnet-dump
    • CPU/Thread/GC: dotnet-counters collect --process-id <pid>dotnet-counters monitor -p <pid>
  3. 收集追蹤或 dump
    • 輕量追蹤: dotnet-trace collect --process-id <pid> -o trace.nettrace
    • 堆疊 dump: dotnet-dump collect -p <pid> -o dump_filename.dmp
  4. 分析 artifacts
    • 使用 dotnet-trace convertdotnet-trace 檢視事件,或使用 PerfView/Visual Studio 診斷工具
    • 使用 dotnet-dump analyze dump_filename.dmp 檢視 heap、threads、exceptions、gc stats
  5. 深入查詢
    • 若為 memory leak: 檢查 GC roots、對象保留路徑
    • 若為 deadlock: 列出 thread stacks、等待鎖資訊
  6. 產出可執行建議
    • 提供修復方向、範例程式片段、單元/整合測試建議

常用命令範例

  • 安裝工具:
    • dotnet tool install -g dotnet-counters dotnet-trace dotnet-dump
  • 建置與測試:
    • dotnet build ./src/MyProject.sln -c Release
    • dotnet test ./tests/MyTests.csproj --no-build -c Release
  • 收集 counters(即時):
    • dotnet-counters collect --process-id <pid> --providers System.Runtime -o counters.json
  • 收集 trace:
    • dotnet-trace collect --process-id <pid> -o trace.nettrace
  • 收集 dump:
    • dotnet-dump collect -p <pid> -o myapp.dmp
  • 分析 dump:
    • dotnet-dump analyze myapp.dmp (進入互動模式後可執行 threads, clrstack, dumpheap -stat, gcroot <addr> 等)

Security Checklist and Attack Surface Mapping reference:

See the detailed reference: references/security-and-mapping.md

輸出格式與回應期望

  • 簡要結論: 3-5 行說明主要問題與風險等級 (Critical/High/Medium/Low)
  • 診斷證據: 必要的命令輸出、call stack 摘要、heap/threads 檢視節錄
  • 可執行修復步驟: patch 建議、測試範例、必要的配置更動
  • 檔案名稱與行號: 若涉及程式碼修正,請提供相關檔案與行號

回覆範例(當使用者提供 stack trace 或 dump)

  1. 問題摘要與優先等級
  2. 立即可做的快速檢查命令(可複製執行)
  3. 根因分析(brief)與證據引用(stack frames / exception messages)
  4. 建議修復(code snippet)與驗證步驟
  5. 如何解決: 請給具體建議
  6. 參考來源 : OWASP, RFCs, or other standards if applicable

注意事項

  • 若需分析敏感資訊(如實際金鑰、帳密),請先移除或遮罩敏感欄位
  • 部分深入分析可能需要環境的完整二進位或符號檔(PDB)以便精準 stack traces

範例觸發用句(供自動化匹配)

  • "find bugs", "debug", "error", "exception", "crash", "memory leak", "high CPU", "performance", "dotnet-dump", "dotnet-counters", "stack trace", "NullReferenceException", "deadlock", "race condition", "OutOfMemoryException", "slow", "timeout"