From cbc96fb513c2360398743d5f0bb2cd5efda2742a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sat, 26 Oct 2024 18:21:33 +0300 Subject: [PATCH 01/64] add gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d49b3e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +**/.cache +**/out +compile_commands.json From 4ae012e1e688b319044d1aaea2afcf8e53172bef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sat, 26 Oct 2024 18:22:12 +0300 Subject: [PATCH 02/64] add more values at stack --- 05_hw/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/05_hw/main.c b/05_hw/main.c index fded814..7cb7afb 100644 --- a/05_hw/main.c +++ b/05_hw/main.c @@ -9,6 +9,7 @@ int main() { push(&stack, 10); push(&stack, 20); push(&stack, 30); + push(&stack, 40); printf("After pushing elements:\n"); traverseStack(&stack); From f22b92fdc4a367b5cb38ab6d80f80028f804d3f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sat, 26 Oct 2024 18:22:24 +0300 Subject: [PATCH 03/64] fix value search iteration --- 05_hw/stack.c | 1 + 1 file changed, 1 insertion(+) diff --git a/05_hw/stack.c b/05_hw/stack.c index 0964440..e27b204 100644 --- a/05_hw/stack.c +++ b/05_hw/stack.c @@ -40,6 +40,7 @@ Node* searchByValue(Stack* stack, int value) { if (current->data == value) { return current; } + current = current->next; } return NULL; } From 94cea3a5e43f84a07238ec6c8706868486a9b286 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sat, 26 Oct 2024 18:23:38 +0300 Subject: [PATCH 04/64] Revert "add more values at stack" This reverts commit 4ae012e1e688b319044d1aaea2afcf8e53172bef. --- 05_hw/main.c | 1 - 1 file changed, 1 deletion(-) diff --git a/05_hw/main.c b/05_hw/main.c index 7cb7afb..fded814 100644 --- a/05_hw/main.c +++ b/05_hw/main.c @@ -9,7 +9,6 @@ int main() { push(&stack, 10); push(&stack, 20); push(&stack, 30); - push(&stack, 40); printf("After pushing elements:\n"); traverseStack(&stack); From 141d2102d86a8aadff8975eb94a730f47167f7e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sat, 26 Oct 2024 21:00:57 +0300 Subject: [PATCH 05/64] add and config formatter --- 05_hw/.clang-format | 12 ++++++++++++ 05_hw/main.c | 2 -- 05_hw/stack.c | 5 ++--- 05_hw/stack.h | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 05_hw/.clang-format diff --git a/05_hw/.clang-format b/05_hw/.clang-format new file mode 100644 index 0000000..4ccae27 --- /dev/null +++ b/05_hw/.clang-format @@ -0,0 +1,12 @@ +--- +# We'll use defaults from the LLVM style, but with 4 columns indentation. +BasedOnStyle: LLVM +IndentWidth: 4 +--- +Language: Cpp +# Force pointers to the type for C++. +DerivePointerAlignment: false +PointerAlignment: Left + +AllowShortBlocksOnASingleLine: Empty +AllowShortFunctionsOnASingleLine: Empty diff --git a/05_hw/main.c b/05_hw/main.c index fded814..2013641 100644 --- a/05_hw/main.c +++ b/05_hw/main.c @@ -32,5 +32,3 @@ int main() { return 0; } - - diff --git a/05_hw/stack.c b/05_hw/stack.c index e27b204..f4fd8ec 100644 --- a/05_hw/stack.c +++ b/05_hw/stack.c @@ -17,9 +17,9 @@ void initStack(Stack* stack) { void destroyStack(Stack* stack) { Node* current = stack->top; while (current != NULL) { - Node *tmp = current; + Node* tmp = current; current = current->next; - free(tmp); + free(tmp); } } @@ -76,4 +76,3 @@ bool isEmpty(Stack* stack) { free(stack->top); return stack->top == NULL; } - diff --git a/05_hw/stack.h b/05_hw/stack.h index ef0734e..8228d4b 100644 --- a/05_hw/stack.h +++ b/05_hw/stack.h @@ -19,7 +19,7 @@ Node* createNode(int data); void initStack(Stack* stack); -void destroyStack(Stack *stack); +void destroyStack(Stack* stack); void push(Stack* stack, int data); From 887fc1a2b676e026f9ccb709f5ea26b6a5e44226 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sat, 26 Oct 2024 23:09:15 +0300 Subject: [PATCH 06/64] restructuise project --- 05_hw/CMakeLists.txt | 6 +++--- 05_hw/src/CMakeLists.txt | 6 ++++++ 05_hw/{ => src}/main.c | 0 05_hw/{ => src}/stack.c | 0 05_hw/{ => src}/stack.h | 0 05_hw/tests/CMakeLists.txt | 6 ++++++ 05_hw/tests/stack_test.cpp | 4 ++++ 7 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 05_hw/src/CMakeLists.txt rename 05_hw/{ => src}/main.c (100%) rename 05_hw/{ => src}/stack.c (100%) rename 05_hw/{ => src}/stack.h (100%) create mode 100644 05_hw/tests/CMakeLists.txt create mode 100644 05_hw/tests/stack_test.cpp diff --git a/05_hw/CMakeLists.txt b/05_hw/CMakeLists.txt index 6f5e398..a6ab37f 100644 --- a/05_hw/CMakeLists.txt +++ b/05_hw/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.10) project(stack) -add_library(stack stack.c) +enable_testing() -add_executable(main main.c) -target_link_libraries(main stack) +add_subdirectory(src) +add_subdirectory(tests) diff --git a/05_hw/src/CMakeLists.txt b/05_hw/src/CMakeLists.txt new file mode 100644 index 0000000..0754533 --- /dev/null +++ b/05_hw/src/CMakeLists.txt @@ -0,0 +1,6 @@ +add_library(stack_lib stack.c) + +target_include_directories(stack_lib PUBLIC .) + +add_executable(main main.c) +target_link_libraries(main stack_lib) diff --git a/05_hw/main.c b/05_hw/src/main.c similarity index 100% rename from 05_hw/main.c rename to 05_hw/src/main.c diff --git a/05_hw/stack.c b/05_hw/src/stack.c similarity index 100% rename from 05_hw/stack.c rename to 05_hw/src/stack.c diff --git a/05_hw/stack.h b/05_hw/src/stack.h similarity index 100% rename from 05_hw/stack.h rename to 05_hw/src/stack.h diff --git a/05_hw/tests/CMakeLists.txt b/05_hw/tests/CMakeLists.txt new file mode 100644 index 0000000..5c3bcd8 --- /dev/null +++ b/05_hw/tests/CMakeLists.txt @@ -0,0 +1,6 @@ +# GTest include code would +# go somewhere in here + +add_executable(stack_test stack_test.cpp) + +target_link_libraries(stack_test PRIVATE stack_lib) diff --git a/05_hw/tests/stack_test.cpp b/05_hw/tests/stack_test.cpp new file mode 100644 index 0000000..5f37c2f --- /dev/null +++ b/05_hw/tests/stack_test.cpp @@ -0,0 +1,4 @@ +#include +int main(int argc, char* argv[]) { + return 0; +} From 34654a43820878e833e5f7931c46f24fd4cc429f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sun, 27 Oct 2024 18:36:30 +0300 Subject: [PATCH 07/64] configure editor --- 05_hw/.editorconfig | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 05_hw/.editorconfig diff --git a/05_hw/.editorconfig b/05_hw/.editorconfig new file mode 100644 index 0000000..6e3c965 --- /dev/null +++ b/05_hw/.editorconfig @@ -0,0 +1,5 @@ +root = true + +[*] +indent_style = space +indent_size = 4 From a9d4a19cf7532c50d13db3df2db2e69b1914d0a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sun, 27 Oct 2024 18:36:53 +0300 Subject: [PATCH 08/64] add tests --- 05_hw/tests/CMakeLists.txt | 11 ++++- 05_hw/tests/stack_test.cpp | 97 +++++++++++++++++++++++++++++++++++++- 2 files changed, 105 insertions(+), 3 deletions(-) diff --git a/05_hw/tests/CMakeLists.txt b/05_hw/tests/CMakeLists.txt index 5c3bcd8..5f27756 100644 --- a/05_hw/tests/CMakeLists.txt +++ b/05_hw/tests/CMakeLists.txt @@ -1,6 +1,15 @@ # GTest include code would # go somewhere in here +find_package(GTest REQUIRED) +include(GoogleTest) + add_executable(stack_test stack_test.cpp) -target_link_libraries(stack_test PRIVATE stack_lib) +target_link_libraries(stack_test + PRIVATE + GTest::gtest_main + stack_lib +) + +gtest_discover_tests(stack_test) diff --git a/05_hw/tests/stack_test.cpp b/05_hw/tests/stack_test.cpp index 5f37c2f..3f2e92a 100644 --- a/05_hw/tests/stack_test.cpp +++ b/05_hw/tests/stack_test.cpp @@ -1,4 +1,97 @@ +#include #include -int main(int argc, char* argv[]) { - return 0; + +class StackTest : public ::testing::Test { + protected: + Stack* stack; + + private: + void SetUp() override { + initStack(stack); + } + + void TearDown() override { + destroyStack(stack); + } +}; + +TEST_F(StackTest, isEmptyFunctionTest) { + EXPECT_TRUE(isEmpty(stack)); +} + +TEST_F(StackTest, PushFunctionTest) { + push(stack, 5); + EXPECT_EQ(getTop(stack)->data, 5); + push(stack, 7); + EXPECT_EQ(getTop(stack)->data, 7); + EXPECT_FALSE(isEmpty(stack)); +}; + +TEST_F(StackTest, PopFunctionTest) { + push(stack, 7); + push(stack, 5); + pop(stack); + EXPECT_EQ(getTop(stack)->data, 5); + pop(stack); + EXPECT_TRUE(isEmpty(stack)); +}; + +TEST_F(StackTest, SearchByValueFunctionTest) { + push(stack, 7); + push(stack, 5); + push(stack, -1); + push(stack, 4); + push(stack, 8); + + EXPECT_EQ(getTop(stack)->data, 8); + + Node* node = searchByValue(stack, -1); + ASSERT_NE(node, nullptr); + EXPECT_EQ(node->data, -1); + + Node* null_node = searchByValue(stack, 3); + ASSERT_EQ(null_node, nullptr); + + Node* top_node = searchByValue(stack, 8); + ASSERT_NE(top_node, nullptr); + EXPECT_EQ(top_node->data, 8); + + Node* bottom_node = searchByValue(stack, 7); + ASSERT_NE(bottom_node, nullptr); + EXPECT_EQ(bottom_node->data, 7); +}; + +TEST_F(StackTest, SearchByIndexFunctionTest) { + push(stack, 7); + push(stack, 5); + push(stack, -1); + push(stack, 4); + push(stack, 8); + + EXPECT_EQ(getTop(stack)->data, 8); + + Node* node = searchByIndex(stack, 3); + ASSERT_NE(node, nullptr); + EXPECT_EQ(node->data, 5); + + Node* null_node = searchByIndex(stack, 9); + ASSERT_EQ(null_node, nullptr); + + Node* top_node = searchByIndex(stack, 0); + ASSERT_NE(top_node, nullptr); + EXPECT_EQ(top_node->data, 8); + + Node* bottom_node = searchByIndex(stack, 4); + ASSERT_NE(bottom_node, nullptr); + EXPECT_EQ(bottom_node->data, 7); +}; + +TEST_F(StackTest, TraverseStackFunctionTest) { + push(stack, 4); + push(stack, 7); + push(stack, 1); + testing::internal::CaptureStdout(); + traverseStack(stack); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_EQ(output, "Stack elements: 4 7 1\n"); } From e5f4282f10e552d6bccb418f2ec61937f235168b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sun, 27 Oct 2024 18:50:29 +0300 Subject: [PATCH 09/64] fix test init error --- 05_hw/tests/stack_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/05_hw/tests/stack_test.cpp b/05_hw/tests/stack_test.cpp index 3f2e92a..6ef7702 100644 --- a/05_hw/tests/stack_test.cpp +++ b/05_hw/tests/stack_test.cpp @@ -3,7 +3,7 @@ class StackTest : public ::testing::Test { protected: - Stack* stack; + Stack* stack = new Stack(); private: void SetUp() override { From 68c4c9096afee4aa15cc52184f8a910cf1010fd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sun, 27 Oct 2024 18:50:52 +0300 Subject: [PATCH 10/64] fix others testing errors --- 05_hw/tests/stack_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/05_hw/tests/stack_test.cpp b/05_hw/tests/stack_test.cpp index 6ef7702..c2ace20 100644 --- a/05_hw/tests/stack_test.cpp +++ b/05_hw/tests/stack_test.cpp @@ -31,7 +31,7 @@ TEST_F(StackTest, PopFunctionTest) { push(stack, 7); push(stack, 5); pop(stack); - EXPECT_EQ(getTop(stack)->data, 5); + EXPECT_EQ(getTop(stack)->data, 7); pop(stack); EXPECT_TRUE(isEmpty(stack)); }; @@ -93,5 +93,5 @@ TEST_F(StackTest, TraverseStackFunctionTest) { testing::internal::CaptureStdout(); traverseStack(stack); std::string output = testing::internal::GetCapturedStdout(); - EXPECT_EQ(output, "Stack elements: 4 7 1\n"); + EXPECT_EQ(output, "Stack elements: 1 7 4 \n"); } From 044e69bc6919fde78e3ff31ac0736980f301dad0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sun, 27 Oct 2024 18:53:43 +0300 Subject: [PATCH 11/64] fix isEmpty function --- 05_hw/src/stack.c | 1 - 1 file changed, 1 deletion(-) diff --git a/05_hw/src/stack.c b/05_hw/src/stack.c index f4fd8ec..9ba31e7 100644 --- a/05_hw/src/stack.c +++ b/05_hw/src/stack.c @@ -73,6 +73,5 @@ void traverseStack(Stack* stack) { } bool isEmpty(Stack* stack) { - free(stack->top); return stack->top == NULL; } From 3b4a1373100d989460e63e9a8bd6b81e4fcd2d69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sun, 27 Oct 2024 19:34:09 +0300 Subject: [PATCH 12/64] add check for sigfault in pop function --- 05_hw/tests/stack_test.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/05_hw/tests/stack_test.cpp b/05_hw/tests/stack_test.cpp index c2ace20..49b0afb 100644 --- a/05_hw/tests/stack_test.cpp +++ b/05_hw/tests/stack_test.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -27,6 +28,11 @@ TEST_F(StackTest, PushFunctionTest) { EXPECT_FALSE(isEmpty(stack)); }; +// Обработчик для SIGSEGV +void SignalHandler(int signal) { + throw std::runtime_error("Segmentation fault captured"); +} + TEST_F(StackTest, PopFunctionTest) { push(stack, 7); push(stack, 5); @@ -34,6 +40,12 @@ TEST_F(StackTest, PopFunctionTest) { EXPECT_EQ(getTop(stack)->data, 7); pop(stack); EXPECT_TRUE(isEmpty(stack)); + + std::signal(SIGSEGV, SignalHandler); + EXPECT_NO_THROW(pop(stack)); + + // Восстанавливаем стандартное поведение для сигнала после теста + std::signal(SIGSEGV, SIG_DFL); }; TEST_F(StackTest, SearchByValueFunctionTest) { From beb01cd4e1a50b75dd8ee17ef0840aa68492f051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Sun, 27 Oct 2024 19:39:46 +0300 Subject: [PATCH 13/64] fix pop function --- 05_hw/src/stack.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/05_hw/src/stack.c b/05_hw/src/stack.c index 9ba31e7..1f2a782 100644 --- a/05_hw/src/stack.c +++ b/05_hw/src/stack.c @@ -30,8 +30,13 @@ void push(Stack* stack, int data) { } void pop(Stack* stack) { + if (stack->top == NULL) { + return; + } Node* temp = stack->top; stack->top = stack->top->next; + free(temp); + temp = NULL; } Node* searchByValue(Stack* stack, int value) { From 308a4c1185057903aef06a42cbcb92c38d856f68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Mon, 28 Oct 2024 07:50:53 +0300 Subject: [PATCH 14/64] add code coverage --- .gitignore | 1 + 05_hw/src/CMakeLists.txt | 7 ++++++- 05_hw/tests/CMakeLists.txt | 33 +++++++++++++++++++++++++++++++-- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index d49b3e8..ba1dfaf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ **/.cache **/out compile_commands.json +coverage diff --git a/05_hw/src/CMakeLists.txt b/05_hw/src/CMakeLists.txt index 0754533..027966d 100644 --- a/05_hw/src/CMakeLists.txt +++ b/05_hw/src/CMakeLists.txt @@ -3,4 +3,9 @@ add_library(stack_lib stack.c) target_include_directories(stack_lib PUBLIC .) add_executable(main main.c) -target_link_libraries(main stack_lib) +target_compile_options(stack_lib PRIVATE) +if(STACKLIB_COVERAGE) + target_link_libraries(main stack_lib gcov) +else() + target_link_libraries(main stack_lib) +endif() diff --git a/05_hw/tests/CMakeLists.txt b/05_hw/tests/CMakeLists.txt index 5f27756..3e34112 100644 --- a/05_hw/tests/CMakeLists.txt +++ b/05_hw/tests/CMakeLists.txt @@ -8,8 +8,37 @@ add_executable(stack_test stack_test.cpp) target_link_libraries(stack_test PRIVATE - GTest::gtest_main - stack_lib + GTest::gtest_main + stack_lib + gcov ) +find_program(GCOVR_EXECUTABLE gcovr) + +if(STACKLIB_COVERAGE AND GCOVR_EXECUTABLE) + message(STATUS "Измерение покрытия кода тестами включено") + + target_compile_options(stack_test PRIVATE --coverage) + target_compile_options(stack_lib PRIVATE --coverage) + + add_custom_target(coverage + COMMAND + ctest + --test-dir ${PROJECT_BINARY_DIR} + -T Test -T Coverage + COMMAND + lcov --directory ${PROJECT_BINARY_DIR}/src/ + --capture --output-file ${PROJECT_BINARY_DIR}/coverage.info + COMMAND + genhtml --demangle-cpp -o ${PROJECT_SOURCE_DIR}/coverage + ${PROJECT_BINARY_DIR}/coverage.info + ) +elseif(STACKLIB_COVERAGE AND NOT GCOVR_EXECUTABLE) + set(STACKLIB_COVERAGE OFF) + message(WARNING + "Для замеров покрытия кода тестами требуется программа gcovr") +endif() + +include(CTest) + gtest_discover_tests(stack_test) From 82dd2d68192a56df70fabaf0275bb8159cd50db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Mon, 28 Oct 2024 09:02:54 +0300 Subject: [PATCH 15/64] add static checker target --- 05_hw/CMakeLists.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/05_hw/CMakeLists.txt b/05_hw/CMakeLists.txt index a6ab37f..a3399ec 100644 --- a/05_hw/CMakeLists.txt +++ b/05_hw/CMakeLists.txt @@ -5,3 +5,14 @@ enable_testing() add_subdirectory(src) add_subdirectory(tests) + +if(CMAKE_EXPORT_COMPILE_COMMANDS) + find_program(CLANG_EXECUTABLE clang) + add_custom_target(analyze + COMMAND + analyze-build --cdb ${PROJECT_BINARY_DIR}/compile_commands.json + --use-analyzer ${CLANG_EXECUTABLE} + --output ${PROJECT_BINARY_DIR}/analyzer + ) +endif() + From 40cb600f66e26116d424c5992c877efd230e74a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Mon, 28 Oct 2024 09:30:42 +0300 Subject: [PATCH 16/64] add Asan profile with sanitize --- 05_hw/CMakeLists.txt | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/05_hw/CMakeLists.txt b/05_hw/CMakeLists.txt index a3399ec..6f3e4c4 100644 --- a/05_hw/CMakeLists.txt +++ b/05_hw/CMakeLists.txt @@ -16,3 +16,33 @@ if(CMAKE_EXPORT_COMPILE_COMMANDS) ) endif() +get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + +if(isMultiConfig) + if(NOT "Asan" IN_LIST CMAKE_CONFIGURATION_TYPES) + list(APPEND CMAKE_CONFIGURATION_TYPES Asan) + endif() +else() + set(allowedBuildTypes Asan Debug Release RelWithDebInfo MinSizeRel) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "${allowedBuildTypes}") + + if(CMAKE_BUILD_TYPE AND NOT CMAKE_BUILD_TYPE IN_LIST allowedBuildTypes) + message(FATAL_ERROR "Invalid build type: ${CMAKE_BUILD_TYPE}") + endif() +endif() + +set(CMAKE_C_FLAGS_ASAN + "${CMAKE_C_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined" CACHE STRING + "Flags used by the C compiler for Asan build type or configuration." FORCE) + +set(CMAKE_CXX_FLAGS_ASAN + "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined" CACHE STRING + "Flags used by the C++ compiler for Asan build type or configuration." FORCE) + +set(CMAKE_EXE_LINKER_FLAGS_ASAN + "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=address -fsanitize=undefined" CACHE STRING + "Linker flags to be used to create executables for Asan build type." FORCE) + +set(CMAKE_SHARED_LINKER_FLAGS_ASAN + "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=address -fsanitize=undefined" CACHE STRING + "Linker lags to be used to create shared libraries for Asan build type." FORCE) From 5916b7888327ae5cacf5bdf9d20c6e4364640046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Mon, 28 Oct 2024 23:30:39 +0300 Subject: [PATCH 17/64] add benchmarks for push and pop functions --- 05_hw/CMakeLists.txt | 1 + 05_hw/benchmarks/CMakeLists.txt | 18 ++++++++ 05_hw/benchmarks/stack_benchmark.cpp | 66 ++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 05_hw/benchmarks/CMakeLists.txt create mode 100644 05_hw/benchmarks/stack_benchmark.cpp diff --git a/05_hw/CMakeLists.txt b/05_hw/CMakeLists.txt index 6f3e4c4..32d5a47 100644 --- a/05_hw/CMakeLists.txt +++ b/05_hw/CMakeLists.txt @@ -5,6 +5,7 @@ enable_testing() add_subdirectory(src) add_subdirectory(tests) +add_subdirectory(benchmarks) if(CMAKE_EXPORT_COMPILE_COMMANDS) find_program(CLANG_EXECUTABLE clang) diff --git a/05_hw/benchmarks/CMakeLists.txt b/05_hw/benchmarks/CMakeLists.txt new file mode 100644 index 0000000..47ed042 --- /dev/null +++ b/05_hw/benchmarks/CMakeLists.txt @@ -0,0 +1,18 @@ +include(FetchContent) + +set(BENCHMARK_ENABLE_TESTING OFF) +set(ENABLE_GPROF OFF) + +FetchContent_Declare(googlebenchmark + GIT_REPOSITORY https://github.com/google/benchmark + GIT_TAG main) + +FetchContent_MakeAvailable(googlebenchmark) + +add_executable(stack_benchmark stack_benchmark.cpp) + +target_link_libraries(stack_benchmark + PRIVATE + benchmark::benchmark + stack_lib +) diff --git a/05_hw/benchmarks/stack_benchmark.cpp b/05_hw/benchmarks/stack_benchmark.cpp new file mode 100644 index 0000000..8254638 --- /dev/null +++ b/05_hw/benchmarks/stack_benchmark.cpp @@ -0,0 +1,66 @@ +#include +#include + +static void PushBenchmark(benchmark::State& state, Stack* stack) { + for (auto _ : state) { + push(stack, 1111111); + } +} + +class PushFixture : public benchmark::Fixture { + protected: + Stack* stack; + + public: + void SetUp(const benchmark::State& state) override { + stack = new Stack(); + initStack(stack); + } + + void TearDown(const benchmark::State& state) override { + destroyStack(stack); + } +}; + +BENCHMARK_DEFINE_F(PushFixture, PushBenchmark)(benchmark::State& state) { + PushBenchmark(state, stack); +} + +BENCHMARK_REGISTER_F(PushFixture, PushBenchmark) + ->RangeMultiplier(2) + ->Range(1, 512); + +static void PopBenchmark(benchmark::State& state, Stack* stack) { + for (auto _ : state) { + pop(stack); + } +} + +class PopFixture : public benchmark::Fixture { + protected: + Stack* stack; + + public: + void SetUp(const benchmark::State& state) override { + stack = new Stack(); + initStack(stack); + long count = state.range(0); + for (long i = 0; i <= count; i++) { + push(stack, 1111111); + } + } + + void TearDown(const benchmark::State& state) override { + destroyStack(stack); + } +}; + +BENCHMARK_DEFINE_F(PopFixture, PopBenchmark)(benchmark::State& state) { + PopBenchmark(state, stack); +} + +BENCHMARK_REGISTER_F(PopFixture, PopBenchmark) + ->RangeMultiplier(2) + ->Range(1, 1024); + +BENCHMARK_MAIN(); From fb8548b23f78a82c271730b94e37804d536602ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D0=B8=D0=BA=D0=BE=D0=B2=20=D0=98=D0=BB?= =?UTF-8?q?=D1=8C=D1=8F?= Date: Tue, 29 Oct 2024 09:23:46 +0300 Subject: [PATCH 18/64] add fix for build coverage target normally --- 05_hw/benchmarks/CMakeLists.txt | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/05_hw/benchmarks/CMakeLists.txt b/05_hw/benchmarks/CMakeLists.txt index 47ed042..f49eb8f 100644 --- a/05_hw/benchmarks/CMakeLists.txt +++ b/05_hw/benchmarks/CMakeLists.txt @@ -11,8 +11,18 @@ FetchContent_MakeAvailable(googlebenchmark) add_executable(stack_benchmark stack_benchmark.cpp) -target_link_libraries(stack_benchmark - PRIVATE - benchmark::benchmark - stack_lib -) + +if(STACKLIB_COVERAGE) + target_link_libraries(stack_benchmark + PRIVATE + benchmark::benchmark + stack_lib + gcov + ) +else() + target_link_libraries(stack_benchmark + PRIVATE + benchmark::benchmark + stack_lib + ) +endif() From 8d50b3afc0b02075b1be5e625c48757bdc5eac75 Mon Sep 17 00:00:00 2001 From: lenow55 <99322377+lenow55@users.noreply.github.com> Date: Sat, 30 Nov 2024 14:10:00 +0300 Subject: [PATCH 19/64] Create ci.yml include analyze and ctest tasks --- .github/workflows/ci.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..11bc55e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,32 @@ +name: C/C++ CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up CMake + uses: jwlawson/actions-setup-cmake@v1 + + - name: Install dependencies + run: sudo apt-get install -y gcc g++ cmake clang-tidy + + - name: Configure CMake + run: cmake -B build -S 05_hw -DCMAKE_BUILD_TYPE=Asan -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DSTACKLIB_COVERAGE=ON + + - name: Build project and run ctest + run: cmake --build build --target coverage + + - name: Run clang analyzing + run: cmake --build build --target analyze From 59ac91bd492ec18edc32dce68094a018bf868d2a Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 14:17:35 +0300 Subject: [PATCH 20/64] try add gtest fetch --- 05_hw/tests/CMakeLists.txt | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/05_hw/tests/CMakeLists.txt b/05_hw/tests/CMakeLists.txt index 3e34112..c6701d0 100644 --- a/05_hw/tests/CMakeLists.txt +++ b/05_hw/tests/CMakeLists.txt @@ -1,18 +1,20 @@ # GTest include code would # go somewhere in here -find_package(GTest REQUIRED) +include(FetchContent) +FetchContent_Declare( + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG v1.15.2 + OVERRIDE_FIND_PACKAGE +) + +find_package(googletest REQUIRED) + include(GoogleTest) add_executable(stack_test stack_test.cpp) -target_link_libraries(stack_test - PRIVATE - GTest::gtest_main - stack_lib - gcov -) - find_program(GCOVR_EXECUTABLE gcovr) if(STACKLIB_COVERAGE AND GCOVR_EXECUTABLE) @@ -21,6 +23,13 @@ if(STACKLIB_COVERAGE AND GCOVR_EXECUTABLE) target_compile_options(stack_test PRIVATE --coverage) target_compile_options(stack_lib PRIVATE --coverage) + target_link_libraries(stack_test + PRIVATE + GTest::gtest_main + stack_lib + gcov + ) + add_custom_target(coverage COMMAND ctest @@ -39,6 +48,14 @@ elseif(STACKLIB_COVERAGE AND NOT GCOVR_EXECUTABLE) "Для замеров покрытия кода тестами требуется программа gcovr") endif() +if(NOT STACKLIB_COVERAGE) + target_link_libraries(stack_test + PRIVATE + GTest::gtest_main + stack_lib + ) +endif() + include(CTest) gtest_discover_tests(stack_test) From 5ee3a34fe373984295baff9f730e0dff36d516f9 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 16:23:33 +0300 Subject: [PATCH 21/64] fix ci and add build kit --- .github/workflows/ci.yml | 2 +- 05_hw/cmake-kits.json | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 05_hw/cmake-kits.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 11bc55e..8f58405 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: uses: jwlawson/actions-setup-cmake@v1 - name: Install dependencies - run: sudo apt-get install -y gcc g++ cmake clang-tidy + run: sudo apt-get install -y gcc g++ cmake clang-tidy gcovr - name: Configure CMake run: cmake -B build -S 05_hw -DCMAKE_BUILD_TYPE=Asan -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DSTACKLIB_COVERAGE=ON diff --git a/05_hw/cmake-kits.json b/05_hw/cmake-kits.json new file mode 100644 index 0000000..0179246 --- /dev/null +++ b/05_hw/cmake-kits.json @@ -0,0 +1,10 @@ +[ + { + "name": "Windows Kit", + "generator": "MinGW Makefiles", + "compilers": { + "C": "C:\\MinGW\\bin\\gcc.exe", + "CXX": "C:\\MinGW\\bin\\g++.exe" + } + } +] From 164e463e46adedbc8f1f5e1383002c6502c39d39 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 16:33:42 +0300 Subject: [PATCH 22/64] fix ci again --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f58405..458e543 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,9 @@ jobs: run: cmake -B build -S 05_hw -DCMAKE_BUILD_TYPE=Asan -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DSTACKLIB_COVERAGE=ON - name: Build project and run ctest + run: cmake --build build + + - name: Run ctest run: cmake --build build --target coverage - name: Run clang analyzing From db78d8a863883d1ada6ed247ec9add1b75421248 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 16:56:44 +0300 Subject: [PATCH 23/64] set workdir --- .github/workflows/ci.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 458e543..6409382 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,10 @@ jobs: build: runs-on: ubuntu-latest + defaults: + run: + working-directory: ./05_hw + steps: - name: Checkout repository uses: actions/checkout@v2 @@ -20,10 +24,10 @@ jobs: uses: jwlawson/actions-setup-cmake@v1 - name: Install dependencies - run: sudo apt-get install -y gcc g++ cmake clang-tidy gcovr + run: sudo apt-get install -y gcc g++ cmake clang-tidy gcovr lcov - name: Configure CMake - run: cmake -B build -S 05_hw -DCMAKE_BUILD_TYPE=Asan -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DSTACKLIB_COVERAGE=ON + run: cmake -B build -S . -DCMAKE_BUILD_TYPE=Asan -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DSTACKLIB_COVERAGE=ON - name: Build project and run ctest run: cmake --build build From a2941913407de48b6b7d46848e4d8455b9b24529 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 17:42:13 +0300 Subject: [PATCH 24/64] try simple test --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6409382..4739e62 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: run: cmake --build build - name: Run ctest - run: cmake --build build --target coverage + run: cmake --build build --target test - name: Run clang analyzing run: cmake --build build --target analyze From 6a09fbd326b078fd0124dcfaea0a0b629b59525d Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 17:50:47 +0300 Subject: [PATCH 25/64] fix simple test build --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4739e62..9b15be6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: run: sudo apt-get install -y gcc g++ cmake clang-tidy gcovr lcov - name: Configure CMake - run: cmake -B build -S . -DCMAKE_BUILD_TYPE=Asan -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DSTACKLIB_COVERAGE=ON + run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True - name: Build project and run ctest run: cmake --build build From 05f02245c7fc60c56b8093f7754ec41f8de531bb Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 18:10:51 +0300 Subject: [PATCH 26/64] add common steps --- .github/workflows/ci.yml | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b15be6..5f3c364 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ on: - main jobs: - build: + common-steps: runs-on: ubuntu-latest defaults: @@ -24,16 +24,24 @@ jobs: uses: jwlawson/actions-setup-cmake@v1 - name: Install dependencies - run: sudo apt-get install -y gcc g++ cmake clang-tidy gcovr lcov + run: sudo apt-get install -y gcc g++ cmake clang-tidy + + coverage: + runs-on: ubuntu-latest + needs: common-steps + + defaults: + run: + working-directory: ./05_hw + steps: + - name: Install dependencies + run: sudo apt-get install -y gcovr lcov - name: Configure CMake - run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True + run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DSTACKLIB_COVERAGE=ON - name: Build project and run ctest - run: cmake --build build + run: cmake --build build --target tests - name: Run ctest - run: cmake --build build --target test - - - name: Run clang analyzing - run: cmake --build build --target analyze + run: cmake --build build --target coverage From 72e65c31b901f712456686367d177e471e015d65 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 19:14:15 +0300 Subject: [PATCH 27/64] reorganize ci workflow --- .github/workflows/ci.yml | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5f3c364..f857d80 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: C/C++ CI +name: C/C++ CI coverage and sanitize on: push: @@ -9,7 +9,7 @@ on: - main jobs: - common-steps: + coverage: runs-on: ubuntu-latest defaults: @@ -24,24 +24,39 @@ jobs: uses: jwlawson/actions-setup-cmake@v1 - name: Install dependencies - run: sudo apt-get install -y gcc g++ cmake clang-tidy + run: sudo apt-get install -y gcovr lcov - coverage: + - name: Configure CMake + run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DSTACKLIB_COVERAGE=ON + + - name: Build project and run ctest + run: cmake --build build --target tests + + - name: Run ctest + run: cmake --build build --target coverage + + sanitize: runs-on: ubuntu-latest - needs: common-steps defaults: run: working-directory: ./05_hw + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up CMake + uses: jwlawson/actions-setup-cmake@v1 + - name: Install dependencies - run: sudo apt-get install -y gcovr lcov + run: sudo apt-get install -y gcc g++ cmake clang-tidy - name: Configure CMake - run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DSTACKLIB_COVERAGE=ON + run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan - name: Build project and run ctest - run: cmake --build build --target tests + run: cmake --build build --target main - name: Run ctest run: cmake --build build --target coverage From f73aa12f137205f86599994bfc604822b9df2c73 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 19:19:28 +0300 Subject: [PATCH 28/64] fix targets --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f857d80..e48abcb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,12 +30,12 @@ jobs: run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DSTACKLIB_COVERAGE=ON - name: Build project and run ctest - run: cmake --build build --target tests + run: cmake --build build --target stack_test - name: Run ctest run: cmake --build build --target coverage - sanitize: + analyze: runs-on: ubuntu-latest defaults: @@ -58,5 +58,5 @@ jobs: - name: Build project and run ctest run: cmake --build build --target main - - name: Run ctest - run: cmake --build build --target coverage + - name: Run analyze + run: cmake --build build --target analyze From 933d04cc3fb7cc1aea31d34ddbe5b98c570fc9a2 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 19:46:26 +0300 Subject: [PATCH 29/64] try add artifacts and fix analyze --- .github/workflows/ci.yml | 18 +++++++++++++++--- .gitignore | 2 ++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e48abcb..d48d381 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: uses: actions/checkout@v2 - name: Set up CMake - uses: jwlawson/actions-setup-cmake@v1 + uses: jwlawson/actions-setup-cmake@v2 - name: Install dependencies run: sudo apt-get install -y gcovr lcov @@ -35,6 +35,12 @@ jobs: - name: Run ctest run: cmake --build build --target coverage + - name: uppload cov report + uses: actions/upload-artifact@v4 + with: + name: cov_report + path: coverage/ + analyze: runs-on: ubuntu-latest @@ -47,10 +53,10 @@ jobs: uses: actions/checkout@v2 - name: Set up CMake - uses: jwlawson/actions-setup-cmake@v1 + uses: jwlawson/actions-setup-cmake@v2 - name: Install dependencies - run: sudo apt-get install -y gcc g++ cmake clang-tidy + run: sudo apt-get install -y gcc g++ clang-tidy clang - name: Configure CMake run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan @@ -60,3 +66,9 @@ jobs: - name: Run analyze run: cmake --build build --target analyze + + - name: uppload clang-tidy report + uses: actions/upload-artifact@v4 + with: + name: clang-tidy-report + path: build/analyzer/ diff --git a/.gitignore b/.gitignore index ba1dfaf..d8d2017 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ **/out compile_commands.json coverage +05_hw/build +05_hw/venv From fc81b01aeabc7614fc941fa2c6ae21e6242b7b1b Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 19:53:02 +0300 Subject: [PATCH 30/64] add ls --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d48d381..4ee4502 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,6 +35,9 @@ jobs: - name: Run ctest run: cmake --build build --target coverage + - name: ls + run: tree -d ./ + - name: uppload cov report uses: actions/upload-artifact@v4 with: From 3bded607ccd262426b7ea07f3146671ec368344d Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 19:58:05 +0300 Subject: [PATCH 31/64] try add clang tools --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4ee4502..746f05c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,7 +36,7 @@ jobs: run: cmake --build build --target coverage - name: ls - run: tree -d ./ + run: tree -d ./coverage/ - name: uppload cov report uses: actions/upload-artifact@v4 @@ -59,7 +59,7 @@ jobs: uses: jwlawson/actions-setup-cmake@v2 - name: Install dependencies - run: sudo apt-get install -y gcc g++ clang-tidy clang + run: sudo apt-get install -y gcc g++ clang-tidy clang clang-tools - name: Configure CMake run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan From 2ac60bac3ac27646ce7c43bab989bfe0fc18d903 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 20:20:28 +0300 Subject: [PATCH 32/64] add more logging --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 746f05c..5e04cc5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,7 +36,7 @@ jobs: run: cmake --build build --target coverage - name: ls - run: tree -d ./coverage/ + run: tree -d ./coverage/ && ls -lah ./coverage/ - name: uppload cov report uses: actions/upload-artifact@v4 From 027ece25722219b7124fb20827d7ea79b7e66e71 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 20:21:59 +0300 Subject: [PATCH 33/64] fix path --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5e04cc5..3704caa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,7 +42,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: cov_report - path: coverage/ + path: ./coverage/ analyze: runs-on: ubuntu-latest From 026ecd5e2e512f6672c2964c20de4185b469d7f3 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 20:42:26 +0300 Subject: [PATCH 34/64] try fix coverage --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3704caa..2a2a787 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,13 +36,13 @@ jobs: run: cmake --build build --target coverage - name: ls - run: tree -d ./coverage/ && ls -lah ./coverage/ + run: ls -lah ./coverage/ - name: uppload cov report uses: actions/upload-artifact@v4 with: - name: cov_report - path: ./coverage/ + name: cov-report + path: coverage/index.html analyze: runs-on: ubuntu-latest @@ -71,7 +71,7 @@ jobs: run: cmake --build build --target analyze - name: uppload clang-tidy report - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: name: clang-tidy-report path: build/analyzer/ From b1065714b2a6e4eee2809f986f9b70818b80a77b Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 20:49:03 +0300 Subject: [PATCH 35/64] try mv report --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2a2a787..8747b52 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,6 +38,9 @@ jobs: - name: ls run: ls -lah ./coverage/ + - name: mv + run: mv coverage /coverage + - name: uppload cov report uses: actions/upload-artifact@v4 with: From 687442d7a0fb5f02537f19766b17501b8f2e5cb3 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 20:52:00 +0300 Subject: [PATCH 36/64] fix version uppload report --- .github/workflows/ci.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8747b52..4e595af 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,11 +38,8 @@ jobs: - name: ls run: ls -lah ./coverage/ - - name: mv - run: mv coverage /coverage - - name: uppload cov report - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v3 with: name: cov-report path: coverage/index.html From d62c2cdf8716263cba97b134a21a2b675a9ceb9c Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 20:54:13 +0300 Subject: [PATCH 37/64] fix path --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e595af..5512fa9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,7 +42,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: cov-report - path: coverage/index.html + path: 05_hw/coverage/index.html analyze: runs-on: ubuntu-latest From f2dbacab691c3ec44f9d5603a138ff69716865b0 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 20:57:05 +0300 Subject: [PATCH 38/64] now last fix --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5512fa9..7360119 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,10 +39,10 @@ jobs: run: ls -lah ./coverage/ - name: uppload cov report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: cov-report - path: 05_hw/coverage/index.html + path: 05_hw/coverage/ analyze: runs-on: ubuntu-latest From d1838ec2b35394612bf8564f5019bd831cb30d13 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 21:29:46 +0300 Subject: [PATCH 39/64] try install cmake default --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7360119..9a951bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,11 +55,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 - - name: Set up CMake - uses: jwlawson/actions-setup-cmake@v2 + # - name: Set up CMake + # uses: jwlawson/actions-setup-cmake@v2 - name: Install dependencies - run: sudo apt-get install -y gcc g++ clang-tidy clang clang-tools + run: sudo apt-get install -y cmake clang-tidy clang clang-tools - name: Configure CMake run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan @@ -71,7 +71,7 @@ jobs: run: cmake --build build --target analyze - name: uppload clang-tidy report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: clang-tidy-report - path: build/analyzer/ + path: hw_05/build/analyzer/ From b0ac287c9ed94d78a960c5c1a6d60907ceadbcb7 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 22:51:04 +0300 Subject: [PATCH 40/64] check analyzer --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9a951bb..25cd87b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,6 +61,9 @@ jobs: - name: Install dependencies run: sudo apt-get install -y cmake clang-tidy clang clang-tools + - name: Check analyzer + run: analyze-build --help + - name: Configure CMake run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan From 5850f1f4637d9e0b4aac41f51886edb2ff5b9146 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 22:59:08 +0300 Subject: [PATCH 41/64] add mor info --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 25cd87b..6f2b672 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,10 +59,10 @@ jobs: # uses: jwlawson/actions-setup-cmake@v2 - name: Install dependencies - run: sudo apt-get install -y cmake clang-tidy clang clang-tools + run: sudo apt-get install -y cmake clang-tidy clang clang-tools clang-tools-extra - name: Check analyzer - run: analyze-build --help + run: python3 --version && dpkg -L clang-tools && analyze-build --help - name: Configure CMake run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan From 08cf6d34aa5d6deca108445ac429ac8937ffdebd Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 22:59:57 +0300 Subject: [PATCH 42/64] clang extra not found --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6f2b672..67b9d93 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,7 +59,7 @@ jobs: # uses: jwlawson/actions-setup-cmake@v2 - name: Install dependencies - run: sudo apt-get install -y cmake clang-tidy clang clang-tools clang-tools-extra + run: sudo apt-get install -y cmake clang-tidy clang clang-tools - name: Check analyzer run: python3 --version && dpkg -L clang-tools && analyze-build --help From f3851728ceab14b8af3824f2a48381450457ee84 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 23:25:15 +0300 Subject: [PATCH 43/64] try scan build --- .github/workflows/ci.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 67b9d93..b4c6657 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -62,19 +62,20 @@ jobs: run: sudo apt-get install -y cmake clang-tidy clang clang-tools - name: Check analyzer - run: python3 --version && dpkg -L clang-tools && analyze-build --help + run: python3 --version && dpkg -L clang-tools - name: Configure CMake run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan - - name: Build project and run ctest - run: cmake --build build --target main + - name: Build project and run scan + run: scan-build -o ./scan-build-out cmake --build build --target main - - name: Run analyze - run: cmake --build build --target analyze + # - name: Run analyze + # run: cmake --build build --target analyze - name: uppload clang-tidy report uses: actions/upload-artifact@v4 with: name: clang-tidy-report - path: hw_05/build/analyzer/ + # path: hw_05/build/analyzer/ + path: hw_05/scan-build-out/ From e021ab01c283171fe2f765a7df08132dc4505d0f Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 23:33:53 +0300 Subject: [PATCH 44/64] try add memory leak --- 05_hw/src/stack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/05_hw/src/stack.c b/05_hw/src/stack.c index 1f2a782..1d29cea 100644 --- a/05_hw/src/stack.c +++ b/05_hw/src/stack.c @@ -35,7 +35,7 @@ void pop(Stack* stack) { } Node* temp = stack->top; stack->top = stack->top->next; - free(temp); + // free(temp); temp = NULL; } From 30e48669822e8d9dbbcb1809f5660d529eba7a8e Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 23:51:07 +0300 Subject: [PATCH 45/64] try add make command --- .github/workflows/ci.yml | 5 ++++- 05_hw/src/stack.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4c6657..f084db5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,10 @@ jobs: run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan - name: Build project and run scan - run: scan-build -o ./scan-build-out cmake --build build --target main + run: -| + scan-build -o ./scan-build-out cmake --build build --target main + ce build + scan-build -o ../scan-build-out make # - name: Run analyze # run: cmake --build build --target analyze diff --git a/05_hw/src/stack.c b/05_hw/src/stack.c index 1d29cea..4a31af2 100644 --- a/05_hw/src/stack.c +++ b/05_hw/src/stack.c @@ -36,7 +36,7 @@ void pop(Stack* stack) { Node* temp = stack->top; stack->top = stack->top->next; // free(temp); - temp = NULL; + // temp = NULL; } Node* searchByValue(Stack* stack, int value) { From 7e02107574c1bd46b1797ea120932b252f307a2c Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 23:53:02 +0300 Subject: [PATCH 46/64] fix commands --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f084db5..323912a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -69,9 +69,9 @@ jobs: - name: Build project and run scan run: -| - scan-build -o ./scan-build-out cmake --build build --target main - ce build - scan-build -o ../scan-build-out make + scan-build -o ./scan-build-out cmake --build build --target main \ + && cd build \ + && scan-build -o ../scan-build-out make # - name: Run analyze # run: cmake --build build --target analyze From 808c871df37bf58c570c5ca29aaa3fe969766360 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 23:54:11 +0300 Subject: [PATCH 47/64] fix again --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 323912a..63e4cf1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -69,8 +69,8 @@ jobs: - name: Build project and run scan run: -| - scan-build -o ./scan-build-out cmake --build build --target main \ - && cd build \ + scan-build -o ./scan-build-out cmake --build build --target main + && cd build && scan-build -o ../scan-build-out make # - name: Run analyze From ecffa78cb00b4e36ddd95f5406a4234cf9a4ae95 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sat, 30 Nov 2024 23:58:58 +0300 Subject: [PATCH 48/64] fix first command --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 63e4cf1..e155db0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,8 +68,7 @@ jobs: run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan - name: Build project and run scan - run: -| - scan-build -o ./scan-build-out cmake --build build --target main + run: scan-build -o ./scan-build-out cmake --build build --target main && cd build && scan-build -o ../scan-build-out make From 6522c83f46fb5825ce119a791dcd90e040422055 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 00:03:02 +0300 Subject: [PATCH 49/64] add variable error --- 05_hw/src/stack.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/05_hw/src/stack.c b/05_hw/src/stack.c index 4a31af2..85cbafb 100644 --- a/05_hw/src/stack.c +++ b/05_hw/src/stack.c @@ -17,7 +17,7 @@ void initStack(Stack* stack) { void destroyStack(Stack* stack) { Node* current = stack->top; while (current != NULL) { - Node* tmp = current; + // Node* tmp = current; current = current->next; free(tmp); } @@ -35,8 +35,8 @@ void pop(Stack* stack) { } Node* temp = stack->top; stack->top = stack->top->next; - // free(temp); - // temp = NULL; + free(temp); + temp = NULL; } Node* searchByValue(Stack* stack, int value) { From ddca54f3407a630a600cd93180310f1876bbf2ac Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:11:42 +0300 Subject: [PATCH 50/64] add leak again --- 05_hw/src/stack.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/05_hw/src/stack.c b/05_hw/src/stack.c index 85cbafb..1d29cea 100644 --- a/05_hw/src/stack.c +++ b/05_hw/src/stack.c @@ -17,7 +17,7 @@ void initStack(Stack* stack) { void destroyStack(Stack* stack) { Node* current = stack->top; while (current != NULL) { - // Node* tmp = current; + Node* tmp = current; current = current->next; free(tmp); } @@ -35,7 +35,7 @@ void pop(Stack* stack) { } Node* temp = stack->top; stack->top = stack->top->next; - free(temp); + // free(temp); temp = NULL; } From 55fc406b3c48821988cd834c429240a2980c95ff Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:11:54 +0300 Subject: [PATCH 51/64] add leak flag for build --- 05_hw/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/05_hw/CMakeLists.txt b/05_hw/CMakeLists.txt index 32d5a47..83c9fa1 100644 --- a/05_hw/CMakeLists.txt +++ b/05_hw/CMakeLists.txt @@ -33,17 +33,17 @@ else() endif() set(CMAKE_C_FLAGS_ASAN - "${CMAKE_C_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined" CACHE STRING + "${CMAKE_C_FLAGS_DEBUG} -fsanitize=address,undefined,leak -fno-omit-frame-pointer" CACHE STRING "Flags used by the C compiler for Asan build type or configuration." FORCE) set(CMAKE_CXX_FLAGS_ASAN - "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined" CACHE STRING + "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address,undefined,leak -fno-omit-frame-pointer" CACHE STRING "Flags used by the C++ compiler for Asan build type or configuration." FORCE) set(CMAKE_EXE_LINKER_FLAGS_ASAN - "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=address -fsanitize=undefined" CACHE STRING + "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=address,undefined,leak" CACHE STRING "Linker flags to be used to create executables for Asan build type." FORCE) set(CMAKE_SHARED_LINKER_FLAGS_ASAN - "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=address -fsanitize=undefined" CACHE STRING + "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fsanitize=address,undefined,leak" CACHE STRING "Linker lags to be used to create shared libraries for Asan build type." FORCE) From e1cde8d7b44f045d4e381b3331a33b01d708f975 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:29:46 +0300 Subject: [PATCH 52/64] try add llvm --- .github/workflows/ci.yml | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e155db0..3e72bed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,11 +55,18 @@ jobs: - name: Checkout repository uses: actions/checkout@v2 - # - name: Set up CMake - # uses: jwlawson/actions-setup-cmake@v2 + - name: Set up CMake + uses: jwlawson/actions-setup-cmake@v2 - name: Install dependencies - run: sudo apt-get install -y cmake clang-tidy clang clang-tools + run: | + sudo apt-get update + sudo apt-get install build-essential software-properties-common + sudo apt-add-repository “deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main” + sudo apt-get install llvm-15 + llvm-config --version + sudo apt-get install clang-15 lld-15 lldb-15 llvm-15-dev llvm-15-tools + env - name: Check analyzer run: python3 --version && dpkg -L clang-tools @@ -68,12 +75,13 @@ jobs: run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan - name: Build project and run scan - run: scan-build -o ./scan-build-out cmake --build build --target main - && cd build - && scan-build -o ../scan-build-out make + run: cmake --build --target main + # run: scan-build -o ./scan-build-out cmake --build build --target main + # && cd build + # && scan-build -o ../scan-build-out make - # - name: Run analyze - # run: cmake --build build --target analyze + - name: Run analyze + run: cmake --build build --target analyze - name: uppload clang-tidy report uses: actions/upload-artifact@v4 From 831167a7505974ee498cecc688711c2dd5916a36 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:31:17 +0300 Subject: [PATCH 53/64] fix repo path --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e72bed..d9cac5e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -62,7 +62,7 @@ jobs: run: | sudo apt-get update sudo apt-get install build-essential software-properties-common - sudo apt-add-repository “deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main” + sudo apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main" sudo apt-get install llvm-15 llvm-config --version sudo apt-get install clang-15 lld-15 lldb-15 llvm-15-dev llvm-15-tools @@ -87,5 +87,5 @@ jobs: uses: actions/upload-artifact@v4 with: name: clang-tidy-report - # path: hw_05/build/analyzer/ - path: hw_05/scan-build-out/ + path: hw_05/build/analyzer/ + # path: hw_05/scan-build-out/ From 3f8c640c9a1955b1cac7d71dad3026ae384e9798 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:34:41 +0300 Subject: [PATCH 54/64] try llvm install via script --- .github/workflows/ci.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d9cac5e..56931bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,12 +60,15 @@ jobs: - name: Install dependencies run: | - sudo apt-get update - sudo apt-get install build-essential software-properties-common - sudo apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main" - sudo apt-get install llvm-15 - llvm-config --version - sudo apt-get install clang-15 lld-15 lldb-15 llvm-15-dev llvm-15-tools + # sudo apt-get update + # sudo apt-get install build-essential software-properties-common + # sudo apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main" + # sudo apt-get install llvm-15 + # llvm-config --version + # sudo apt-get install clang-15 lld-15 lldb-15 llvm-15-dev llvm-15-tools + sudo wget https://apt.llvm.org/llvm.sh + sudo chmod +x llvm.sh + sudo ./llvm.sh 17 env - name: Check analyzer From 1ac9a4469c1b149f59180e27c9a2ac0f815e0221 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:36:57 +0300 Subject: [PATCH 55/64] fix job --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 56931bf..be5d408 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,15 +64,15 @@ jobs: # sudo apt-get install build-essential software-properties-common # sudo apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main" # sudo apt-get install llvm-15 - # llvm-config --version # sudo apt-get install clang-15 lld-15 lldb-15 llvm-15-dev llvm-15-tools sudo wget https://apt.llvm.org/llvm.sh sudo chmod +x llvm.sh sudo ./llvm.sh 17 + llvm-config --version env - name: Check analyzer - run: python3 --version && dpkg -L clang-tools + run: sudo find / -iname analyze-build - name: Configure CMake run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan From 7c7a5865fe7ccbb72ce87627c3eababa8f40c47b Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:38:54 +0300 Subject: [PATCH 56/64] fix again --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index be5d408..74d3628 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,8 @@ jobs: sudo wget https://apt.llvm.org/llvm.sh sudo chmod +x llvm.sh sudo ./llvm.sh 17 - llvm-config --version + # llvm-config --version + clang --version env - name: Check analyzer From 93204e68ede4e648bc8c0298504d899798d4f6bc Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:42:31 +0300 Subject: [PATCH 57/64] fix build and add env --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 74d3628..d907736 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,6 +70,8 @@ jobs: sudo ./llvm.sh 17 # llvm-config --version clang --version + export $LLVM_HOME=/usr/lib/llvm-15 + export $PATH=$LLVM_HOME/bin:$PATH env - name: Check analyzer @@ -79,7 +81,7 @@ jobs: run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan - name: Build project and run scan - run: cmake --build --target main + run: cmake --build build --target main # run: scan-build -o ./scan-build-out cmake --build build --target main # && cd build # && scan-build -o ../scan-build-out make From f29366db99775ae0004e510f215a74031e341e19 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:48:39 +0300 Subject: [PATCH 58/64] fix adding env --- .github/workflows/ci.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d907736..53a2380 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,10 +70,16 @@ jobs: sudo ./llvm.sh 17 # llvm-config --version clang --version - export $LLVM_HOME=/usr/lib/llvm-15 - export $PATH=$LLVM_HOME/bin:$PATH env + - name: Add directory to PATH + run: | + echo "/usr/lib/llvm-15/bin" >> $GITHUB_PATH + echo "Added to PATH" + + - name: Verify PATH + run: env + - name: Check analyzer run: sudo find / -iname analyze-build From a8c35e6c93eb8a6e127b6ada1a3d21a8eb6b8902 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:56:01 +0300 Subject: [PATCH 59/64] rm unused code --- .github/workflows/ci.yml | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53a2380..f24a9ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,44 +60,32 @@ jobs: - name: Install dependencies run: | - # sudo apt-get update - # sudo apt-get install build-essential software-properties-common - # sudo apt-add-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-15 main" - # sudo apt-get install llvm-15 - # sudo apt-get install clang-15 lld-15 lldb-15 llvm-15-dev llvm-15-tools sudo wget https://apt.llvm.org/llvm.sh sudo chmod +x llvm.sh sudo ./llvm.sh 17 - # llvm-config --version - clang --version - env - name: Add directory to PATH run: | echo "/usr/lib/llvm-15/bin" >> $GITHUB_PATH echo "Added to PATH" - - name: Verify PATH - run: env - - name: Check analyzer - run: sudo find / -iname analyze-build + run: analyze-build - name: Configure CMake run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan - name: Build project and run scan run: cmake --build build --target main - # run: scan-build -o ./scan-build-out cmake --build build --target main - # && cd build - # && scan-build -o ../scan-build-out make - name: Run analyze - run: cmake --build build --target analyze + run: | + cmake --build build --target analyze + scan-view ./build/analyzer/ + ls ./build/analyzer - name: uppload clang-tidy report uses: actions/upload-artifact@v4 with: name: clang-tidy-report path: hw_05/build/analyzer/ - # path: hw_05/scan-build-out/ From f980e3ee42025f5198e36d5af0d17fa491c13c6e Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 01:57:57 +0300 Subject: [PATCH 60/64] fix help msg --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f24a9ec..ff2a57a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,7 +70,7 @@ jobs: echo "Added to PATH" - name: Check analyzer - run: analyze-build + run: analyze-build --help - name: Configure CMake run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan From ed9c22a59f075c6895e363403a08ae47b6bfde93 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 02:00:14 +0300 Subject: [PATCH 61/64] rewrite view --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ff2a57a..edab7c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,8 +81,8 @@ jobs: - name: Run analyze run: | cmake --build build --target analyze - scan-view ./build/analyzer/ ls ./build/analyzer + ls ./build/analyzer/**/ - name: uppload clang-tidy report uses: actions/upload-artifact@v4 From 64c54d6e2b65bc75a7fa300192757664afd9bedc Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 02:04:24 +0300 Subject: [PATCH 62/64] fix artifact path --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index edab7c1..2ec1072 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,11 +81,10 @@ jobs: - name: Run analyze run: | cmake --build build --target analyze - ls ./build/analyzer ls ./build/analyzer/**/ - name: uppload clang-tidy report uses: actions/upload-artifact@v4 with: name: clang-tidy-report - path: hw_05/build/analyzer/ + path: 05_hw/build/analyzer/ From 5270adf4cf2912b69132198caa609c22e7075c09 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 02:09:14 +0300 Subject: [PATCH 63/64] revert leak bug --- 05_hw/src/stack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/05_hw/src/stack.c b/05_hw/src/stack.c index 1d29cea..1f2a782 100644 --- a/05_hw/src/stack.c +++ b/05_hw/src/stack.c @@ -35,7 +35,7 @@ void pop(Stack* stack) { } Node* temp = stack->top; stack->top = stack->top->next; - // free(temp); + free(temp); temp = NULL; } From ec217f13701da728d53cda559ce00f953de7b5d3 Mon Sep 17 00:00:00 2001 From: Ilia Novikov WorkB Date: Sun, 1 Dec 2024 02:11:56 +0300 Subject: [PATCH 64/64] rm logging from ci --- .github/workflows/ci.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ec1072..fdcda43 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -69,9 +69,6 @@ jobs: echo "/usr/lib/llvm-15/bin" >> $GITHUB_PATH echo "Added to PATH" - - name: Check analyzer - run: analyze-build --help - - name: Configure CMake run: cmake -B build -S . -DCMAKE_EXPORT_COMPILE_COMMANDS=True -DCMAKE_BUILD_TYPE=Asan @@ -79,9 +76,7 @@ jobs: run: cmake --build build --target main - name: Run analyze - run: | - cmake --build build --target analyze - ls ./build/analyzer/**/ + run: cmake --build build --target analyze - name: uppload clang-tidy report uses: actions/upload-artifact@v4