一些有用的看代码命令
-
比如看到这句:
fvc::domainIntegrate(rho);
。都是怎么定位这个函数所在文件的?刚去doxgen看竟然没有:big_mouth:
原标题为:大家怎么看OpenFOAM代码的?
-
@cfd-china
你用的是自己编译的 doxygen?在线版的能查到
除了用doxygen,还可以用grep来全局搜,比如,去src目录下,运行grep "domainIntegrate" * -R -n -C 5
会返回所有的用了这个函数的地方,并且输出关键字所在的上下文(-C 5 表示输出5行上下文)。凭借一点经验,就能定位 domainIntegrate 的定义所在为:
finiteVolume/finiteVolume/fvc/fvcVolumeIntegrate.C
除了 用 grep 还可以用 ack 和 ag ,这两个用法跟 grep 差不多,只是默认的输出更友好一点。
-
如果在windows下呢?有类似
grep
的东西么?有时候只看代码不计算开个虚拟机也挺占内存的。 -
@cfd-china
vim + ctags -
@lhzhu
貌似vim很神奇,我用的是sublime,还没接触过vim:cheeky: -
@cfd-china
windows下面类似软件应该有吧,只是我没用过,不过,windows下面也可以装 grep。我一般会在windows下装个终端模拟器,比如 mintty,这样就可以在Windows下方便地用 grep 了 -
@xpqiu
目前我就是把openfoam放在了桌面,用sublime看。有些时候函数找不到。linux下面grep可以匹配文件内的关键词。好像windows除了模拟器,在cmd下不可以?mintty还没用过。:sunglasses: -
@xpqiu
grep "domainIntegrate" * -R -n -C 5
这个命令非常好。
complex/complexI.H-164-// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // complex/complexI.H-165- complex/complexI.H-166- complex/complexI.H:167:inline scalar magSqr(const complex& c) complex/complexI.H-168-{ complex/complexI.H-169- return (c.re*c.re + c.im*c.im); complex/complexI.H-170-} complex/complexI.H-171- complex/complexI.H-172- -- complex/complexI.H-176-} complex/complexI.H-177- complex/complexI.H-178- complex/complexI.H-179-inline scalar mag(const complex& c) complex/complexI.H-180-{ complex/complexI.H:181: return sqrt(magSqr(c)); complex/complexI.H-182-} complex/complexI.H-183-
直接输出。就是怎么能把deb剔除掉?
-
@cfd-china 我用 the silver searcher 的
ag
命令。ag --cpp -A5 -B5 "domainIntegrate"
可以指定只搜索.(C|H)
文件。-A --after [LINES] Print lines after match (Default: 2) -B --before [LINES] Print lines before match (Default: 2)
更多用法可以
man ag
。 -
@wwzhao
都很高端!!!!!!!!!!!!!也是linux下的?还没用过ag
这个命令。有空试试。目前没有linux在手边。 -
@cfd-china 是 Linux 的没错,这个命令需要安装 the silver searcher 才有。不过也有mingw下的版本 [1] 和 windows port [2]。
[1] https://github.com/ggreer/the_silver_searcher/wiki/Windows
[2] https://blog.kowalczyk.info/software/the-silver-searcher-for-windows.html -
@cfd-china
grep 选择指定后缀可以用通配符,比如grep "domainIntegrate" --exclude="*.dep" -R -n -C 5
如 @wwzhao 上面提到的,ag 使用上更方便。grep 的好处是所有linux都自带,ag 需要额外安装。
可以通过自定义alias 来简化命令grep 命令。另,vim 也是个神奇的东西,欢迎入坑:lol:
-
用过sublime么?你说的vim是带界面的还是终端的那个?
vi bashrc
就可以编辑这个? -
@cfd-china
sublime text 我试过,挺现代化的,插件也丰富,不过我没怎么深入地用。我说的 vim 是终端里用的那个,不需要开图形界面。不过我在windows下还是用带图形界面的那个 gvim。Holtzmann 写过一个针对OpenFOAM 的 vim 插件,我在 这里 简单介绍过,这应该是我坚持在linux 平台下用 vim 来编辑文件,尤其是OpenFOAM相关的配置文件的主要原因之一。 -
-
@cfd-china
vim = Vi IMporved,是升级版的 vi。在目前的很多linux发行版中,已经不会再用 vi 了,终端里的 vi 命令,其实是个指向 vim 的符号链接。 -
Qt Creator很好用啊。Win 和 Linux 都有。把 src 文件导入进去,这个软件就把所有文件都链接起来了,可以随意跳转。
-
-
@cfd-china 不是QT,是QT creator。在我给的那个链接里边,QT的下载链接旁边才是QT creator。
论坛登录问题反馈可联系 li.dy@dyfluid.com