尝试用了一下(`・ω・)
背景:我平时(很不幸地)使用 C++ 维护软件,所以主要试了下它的 C++ 支持
一些感觉可以提升的地方:
软件实现上
==========
- requirements.txt 和 install_requires 中只列出了 tree-sitter-python,其它情况直接静默不报错(
- map_flow.py: build_tree_lines 是单线程递归调用的,每个文件都在调用 io.read_text(),我运行的代码库有上万个 .cpp 文件,所以 map 的时间非常长
- 缺少增量更新,看了下目前的实现里,ndoc all 会重新扫描所有文件,感觉加个缓存会更好
- 以及一些代码风格上的改进建议:可以 import typing 来做下 type hints,可维护性会更好些( ^ω^)
C++ 功能性
==========
- 没有 TableGen 支持,所以缺了很多上下文信息
- 它似乎不理解 CMake 的配置信息,编译 -I 参数和宏语句的条件编译,所以头文件提取找不到实际的文件(例子:它没找到 #include "llvm/IR/Value.h" 的位置)
- 注释查找好像只有 Python 风格支持,/// 和 /** */ 这样的注释 Doxygen 风格注释似乎找不到
- 它不会自己忽略 .gitignore 里忽视的文件/目录
这是我目前的一些使用体验,可以作一些参考