1、先说下背景:平时写代码无意间可能就会留下敏感词的,网上也会经常爆出某些公司代码存在敏感词被公众知晓而造成公关危机,就像代码sonar检查一样,RD也是有检查代码仓库敏感词的需求,但是目前公司层面还未提供这种服务。
2、一般通过关键字进行词汇检索,最方便的方式是使用shell脚本的grep命令来进行,如 grep -r “keyWord” projectDir;如果是多关键字检索,则可以写成grep -r -E “keyWord1|keyWord2” projectDir来进行;但如果进行敏感词检查,则关键字通常有几百个,类似上面的写法在iTerm2执行会内存溢出。
3、idea是自带关键字搜索功能的,能不能借助idea来实现关键字的检索呢?实践表明,该方式是可以的。通过Cmd + Shift + F快捷键打开关键字搜索窗口,勾选正则表达式匹配,将关键字 “购物车|订单”输入,是可以实现类似grep -r -E “keyWord1|keyWord2” projectDir效果的。下面的任务很简单,只需要找一个敏感词词库,然后将敏感词处理成类似”keyWord1|keyWord2”格式即可。
4、敏感词查询条件获取,一般通过搜索就可以解决该问题。下载的敏感词词汇格式如下:
keyWord1
keyWord2
keyWord3
可以通过下述shell脚本将上述格式的文本转换为”keyWord1|keyWord2|keyWord3”
组装查询条件shell脚本
awk ‘{printf $0”|”}’ CensorWord.txt > Censor.txt
使用上述命令生成的关键字序列格式如下
keyWord1|keyWord2|keyWord3|
为实现查询还是需要将最后一个分隔符给去掉,得到结果为:keyWord1|keyWord2|keyWord3
5、从上述Censor.txt复制查询条件然后在idea搜索就可以了,速度还算可以。
敏感词查询下载地址:http://blog.csdn.net/shuyou612/article/details/74931955