添加新语言的步骤:

1. 在 Chapi 中添加语言支持

ArchGuard 的语言 AST 解析是在 Chapi 中提供的,可以参考 Chapi 的 README 添加语言支持。

建议采用 TDD 的方式进行。

2. 添加新的 ArchGuard 语言插件

analyser_sourcecode 目录下创建新的模块,以 lang_ 开头,如 lang_java,并在对应的 settings.gradle.kts 中添加模块。

3. 为语言添加 features 支持(如 apicalls、datamap)

在 ArchGuard 中的 analyser_sourcecode 模块中,添加对应的 features 支持。

  • apicalls,参考文档:/modules/scanner/sourcecode-api
    • 在 ApiCallAnalyser 添加语言的入口,再根据不同的语言/框架,添加新的 xxApiAnalyser,。
  • datamap,参考文档:/modules/scanner/sourcecode-database
    • 在 DataMapAnalyser 添加语言的入口,再根据不同的语言/框架,添加新的 xxSqlAnalyser,。

4. 添加构建脚本(可选)

如果对应语言没有自动 release,需要在 Dockerfile.github/workflows/cd.yaml

测试

测试新语言时,可以直接通过 Scanner CLI + JSON 的方式,输出验证。对应的命令示例如下:

java -jar scanner_cli.jar --language=kotlin --output=json --path=. --features=datamap --features=apimap

注意需要更新 dependencies/analysers 下对应的语言包。