Added Cland/GCC builds and Analyzers tasks for vscode

This commit is contained in:
Ivan-lis 2024-10-18 07:44:15 +00:00
parent 5942f366f9
commit 8aecc897d7
3 changed files with 244 additions and 33 deletions

2
.vscode/launch.json vendored
View file

@ -11,7 +11,7 @@
"program": "${workspaceFolder}/build/examples/output/connect", "program": "${workspaceFolder}/build/examples/output/connect",
"args": [], "args": [],
"cwd": "${workspaceFolder}", "cwd": "${workspaceFolder}",
"preLaunchTask": "Build Debug GCC" "preLaunchTask": "GCC: Build"
} }
] ]
} }

241
.vscode/tasks.json vendored
View file

@ -3,6 +3,33 @@
// for the documentation about the tasks.json format // for the documentation about the tasks.json format
"version": "2.0.0", "version": "2.0.0",
"tasks": [ "tasks": [
//
// Checkers/Analyzers tasks
//
{
"label": "Checker: clang-format dry-run",
"type": "shell",
"command": "for FILE in $(find . -type f \\( -name '*.c' -o -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \\) ! -path '*build*'); do clang-format -i $FILE --dry-run --Werror; done"
},
{
"label": "Checker: clang-format fix errors",
"type": "shell",
"command": "for FILE in $(find . -type f \\( -name '*.c' -o -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \\) ! -path '*build*'); do clang-format -i $FILE --Werror; done"
},
{
// https://clang.llvm.org/extra/clang-tidy/
"label": "Checker: clang-tidy dry-run",
"type": "shell",
"command": [
"python /home/tools/run-clang-tidy.py -exclude-header-filter .*build.* -use-color -header-filter .hpp -p ${workspaceFolder}/build_clang/ -config-file ${workspaceFolder}/.clang-tidy ",
" ${workspaceFolder}/examples ",
" ${workspaceFolder}/library/ ",
" ${workspaceFolder}/src/"
]
},
//
// Ejabberd tasks
//
{ {
"label": "Ejabberd: show logs", "label": "Ejabberd: show logs",
"type": "shell", "type": "shell",
@ -11,54 +38,238 @@
] ]
}, },
{ {
"label": "Ejabberd: open shell", "label": "Ejabberd: show localhost registered users",
"type": "shell", "type": "shell",
"command": [ "command": [
"sudo docker exec -it ejabberd sh" "sudo docker exec -it ejabberd ejabberdctl registered_users localhost"
] ]
}, },
{ {
"label": "Build Debug GCC", "label": "Ejabberd: open shell",
"type": "shell",
"command": [
"printf 'Example cmd: ejabberdctl registered_users localhost\n\n';",
"sudo docker exec -it ejabberd sh"
]
},
//
// GCC build related tasks
//
{
"label": "GCC: Clean build folder",
"type": "shell",
"command": "if [ -n \"$(ls -A ${workspaceFolder}/build)\" ]; then rm -rf ${workspaceFolder}/build/*; fi",
"hide": true
},
{
"label": "GCC: Configure Debug",
"type": "shell", "type": "shell",
"command": [ "command": [
"cd ${workspaceFolder} &&", "cd ${workspaceFolder} &&",
"mkdir -p build && cd build &&", "mkdir -p build && cd build &&",
"cmake -Wno-dev -DCMAKE_BUILD_TYPE=Debug -DENABLE_EXAMPLES=ON -DENABLE_TESTS=ON .. &&", "cmake -Wno-dev ",
"cmake --build . --parallel `nproc`", " -DCMAKE_CXX_FLAGS=\"-Wno-non-template-friend\"",
"|| ( printf '\n\n\t\\e[31mERROR: Build failed!\\e[0m\n\n\n' && exit 1 )" " -DCMAKE_BUILD_TYPE=Debug -DENABLE_EXAMPLES=ON -DENABLE_TESTS=ON .."
], ],
"options": { "options": {
"env": {} "env": {
"CC": "/usr/sbin/gcc",
"CXX": "/usr/sbin/g++"
}
}, },
"presentation": { "presentation": {
"clear": true "clear": true
}, },
"problemMatcher": [], "hide": true
},
{
"label": "GCC: Build",
"type": "shell",
"command": [
"cd ${workspaceFolder}/build &&",
"cmake --build . --parallel `nproc`",
"|| ( printf '\n\n\t\\e[31mERROR: Build failed!\\e[0m\n\n\n' && exit 1 )"
],
"presentation": {
"clear": true
},
"hide": true,
"group": {
"kind": "build"
}
},
{
"label": "GCC: Configure and build Debug",
"type": "shell",
"command": "echo Finished!",
"presentation": {
"clear": true
},
"dependsOrder": "sequence",
"dependsOn":[
"GCC: Clean build folder",
"GCC: Configure Debug",
"GCC: Build"
],
"group": { "group": {
"kind": "build", "kind": "build",
"isDefault": true "isDefault": true
} }
}, },
//
// Clang build related tasks
//
{ {
"label": "Build Debug Clang", "label": "Clang: Configure Debug",
"type": "shell", "type": "shell",
"command": [ "command": [
"cd ${workspaceFolder} &&", "cd ${workspaceFolder} &&",
"mkdir -p build_clang && cd build_clang &&", "mkdir -p build_clang && cd build_clang &&",
"cmake -Wno-dev -DCMAKE_BUILD_TYPE=Debug -DENABLE_EXAMPLES=ON -DENABLE_TESTS=ON .. &&", "cmake -Wno-dev ",
"cmake --build . --parallel `nproc`", " -DCMAKE_BUILD_TYPE=Debug -DENABLE_EXAMPLES=ON -DENABLE_TESTS=ON ",
"|| ( printf '\n\n\t\\e[31mERROR: Build failed!\\e[0m\n\n\n' && exit 1 )" " -DCMAKE_CXX_FLAGS=\"-stdlib=libstdc++\"",
" -DCMAKE_EXE_LINKER_FLAGS=\"-L/usr/lib/x86_64-linux-gnu -lstdc++\" .."
], ],
"options": { "options": {
"env": { "env": {
"CC": "/usr/sbin/clang", "CC": "/home/LLVM-19.1.0/bin/clang",
"CXX": "/usr/sbin/clang++" "CXX": "/home/LLVM-19.1.0/bin/clang++"
} }
}, },
"presentation": { "presentation": {
"clear": true "clear": true
}, },
"problemMatcher": [] "hide": true
},
{
"label": "Clang: Configure Debug with -fsanitize=address",
"type": "shell",
"command": [
"cd ${workspaceFolder} &&",
"mkdir -p build_clang && cd build_clang &&",
"cmake -Wno-dev ",
" -DCMAKE_BUILD_TYPE=Debug -DENABLE_EXAMPLES=ON -DENABLE_TESTS=ON ",
" -DCMAKE_CXX_FLAGS=\"-stdlib=libstdc++ -fno-omit-frame-pointer -g -fsanitize=address,undefined,leak,function,nullability,vptr\"",
" -DCMAKE_EXE_LINKER_FLAGS=\"-L/usr/lib/x86_64-linux-gnu -lstdc++ -fno-omit-frame-pointer -g -fsanitize=address,undefined,leak,function,nullability,vptr\" ..",
],
"options": {
"env": {
"CC": "/home/LLVM-19.1.0/bin/clang",
"CXX": "/home/LLVM-19.1.0/bin/clang++"
}
},
"presentation": {
"clear": true
},
"hide": true
},
{
//
// Useful links:
// - https://github.com/google/sanitizers/wiki/addresssanitizerflags
// - https://clang.llvm.org/docs/AddressSanitizer.html
//
"label": "Clang: Exec gtest with -fsanitize=address",
"type": "shell",
"command": [
"cd ${workspaceFolder} &&",
"mkdir -p build_clang && cd build_clang &&",
"ASAN_SYMBOLIZER_PATH=/home/LLVM-19.1.0/bin/llvm-symbolizer ASAN_OPTIONS=detect_stack_use_after_return=1:check_initialization_order=1:detect_leaks=1:atexit=1:abort_on_error=1 ./larra_xmpp_tests ; echo \"exit code: $?\"",
],
"presentation": {
"clear": true
},
"dependsOrder": "sequence",
"dependsOn":[
"Clang: Clean build folder",
"Clang: Configure Debug with -fsanitize=address",
"Clang: Build"
]
},
{
"label": "Clang: Configure Debug with -fsanitize=memory",
"type": "shell",
"command": [
"cd ${workspaceFolder} &&",
"mkdir -p build_clang && cd build_clang &&",
"cmake -Wno-dev ",
" -DCMAKE_BUILD_TYPE=Debug -DENABLE_EXAMPLES=ON -DENABLE_TESTS=ON ",
" -DCMAKE_CXX_FLAGS=\"-stdlib=libstdc++ -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -fsanitize=memory\"",
" -DCMAKE_EXE_LINKER_FLAGS=\"-L/usr/lib/x86_64-linux-gnu -lstdc++ -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -fsanitize=memory\" ..",
],
"options": {
"env": {
"CC": "/home/LLVM-19.1.0/bin/clang",
"CXX": "/home/LLVM-19.1.0/bin/clang++"
}
},
"presentation": {
"clear": true
},
"hide": true
},
{
//
// Useful links:
// - https://github.com/google/sanitizers/wiki/MemorySanitizer
// - https://clang.llvm.org/docs/MemorySanitizer.html
//
"label": "Clang: Exec gtest with -fsanitize=memory",
"type": "shell",
"command": [
"cd ${workspaceFolder} &&",
"mkdir -p build_clang && cd build_clang &&",
"MSAN_SYMBOLIZER_PATH=/home/LLVM-19.1.0/bin/llvm-symbolizer MSAN_OPTIONS=abort_on_error=1 ./larra_xmpp_tests ; echo \"exit code: $?\"",
],
"presentation": {
"clear": true
},
"dependsOrder": "sequence",
"dependsOn":[
"Clang: Clean build folder",
"Clang: Configure Debug with -fsanitize=memory",
"Clang: Build"
]
},
{
"label": "Clang: Build",
"type": "shell",
"command": [
"cd ${workspaceFolder}/build_clang &&",
"cmake --build . --parallel `nproc`",
"|| ( printf '\n\n\t\\e[31mERROR: Build failed!\\e[0m\n\n\n' && exit 1 )"
],
"presentation": {
"clear": true
},
"group": {
"kind": "build"
},
"hide": true
},
{
"label": "Clang: Configure and build Debug",
"type": "shell",
"command": [
"cd ${workspaceFolder} &&",
"mkdir -p build_clang && cd build_clang &&",
"MSAN_SYMBOLIZER_PATH=/home/LLVM-19.1.0/bin/llvm-symbolizer MSAN_OPTIONS=abort_on_error=1 ./larra_xmpp_tests ; echo \"exit code: $?\"",
],
"presentation": {
"clear": true
},
"dependsOrder": "sequence",
"dependsOn":[
"Clang: Clean build folder",
"Clang: Configure Debug",
"Clang: Build"
]
},
{
"label": "Clang: Clean build folder",
"type": "shell",
"command": "if [ -n \"$(ls -A ${workspaceFolder}/build_clang)\" ]; then rm -rf ${workspaceFolder}/build_clang/*; fi",
"hide": true
} }
] ]
} }

View file

@ -164,7 +164,7 @@ add_library(larra::larra_xmpp ALIAS larra_xmpp)
target_compile_features(larra_xmpp PUBLIC cxx_std_23) target_compile_features(larra_xmpp PUBLIC cxx_std_23)
target_compile_options(larra_xmpp PUBLIC -Wno-changes-meaning) target_compile_options(larra_xmpp PUBLIC "$<$<CXX_COMPILER_ID:GNU>:-Wno-changes-meaning>")
target_include_directories(larra_xmpp PUBLIC target_include_directories(larra_xmpp PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/library/include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/library/include>