我在文本文件中编译了一个db对象名称列表,每行一个名称。我想知道每个名字,它在哪里使用。目标搜索是一组包含源代码子文件夹的文件夹。
在我放弃寻找工具来开始创建我自己的工具之前,或许你可以帮我指出一个现有工具。
理想情况下,它应该是Windows桌面应用程序。我之前没有用过grep。
答案 0 :(得分:1)
使用grep
(这个命令有大量的端口用于Windows,搜索网页)。
最终,请使用AgentRansack
。
答案 1 :(得分:0)
请参阅我们的Source Code Search Engine。它根据感兴趣的语言的原子(标记)索引大型代码库,然后使用该索引快速执行以语言元素表示的结构化查询。它是一种超级grep,但它不会被注释或字符串文字所欺骗,它会自动忽略空格。这意味着你得到的误报率比用grep得到的少得多。
如果您有一个标识符“foo”,则以下查询将查找所有提及:
I=foo
对于C和Java,您可以限制使用,读取,写入或定义的标识符访问类型。
D=bar*
只会找到以字母“bar”开头的声明标识符。
您可以使用语言标记序列编写更复杂的查询:
'int' I=*baz* '['
对于C,会找到包含字母“baz”并且显然声明为数组的任何变量名的声明。
您可以在GUI中查看匹配,只需单击一次导航到任何匹配的源代码视图。
这是一个Windows应用程序。它处理各种语言:C#,C ++,Java,......等等。
答案 2 :(得分:0)
我创建了一个SSIS包来加载我的500多个源代码文件,这些文件被分发到一些属于几个项目的文件夹深度,分成一个表,文件中有1行作为1行(总共10K +行)。
然后,我借助RegEx for MS-SQL http://www.simple-talk.com/sql/t-sql-programming/clr-assembly-regex-functions-for-sql-server-by-example/交叉应用保留db对象的5K +关键字列表的表,对它做了一个select语句。查询花了将近1.5小时才完成。
我知道这是一个漫长的啰嗦,但这正是我所需要的。我感谢你为指导我所做的努力。如果有人对我的方法感兴趣,我会很乐意进一步解释细节。
insert
dbo.DbObjectUsage
select
do.Id as DbObjectId,
fl.Id as FileLineId
from
dbo.FileLine as fl -- 10K+
cross apply
dbo.DbObject as do -- 5K+
where
dbo.RegExIsMatch('\b' + do.name + '\b', fl.Line, 0) != 0