最近Google增加了可以搜索代码的功能,确实给站长朋友们带来了很大的方便。以下整理了一部分代码搜索问题的解决办法,仅供参考:
一、Google可抓取哪些类型的代码?
Google主要抓取能够找到的所有可公开访问的源代码,包括存档(.tar.gz、.tar.bz2、.tar 与 .zip)、CVS 知识库以及 Subversion 知识库等。
二、代码搜索功能支持哪些 regexp 语法?
Google 代码搜索支持除后向引用、归并元素以及归并类之外的POSIX 扩展正则表达式语法。要搜索空格字符,建议使用反斜杠将其转义,例如:
idcspy,\ WordPress。也可以用引号括住文字串 (literal string) 来进行搜索,例如
"idcspy,\ WordPress"。
代码搜索还支持以下 Perl 扩展名:
| \w | 匹配字词字符。(字母数字字符加揰) |
| \W | 匹配非字词字符。 |
| \s | 匹配空格字符。 |
| \S | 匹配非空格字符。 |
| \d | 匹配数字字符。 |
| \D | 匹配非数字字符。 |
三、代码搜索可支持哪些编程语言?
高级代码搜索页列出了目前Google所能检测的编程语言。若所选择的语言没有在列,也可以搜索以该语言编写的代码,包括Google还不能检测的语言所编写的代码。在能够检测文件的编程语言时,Google会在搜索结果中指明,而你也可以限制搜索,只搜索以该语言编写的代码。
如果Google不能检测所选择的语言,可以使用
file: 操作符,它具有搜索特定扩展名文件的功能。
可用以下形式的查询将搜索限制为具有
.x 或 .
abc 扩展名的文件。
例:
myquery file:\.(x|abc)$ 。
四、如何按语言、许可或文件名等条件限制代码搜索?
建议使用高级代码搜索页,也可以使用以下操作符。操作符包括:
- lang: 操作符,按编程语言进行限制(例如 lang:"c++"、-lang:java 或 lang:^(c|c#|c\+\+)$)
- license: 操作符,按软件许可进行限制(例如 license:apache、-license:gpl 或 license:bsd|mit)
- package: 操作符,按包网址进行限制(例如 package:www.zzbaike.com 或 package:\.tgz$)
- file: 操作符,按文件名进行限制(例如 file:include/linux/$ 或 -file:\.cc$)
上述操作符的参数可以是用引号括住的的文字串,也可以是正则表达式。如上面一些例子中所示,各个操作符都可在前面添加减号( -),从而用作否定操作符。
五、如何将Google 代码搜索结果添加到我的网站、IDE 或应用程序?
可通过 GData/XML 馈送获得代码搜索结果,并将代码搜索添加到你的网站。
六、Google如何确定针对某一段代码列出的软件许可?
代码搜索主要侧重在注释或单独的许可文件(例如
LICENSE、LICENCE、COPYRIGHT、COPYING)中查找许可,来确定代码包的软件许可。如果找不到许可,就会指出许可未知摂。
请注意,Google的许可检测手段尚不完善,虽列出代码作者指明的许可,但有可能会出现错误,而且有时作者指明的许可也可能是错误的。
另外,代码搜索结果也无法告知你某段软件代码所涉及的专利。当被告知关于可能的许可条款的信息,理解对重新使用某段代码的法律要求则是你的责任。
七、如何将我的代码加入Google代码搜索结果?
可以使用在线表单提交代码。如果你要提交大量代码,可能需要创建代码搜索 Sitemap,通过这种方式可指定你网站上的所有代码文件。
请注意,Google不会将提交的所有代码都添加到索引中,也无法预测或保证代码是否显示或何时会显示。
八、如何确保Google能拥有我的代码文件的正确语言和许可?
你可以创建 Packagemap 文件,指定封包中每个文件的语言和许可。使用 Packagemap XML 格式创建文件,然后将文件放在代码存档中的顶级目录中。
九、 如何阻止Google抓取我网站的代码?
Google 代码搜索会考虑
robots.txt,因此,有两种方法可以阻止抓取你的代码:
1、如果你可以访问你的网络服务器的漫游器文件,则可以将你的代码路径添加到
Disallow: 行。
2、也可只将漫游器文件放入你的代码包的根目录。这对存档及
CVS、Subversion 等源代码控制知识库均会发生作用。
例如,要指出你不希望Google抓取你的任何代码,可以使用下列代码在根目录中加入一个称为
robots.txt 的文件:
User-agent:*
Disallow:/
请注意,代码搜索可能会花费一些时间才能更新索引并删除你的代码。如果你很紧急,建议发送电子邮件到Google说明。
[
本帖最后由 初一 于 2008-7-25 18:39 编辑 ]