nickdiego / compiledb

Tool for generating Clang's JSON Compilation Database files for make-based build systems.
GNU General Public License v3.0
1.38k stars 123 forks source link

Sometimes, an empty file is generated #98

Closed tan-wei closed 4 years ago

tan-wei commented 4 years ago

Firstly, thanks for this great tool to make me use VS Code with cquery very happy. However, sometimes, compiledb make or compiledb -n make will generate a json file with only an empty array included. The project lighttpd1.4 can reproduce the problem if we use ./autogen.sh && ./configure && make instead of CMake. How does it happen? How to solve it?

Thanks!!!

vtronko commented 4 years ago

I think it's probably because it won't read inner makefiles recursively.

tan-wei commented 4 years ago

@vtronko Thanks for your reply. Is there any solution to this? I can't find information in the repo.

vtronko commented 4 years ago

@tan-wei I am trying to resolve this issue myself, I'll keep you informed about my findings.

vtronko commented 4 years ago

@tan-wei I solved my problem. I figured out, compiledb couldn't fill it's directory stack correctly because the project I was building used --no-print-directory makeflag.

Most likely something interferes with directory stack in your case too.

UPD: I tried compiledb on lighttpd1.4 and it seem to generate compile_commands.json just fine. Cheers.

tan-wei commented 4 years ago

OK, I think I find the reason. I change the LANG from zh_CN.UTF8 into en_US.UTF8. So the Chinese character is the "somethig" which interferes with directory stack in my env.

Hope the issue will help people who encourter the same problem.

Thanks very much. I think the issue can be closed now.

shenliyang521 commented 3 years ago

@tan-wei 请教一下,LANG从zh_CN.UTF8成en_US.UTF8,是直接改变的系统的配置语言文件么

tan-wei commented 3 years ago

@tan-wei 请教一下,LANG从zh_CN.UTF8成en_US.UTF8,是直接改变的系统的配置语言文件么

直接改变当前的环境变量就行,export LANG=en_US.UTF8就可以,没必要改变全局的。

shenliyang521 commented 3 years ago

@tan-wei 请教一下,LANG从zh_CN.UTF8成en_US.UTF8,是直接改变的系统的配置语言文件么

直接改变当前的环境变量就行,export LANG=en_US.UTF8就可以,没必要改变全局的。

我在使用compiledb --parse命令的时候,在中文和英文系统下生成的json文件内容差距很大

tan-wei commented 3 years ago

@tan-wei 请教一下,LANG从zh_CN.UTF8成en_US.UTF8,是直接改变的系统的配置语言文件么

直接改变当前的环境变量就行,export LANG=en_US.UTF8就可以,没必要改变全局的。

我在使用compiledb --parse命令的时候,在中文和英文系统下生成的json文件内容差距很大

看起来就是英文系统会影响compiledb解析过程。

shenliyang521 commented 3 years ago

@tan-wei 请教一下,LANG从zh_CN.UTF8成en_US.UTF8,是直接改变的系统的配置语言文件么

直接改变当前的环境变量就行,export LANG=en_US.UTF8就可以,没必要改变全局的。

我在使用compiledb --parse命令的时候,在中文和英文系统下生成的json文件内容差距很大

看起来就是英文系统会影响compiledb解析过程。

我这边主要是在中文系统下,但是中文系统生成的json文件会少很多内容,而英文系统下内容相对比较多,这个您那边有解决方案么,怎么可以在中文系统下正常使用?

tan-wei commented 3 years ago

@tan-wei 请教一下,LANG从zh_CN.UTF8成en_US.UTF8,是直接改变的系统的配置语言文件么

直接改变当前的环境变量就行,export LANG=en_US.UTF8就可以,没必要改变全局的。

我在使用compiledb --parse命令的时候,在中文和英文系统下生成的json文件内容差距很大

看起来就是英文系统会影响compiledb解析过程。

我这边主要是在中文系统下,但是中文系统生成的json文件会少很多内容,而英文系统下内容相对比较多,这个您那边有解决方案么,怎么可以在中文系统下正常使用?

没啥特别好的解决方案,我默认这个软件目前就支持英文环境,所以在中文环境下有问题。不过我本人没遇到更多的问题,够用就行,一方面绝大部分相关的项目都是CMake相关的,也就不需要compiledb;另一方面,建议你也可以在项目里试试bear,跟这个项目类似,你看看能不能好点……

shenliyang521 commented 3 years ago

@tan-wei 请教一下,LANG从zh_CN.UTF8成en_US.UTF8,是直接改变的系统的配置语言文件么

直接改变当前的环境变量就行,export LANG=en_US.UTF8就可以,没必要改变全局的。

我在使用compiledb --parse命令的时候,在中文和英文系统下生成的json文件内容差距很大

看起来就是英文系统会影响compiledb解析过程。

我这边主要是在中文系统下,但是中文系统生成的json文件会少很多内容,而英文系统下内容相对比较多,这个您那边有解决方案么,怎么可以在中文系统下正常使用?

没啥特别好的解决方案,我默认这个软件目前就支持英文环境,所以在中文环境下有问题。不过我本人没遇到更多的问题,够用就行,一方面绝大部分相关的项目都是CMake相关的,也就不需要compiledb;另一方面,建议你也可以在项目里试试bear,跟这个项目类似,你看看能不能好点……

当前是没法修改源码支持中文系统么,比如改匹配的正则表达式之类的,因为我看make判断是的时候是Entering/Leaving directory

tan-wei commented 3 years ago

@tan-wei 请教一下,LANG从zh_CN.UTF8成en_US.UTF8,是直接改变的系统的配置语言文件么

直接改变当前的环境变量就行,export LANG=en_US.UTF8就可以,没必要改变全局的。

我在使用compiledb --parse命令的时候,在中文和英文系统下生成的json文件内容差距很大

看起来就是英文系统会影响compiledb解析过程。

我这边主要是在中文系统下,但是中文系统生成的json文件会少很多内容,而英文系统下内容相对比较多,这个您那边有解决方案么,怎么可以在中文系统下正常使用?

没啥特别好的解决方案,我默认这个软件目前就支持英文环境,所以在中文环境下有问题。不过我本人没遇到更多的问题,够用就行,一方面绝大部分相关的项目都是CMake相关的,也就不需要compiledb;另一方面,建议你也可以在项目里试试bear,跟这个项目类似,你看看能不能好点……

当前是没法修改源码支持中文系统么,比如改匹配的正则表达式之类的,因为我看make判断是的时候是Entering/Leaving directory

The author would say: PR is welcome!

shenliyang521 commented 3 years ago

table.customTableClassName {margin-bottom: 10px;border-collapse: collapse;display: table;}.customTableClassName td, .customTableClassName th {border: 1px solid #ddd;}我这边调试代码,我print,有些地方可以打印出来,有些地方不行,这个您清楚怎么解决么  统信软件技术有限公司 UnionTech Software Technology Co., Ltd.  官网:www.uniontech.com  此电子邮件消息仅供预期收件人使用,其中可能包含保密或特权使用信息。如果您不是预期收件人,请勿使用、传播、分发或复制此电子邮件或信赖此邮件采取任何行动。如果您误收了此邮件,请立即回复邮件通知统信软件技术有限公司发件人,并删除误收电子邮件及其相关附件。感谢配合!    This email message is intended only for the use of the individual or entity who/which is the intended recipient and may contain information that is privileged or confidential. If you are not the intended recipient, you are hereby notified that any use, dissemination, distribution or copying of, or taking any action in reliance on, this e-mail is strictly prohibited. If you have received this email in error, please notify UnionTech Software Technology  immediately by replying to this e-mail and immediately delete and discard all copies of the e-mail and the attachment thereto (if any). Thank you.      From: "Wei Tan notifications@github.com"To: "nickdiego/compiledb compiledb@noreply.github.com"CC: "shenliyang521 shenliyang@uniontech.com","Comment comment@noreply.github.com"Sent: 2020-12-21 18:09Subject: Re: [nickdiego/compiledb] Sometimes, an empty file is generated (#98)@tan-wei 请教一下,LANG从zh_CN.UTF8成en_US.UTF8,是直接改变的系统的配置语言文件么直接改变当前的环境变量就行,export LANG=en_US.UTF8就可以,没必要改变全局的。我在使用compiledb --parse命令的时候,在中文和英文系统下生成的json文件内容差距很大看起来就是英文系统会影响compiledb解析过程。我这边主要是在中文系统下,但是中文系统生成的json文件会少很多内容,而英文系统下内容相对比较多,这个您那边有解决方案么,怎么可以在中文系统下正常使用?没啥特别好的解决方案,我默认这个软件目前就支持英文环境,所以在中文环境下有问题。不过我本人没遇到更多的问题,够用就行,一方面绝大部分相关的项目都是CMake相关的,也就不需要compiledb;另一方面,建议你也可以在项目里试试bear,跟这个项目类似,你看看能不能好点……当前是没法修改源码支持中文系统么,比如改匹配的正则表达式之类的,因为我看make判断是的时候是Entering/Leaving directoryThe author would say: PR is welcome!—You are receiving this because you commented.Reply to this email directly, view it on GitHub, or unsubscribe.

shenliyang521 commented 3 years ago

@tan-wei 英文系统下,如果路径带有中文,是不是也会有问题?

shenliyang521 commented 3 years ago

@tan-wei I adapted the Chinese system to generate JSON file. Please refer to the process of submitting code