通用纯文本检测工具
本文关键字:检测 工具 文本 | 更新日期: 2023-09-27 18:02:57
我正在寻找一个命令行工具,在那里我可以为某些文件扩展名(例如cs文件,js文件,xaml文件)指定正则表达式模式(或类似),可以在运行时提供错误/警告,就像在构建期间一样。这将扫描所有类型的纯文本源代码。
我知道有针对特定语言的工具…我也打算用那些。这个工具适用于我们想要标记的快速模式,例如,我们不想在编写Rosyln规则时进行投资。我想以一种简单的方式标记某些模式或API用法,任何人都可以添加新规则而不需要考虑太多。通常我们不添加规则是因为这很难。
像源标记化这样的功能是额外的。开源/免费是巨大的奖励。
有这样的工具吗?
如果你想用老派的方法,你可以用Awk来做这个。
它逐行扫描文件(对于一些可配置的行定义,具有相同的默认值)将它们切成几段(在空白IMMSMR上),并应用一组正则表达式并触发匹配正则表达式背后的代码。有一些条件匹配文件的开头和结尾来打印页眉/页脚。
这似乎是你想要的,但恕我直言,perl或ruby脚本更容易,并且很久以前就取代了AWK。但是对于您的用例AFAICT来说,它是简单直接的。
我们的源代码搜索引擎(SCSE)可以做到这一点
SCSE词法(使用语言精确的标记化,包括跳过特定于语言的空白,但保留注释)一组源文件,然后为每个标记类型构建标记索引。可以为SCSE提供基于令牌的搜索查询,例如:
'if' '(' I '='
在源代码中搜索模式;在IF语句中,由于意外使用了'='而不是预期的'==',导致了一个变量赋值(I表示"identifier")的常见错误。
使用令牌索引来加快搜索速度。通常,SCSE可以在几秒钟内搜索数百万行代码,比grep或其他坚持每次查询都读取文件内容的模式快得多。它还产生更少的误报,因为令牌检查是准确的,并且查询更容易编写,因为人们不必担心空白/换行/注释。
模式上的命中列表可以被记录或仅仅计数。
通常SCSE是交互式使用的;查询生成一个命中列表,单击命中生成源文本页面的视图,其中叠加了命中。但是,也可以在SCSE上编写脚本调用。
SCSE可以使用语言精确的词法分析器获得大约40种语言。