项目简介
WarfLang是一个基于C++的开源编译器/解释器项目,为解析、绑定和评估用户提供的源代码提供了一个框架。该项目具备多平台和架构支持,包括MacOS、Windows、Linux、FreeBSD、WebAssembly等,适用于各类语言编译器和解释器的开发与测试。
项目的主要特性和功能
- 多平台支持:涵盖MacOS、Windows、Linux、FreeBSD、WebAssembly等多种平台和架构。
- 编译器构建:提供CMake构建脚本,支持使用Ninja或MSBuild进行构建。
- 代码质量检查:集成Clang Tidy实现代码质量检查和自动修复。
- 覆盖率测试:支持代码覆盖率测试,并生成详细报告。
- Docker支持:提供Dockerfile用于不同架构和平台的项目构建与运行。
- 模糊测试:支持构建和运行模糊测试,保障代码健壮性。
安装使用步骤
环境准备
确保开发环境已安装C++编译器(如GCC或Clang)和CMake构建工具。
构建项目
- 使用CMake构建项目:
bash cmake -B build make
- 使用Ninja构建项目:
bash cmake -G Ninja -B build ninja -C ./build
运行测试
运行提供的测试用例,验证项目功能。
代码质量检查
使用Clang Tidy进行代码质量检查和自动修复:
bash
run-clang-tidy.py -p build/ -header-filter='.*' -fix -format
覆盖率测试
生成代码覆盖率报告:
bash
cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_FLAGS="-fprofile-instr-generate -fcoverage-mapping" \
-DCMAKE_C_COMPILER=$(brew --prefix llvm)/bin/clang \
-DCMAKE_CXX_COMPILER=$(brew --prefix llvm)/bin/clang++
ninja -C ./build
LLVM_PROFILE_FILE="Warflang.profraw" ./build/test/WarfLang_TEST
$(brew --prefix llvm)/bin/llvm-profdata merge -sparse WarfLang.profraw -o WarfLang.profdata
$(brew --prefix llvm)/bin/llvm-cov show -output-dir=out/report -format=html -instr-profile=Warf.profdata -object=build/test/WarfLang_TEST build/src/cli/Warf src/
Docker构建
使用Docker构建和运行项目:
bash
docker build -t warflang:latest .
docker run --name test_vm -it warflang:latest
注意事项
- 具体的构建和测试步骤可能因操作系统不同而有差异。
- 在Windows上,可能需使用Visual Studio或MinGW等C++编译器,并在构建脚本中指定正确的编译器路径。
- 在Linux或MacOS上,可能需安装相应的包管理器(如apt、yum或brew)来安装依赖项。
- 对于特定使用场景和功能,可能需自行编写代码或调整构建脚本以适应开发环境。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】