通用纯文字linting工具

时间:2016-08-18 21:47:18

标签: c# code-analysis lint

我正在寻找一个命令行工具,我可以为某些文件扩展名(例如cs文件,js文件,xaml文件)指定正则表达式模式(或类似文件),它们可以在运行时提供错误/警告,例如在建设期间。这些将扫描所有类型的纯文本源代码。

我知道有特定语言的工具......我也计划使用它们。例如,这个工具用于快速模式,我们想要标记我们不想投资编写Rosyln规则的地方。我想以 easy 的方式标记某些模式或API用法,其中任何人可以添加新规则而不用太费劲。很多时候我们不会添加规则,因为它很难。

源标记化等功能是奖励。开源/免费是一项巨额奖金。

有这样的工具吗?

2 个答案:

答案 0 :(得分:2)

如果你想去老式游戏,你可以为这个玩具去掉Awk。

它逐行扫描文件(对于某些可配置的行定义,具有合理的默认值)将它们分割成碎片(在空白IMMSMR上)并应用一组正则表达式并在匹配的正则表达式后面激活代码。有一些条件可以匹配文件的开头和结尾以打印页眉/页脚。

它似乎是你想要的,但恕我直言,perl或ruby脚本更容易,并在很久以前取代了AWK。但对于您的用例AFAICT来说,它简单明了。

答案 1 :(得分:0)

我们的Source Code Search Engine (SCSE)可以做到这一点。

SCSE lexes(使用语言准确的标记化,包括跳过特定于语言的空白但保留注释)一组源文件,然后为每个标记类型构建一个标记索引。可以为SCSE提供基于令牌的搜索查询,例如:

  'if' '(' I '='

在源代码中搜索模式;这个例子" lints"类似于C的代码,用于在IF语句中分配变量(I代表"标识符")的常见错误,这是由于意外使用' ='而不是预期的' =='。

使用令牌索引完成搜索以加快搜索速度。通常,SCSE可以在几秒钟内搜索数百万行代码,远远快于grep或其他坚持为每个查询读取文件内容的方案。它也会产生更少的误报,因为令牌检查是准确的,并且查询更容易编写,因为人们不必担心空格/换行/注释。

可以记录或仅计算模式上的命中列表。

通常SCSE是交互使用的;查询生成命中列表,单击命中会生成源文本页面的视图,并叠加命中。但是,也可以在SCSE上编写脚本调用。

可以使用语言准确的词法分析器获得大约40种语言的SCSE。