<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>开发工具 on 疯狂的键盘</title><link>https://jidzhang.github.io/categories/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7/</link><description>Recent content in 开发工具 on 疯狂的键盘</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 28 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jidzhang.github.io/categories/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude Code + clangd 实战笔记：大代码项目的高效 AI 辅助开发</title><link>https://jidzhang.github.io/posts/2026-03-28-claude-code-clangd-guide/</link><pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate><guid>https://jidzhang.github.io/posts/2026-03-28-claude-code-clangd-guide/</guid><description>&lt;h2 id="一问题代码量大ai-上下文装不下"&gt;一、问题：代码量大，AI 上下文装不下&lt;/h2&gt;
&lt;p&gt;当项目代码量很大时，Claude Code 直接从头到尾阅读代码很容易超过上下文窗口限制。解决方案是让 Claude Code 通过 &lt;strong&gt;LSP（Language Server Protocol）&lt;/strong&gt; 精准定位代码，而不是全文阅读。&lt;/p&gt;
&lt;h3 id="有无-lsp-的区别"&gt;有无 LSP 的区别&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;无 LSP&lt;/th&gt;
&lt;th&gt;有 LSP（clangd）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;以文本形式解析代码，用 Grep 模糊搜索&lt;/td&gt;
&lt;td&gt;直接调用语言服务器，获取精确语法结构&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;查找引用/定义需反复搜索，Token 消耗高&lt;/td&gt;
&lt;td&gt;单次查询到位，Token 消耗降低 40%+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;不理解类型信息&lt;/td&gt;
&lt;td&gt;能获取类型签名、跨文件引用&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;没有 LSP，Claude Code 是&amp;quot;聪明的文本搜索&amp;quot;；有了 LSP，才具备 IDE 级别的代码理解能力。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二clangd-是什么"&gt;二、clangd 是什么&lt;/h2&gt;
&lt;p&gt;clangd 是 LLVM/Clang 项目提供的 C/C++ 语言服务器，它能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;精确的代码补全（比 VS 原生 IntelliSense 在复杂模板代码中更准）&lt;/li&gt;
&lt;li&gt;跨文件的符号查找（定义、引用、调用关系）&lt;/li&gt;
&lt;li&gt;实时诊断（类型错误、未使用变量等）&lt;/li&gt;
&lt;li&gt;代码导航（跳转到定义、查找所有引用）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="clangd-的局限"&gt;clangd 的局限&lt;/h3&gt;
&lt;p&gt;clangd &lt;strong&gt;不是实时分析的&lt;/strong&gt;，它依赖一个 &lt;code&gt;compile_commands.json&lt;/code&gt; 文件来了解每个文件的编译参数（包含路径、宏定义、编译选项等）。没有这个文件，clangd 就无法正确工作。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三轻量方案手动创建-clangd-配置文件"&gt;三、轻量方案：手动创建 .clangd 配置文件&lt;/h2&gt;
&lt;p&gt;如果你的项目结构比较简单，或者不想安装额外工具生成 &lt;code&gt;compile_commands.json&lt;/code&gt;，可以手动创建一个 &lt;code&gt;.clangd&lt;/code&gt; 配置文件来告诉 clangd 需要检索的包含目录。&lt;/p&gt;
&lt;p&gt;在项目根目录创建 &lt;code&gt;.clangd&lt;/code&gt; 文件（YAML 格式）：&lt;/p&gt;</description></item><item><title>VC6.0 必装插件推荐</title><link>https://jidzhang.github.io/posts/vc60-plugins/</link><pubDate>Wed, 22 Apr 2015 00:00:00 +0000</pubDate><guid>https://jidzhang.github.io/posts/vc60-plugins/</guid><description>&lt;blockquote&gt;
&lt;p&gt;VC6.0 虽然已是老古董，但在维护遗留项目时仍会遇到。以下是提升开发效率的插件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="必装"&gt;必装&lt;/h2&gt;
&lt;h3 id="1-visual-assist强烈推荐"&gt;1. Visual Assist（强烈推荐）&lt;/h3&gt;
&lt;p&gt;代码补全、智能提示、自动更正大小写、错误标示、快速查找文件/类/变量。VC6 装了它之后体验接近现代 IDE。&lt;/p&gt;
&lt;p&gt;官网：https://www.wholetomato.com/&lt;/p&gt;
&lt;h3 id="2-wndtabs强烈推荐"&gt;2. WndTabs（强烈推荐）&lt;/h3&gt;
&lt;p&gt;在编辑窗口顶部显示所有已打开的文件标签页，方便切换、复制文件路径等。开源。&lt;/p&gt;
&lt;h3 id="3-numega-boundschecker强烈推荐"&gt;3. Numega BoundsChecker（强烈推荐）&lt;/h3&gt;
&lt;p&gt;运行时错误检测：内存泄漏、越界访问、资源未释放等。支持 ActiveX、DirectX、OLE/COM、ODBC 等 Windows API。&lt;/p&gt;
&lt;h2 id="推荐"&gt;推荐&lt;/h2&gt;
&lt;h3 id="4-linecounter"&gt;4. LineCounter&lt;/h3&gt;
&lt;p&gt;统计工程代码行数（总行、代码行、注释行、空行），多工程统计时不重复计算。&lt;/p&gt;
&lt;h3 id="5-sourcestyler-c"&gt;5. SourceStyler C++&lt;/h3&gt;
&lt;p&gt;C++ 代码格式化工具，支持自定义风格（表达式、指针、模板、类等十几种规则）。&lt;/p&gt;
&lt;h3 id="6-bcgcontrolbar-library"&gt;6. BCGControlBar Library&lt;/h3&gt;
&lt;p&gt;界面扩展类库，轻松实现 VS.NET、Outlook 等风格的 UI，支持换肤。&lt;/p&gt;
&lt;h3 id="7-comment-wizard"&gt;7. Comment Wizard&lt;/h3&gt;
&lt;p&gt;自动生成标准化的代码注释（文件头、函数说明、修改历史等）。&lt;/p&gt;
&lt;h3 id="8-spelly"&gt;8. Spelly&lt;/h3&gt;
&lt;p&gt;拼写检查插件，支持 C/C++/C#/VB/Fortran/HTML 中的注释和字符串。&lt;/p&gt;</description></item></channel></rss>