From f5daa327354221fd26acb7cd71576b864b3bb7fd Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 22:53:16 +0300 Subject: [PATCH 01/13] lab1 --- .github/workflows/sonarcloud.yml | 37 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index e784069..4267350 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -30,18 +30,18 @@ name: SonarCloud analysis on: push: - branches: [ "master" ] + branches: ["master"] pull_request: - branches: [ "master" ] + branches: ["master"] workflow_dispatch: permissions: - pull-requests: read # allows SonarCloud to decorate PRs with analysis results + pull-requests: read jobs: sonar-check: name: Sonar Check - runs-on: windows-latest # безпечно для будь-яких .NET проектів + runs-on: windows-latest steps: - uses: actions/checkout@v4 with: { fetch-depth: 0 } @@ -50,26 +50,27 @@ jobs: with: dotnet-version: '8.0.x' - # 1) BEGIN: SonarScanner for .NET - name: SonarScanner Begin - run: | - dotnet tool install --global dotnet-sonarscanner - echo "$env:USERPROFILE\.dotnet\tools" >> $env:GITHUB_PATH - dotnet sonarscanner begin ` - /k:"ppanchen_NetSdrClient" ` - /o:"ppanchen" ` - /d:sonar.token="${{ secrets.SONAR_TOKEN }}" ` - /d:sonar.cs.opencover.reportsPaths="**/coverage.xml" ` - /d:sonar.cpd.cs.minimumTokens=40 ` - /d:sonar.cpd.cs.minimumLines=5 ` - /d:sonar.exclusions=**/bin/**,**/obj/**,**/sonarcloud.yml ` - /d:sonar.qualitygate.wait=true + run: | + dotnet tool install --global dotnet-sonarscanner + echo "$env:USERPROFILE\.dotnet\tools" >> $env:GITHUB_PATH + dotnet sonarscanner begin ` + /d:sonar.projectKey="friezze_ReengineeringCourse" ` + /d:sonar.organization="friezze" ` + /d:sonar.token="${{ secrets.SONAR_TOKEN }}" ` + /d:sonar.cs.opencover.reportsPaths="**/coverage.xml" ` + /d:sonar.cpd.cs.minimumTokens=40 ` + /d:sonar.cpd.cs.minimumLines=5 ` + /d:sonar.exclusions=**/bin/**,**/obj/**,**/sonarcloud.yml ` + /d:sonar.qualitygate.wait=true shell: pwsh - # 2) BUILD & TEST + - name: Restore run: dotnet restore NetSdrClient.sln + - name: Build run: dotnet build NetSdrClient.sln -c Release --no-restore + #- name: Tests with coverage (OpenCover) # run: | # dotnet test NetSdrClientAppTests/NetSdrClientAppTests.csproj -c Release --no-build ` From 2534516c319a38d4aecd5d70a4e93c0869613003 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 22:57:34 +0300 Subject: [PATCH 02/13] lab1 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b3a9029..0680e14 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=ppanchen_NetSdrClient&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=ppanchen_NetSdrClient) + Цей репозиторій використовується для курсу **реінжиніринг ПЗ**. Мета — провести комплексний реінжиніринг спадкового коду NetSdrClient, включаючи рефакторинг архітектури, покращення якості коду, впровадження сучасних практик розробки та автоматизацію процесів контролю якості через CI/CD пайплайни. From ba99cf90ef43cdbe9e07a3f830a8b565e436658d Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 23:14:49 +0300 Subject: [PATCH 03/13] lab1_readme_after_lr --- README.md | 9 +++++++++ image-1.png | Bin 0 -> 29571 bytes image.png | Bin 0 -> 33424 bytes 3 files changed, 9 insertions(+) create mode 100644 image-1.png create mode 100644 image.png diff --git a/README.md b/README.md index 0680e14..159c28f 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,15 @@ +## Тут все пов'язане з виконанням самих лаб +# 1 +![Чек сонарклауда з форка репозиторія](image.png) +![Бейджі](image-1.png) +Лінк на коміт +''' +https://github.com/friezze/ReengineeringCourse/commit/2534516c319a38d4aecd5d70a4e93c086961300 +''' + Цей репозиторій використовується для курсу **реінжиніринг ПЗ**. Мета — провести комплексний реінжиніринг спадкового коду NetSdrClient, включаючи рефакторинг архітектури, покращення якості коду, впровадження сучасних практик розробки та автоматизацію процесів контролю якості через CI/CD пайплайни. diff --git a/image-1.png b/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7452d1b3849c4b592dc064d32dca244bb34e92 GIT binary patch literal 29571 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 bX1*XL`2I}H|6N7!C*g;%v`~eBuJ8W=y&ZGw literal 0 HcmV?d00001 From aa6e54d2f6cefa14d5a016169c80a44933d957d7 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 23:19:28 +0300 Subject: [PATCH 04/13] minor fix 1 --- NetSdrClientApp/NetSdrClient.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NetSdrClientApp/NetSdrClient.cs b/NetSdrClientApp/NetSdrClient.cs index b0a7c05..c4908a6 100644 --- a/NetSdrClientApp/NetSdrClient.cs +++ b/NetSdrClientApp/NetSdrClient.cs @@ -14,8 +14,8 @@ namespace NetSdrClientApp { public class NetSdrClient { - private ITcpClient _tcpClient; - private IUdpClient _udpClient; + private readonly ITcpClient _tcpClient; + private readonly IUdpClient _udpClient; public bool IQStarted { get; set; } From 5d5d3acbdf7e73ca47df644ab532e47b61959ba8 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 23:21:17 +0300 Subject: [PATCH 05/13] minor fix 2 --- NetSdrClientApp/NetSdrClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NetSdrClientApp/NetSdrClient.cs b/NetSdrClientApp/NetSdrClient.cs index c4908a6..dbf6cb8 100644 --- a/NetSdrClientApp/NetSdrClient.cs +++ b/NetSdrClientApp/NetSdrClient.cs @@ -66,7 +66,7 @@ public async Task StartIQAsync() return; } -; var iqDataMode = (byte)0x80; + var iqDataMode = (byte)0x80; var start = (byte)0x02; var fifo16bitCaptureMode = (byte)0x01; var n = (byte)1; From 710dc1eec4eb3bcdc9b3de4493fe6016421c87cb Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 23:22:05 +0300 Subject: [PATCH 06/13] minor fix 3 --- NetSdrClientApp/NetSdrClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NetSdrClientApp/NetSdrClient.cs b/NetSdrClientApp/NetSdrClient.cs index dbf6cb8..0c2cf22 100644 --- a/NetSdrClientApp/NetSdrClient.cs +++ b/NetSdrClientApp/NetSdrClient.cs @@ -114,7 +114,7 @@ public async Task ChangeFrequencyAsync(long hz, int channel) await SendTcpRequest(msg); } - private void _udpClient_MessageReceived(object? sender, byte[] e) + private static void _udpClient_MessageReceived(object? sender, byte[] e) { NetSdrMessageHelper.TranslateMessage(e, out MsgTypes type, out ControlItemCodes code, out ushort sequenceNum, out byte[] body); var samples = NetSdrMessageHelper.GetSamples(16, body); From a7ad091afa8e321a21fea8d9a87812f0f6fdb4fd Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 23:23:04 +0300 Subject: [PATCH 07/13] minor fix 4 --- NetSdrClientApp/NetSdrClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NetSdrClientApp/NetSdrClient.cs b/NetSdrClientApp/NetSdrClient.cs index 0c2cf22..315adf9 100644 --- a/NetSdrClientApp/NetSdrClient.cs +++ b/NetSdrClientApp/NetSdrClient.cs @@ -116,7 +116,7 @@ public async Task ChangeFrequencyAsync(long hz, int channel) private static void _udpClient_MessageReceived(object? sender, byte[] e) { - NetSdrMessageHelper.TranslateMessage(e, out MsgTypes type, out ControlItemCodes code, out ushort sequenceNum, out byte[] body); + NetSdrMessageHelper.TranslateMessage(e, out _, out _, out _, out byte[] body); var samples = NetSdrMessageHelper.GetSamples(16, body); Console.WriteLine($"Samples recieved: " + body.Select(b => Convert.ToString(b, toBase: 16)).Aggregate((l, r) => $"{l} {r}")); From 31b9a38d87f3eccd8444c677342e598a6b83461d Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 23:24:08 +0300 Subject: [PATCH 08/13] minor fix 5 --- NetSdrClientApp/NetSdrClient.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NetSdrClientApp/NetSdrClient.cs b/NetSdrClientApp/NetSdrClient.cs index 315adf9..fbd8d3e 100644 --- a/NetSdrClientApp/NetSdrClient.cs +++ b/NetSdrClientApp/NetSdrClient.cs @@ -153,7 +153,7 @@ private async Task SendTcpRequest(byte[] msg) private void _tcpClient_MessageReceived(object? sender, byte[] e) { - //TODO: add Unsolicited messages handling here + //NOTE: add Unsolicited messages handling here if (responseTaskSource != null) { responseTaskSource.SetResult(e); From 7c640bbda73442bf44ca44ca61fd528bf91b4333 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 23:36:33 +0300 Subject: [PATCH 09/13] README update --- README.md | 7 +++++++ image-2.png | Bin 0 -> 27580 bytes 2 files changed, 7 insertions(+) create mode 100644 image-2.png diff --git a/README.md b/README.md index 159c28f..bb24f64 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,13 @@ https://github.com/friezze/ReengineeringCourse/commit/2534516c319a38d4aecd5d70a4e93c086961300 ''' +# 2 + +До змін +![alt text](image-2.png) +Після + + Цей репозиторій використовується для курсу **реінжиніринг ПЗ**. Мета — провести комплексний реінжиніринг спадкового коду NetSdrClient, включаючи рефакторинг архітектури, покращення якості коду, впровадження сучасних практик розробки та автоматизацію процесів контролю якості через CI/CD пайплайни. diff --git a/image-2.png b/image-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9f7abaf15be3adedd40a993347cb0a9da1ab5d GIT binary patch literal 27580 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 z�ZV;zyM#RJ#=Efj#-<3;#Vw#3$3; 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

|UETNkp2X%LH9K9mX6!T;PwQ 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 Date: Mon, 1 Jun 2026 23:41:05 +0300 Subject: [PATCH 10/13] minor fix --- .github/workflows/sonarcloud.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 4267350..2e4251b 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -48,7 +48,7 @@ jobs: - uses: actions/setup-dotnet@v4 with: - dotnet-version: '8.0.x' + dotnet-version: "8.0.x" - name: SonarScanner Begin run: | @@ -61,7 +61,7 @@ jobs: /d:sonar.cs.opencover.reportsPaths="**/coverage.xml" ` /d:sonar.cpd.cs.minimumTokens=40 ` /d:sonar.cpd.cs.minimumLines=5 ` - /d:sonar.exclusions=**/bin/**,**/obj/**,**/sonarcloud.yml ` + /d:sonar.exclusions="**/bin/**,**/obj/**,**/sonarcloud.yml" ` /d:sonar.qualitygate.wait=true shell: pwsh From 25ac81feb7042423ff3074d4f8e092a286b1fc13 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 23:44:28 +0300 Subject: [PATCH 11/13] minor fix --- .github/workflows/sonarcloud.yml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 2e4251b..cbbf0f2 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -51,18 +51,11 @@ jobs: dotnet-version: "8.0.x" - name: SonarScanner Begin - run: | - dotnet tool install --global dotnet-sonarscanner - echo "$env:USERPROFILE\.dotnet\tools" >> $env:GITHUB_PATH - dotnet sonarscanner begin ` - /d:sonar.projectKey="friezze_ReengineeringCourse" ` - /d:sonar.organization="friezze" ` - /d:sonar.token="${{ secrets.SONAR_TOKEN }}" ` - /d:sonar.cs.opencover.reportsPaths="**/coverage.xml" ` - /d:sonar.cpd.cs.minimumTokens=40 ` - /d:sonar.cpd.cs.minimumLines=5 ` - /d:sonar.exclusions="**/bin/**,**/obj/**,**/sonarcloud.yml" ` - /d:sonar.qualitygate.wait=true + run: | + dotnet tool install --global dotnet-sonarscanner + echo "$env:USERPROFILE\.dotnet\tools" >> $env:GITHUB_PATH + dotnet sonarscanner begin /k:"friezze_ReengineeringCourse" /o:"friezze" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.cs.opencover.reportsPaths="**/coverage.xml" /d:sonar.cpd.cs.minimumTokens=40 /d:sonar.cpd.cs.minimumLines=5 /d:sonar.exclusions="**/bin/**,**/obj/**,**/sonarcloud.yml" /d:sonar.qualitygate.wait=true + shell: pwsh shell: pwsh - name: Restore From f7b3e84767dab143d234bd3a05e6488b01e9f144 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 1 Jun 2026 23:46:51 +0300 Subject: [PATCH 12/13] minor fix --- .github/workflows/sonarcloud.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index cbbf0f2..4d17f98 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -54,8 +54,7 @@ jobs: run: | dotnet tool install --global dotnet-sonarscanner echo "$env:USERPROFILE\.dotnet\tools" >> $env:GITHUB_PATH - dotnet sonarscanner begin /k:"friezze_ReengineeringCourse" /o:"friezze" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.cs.opencover.reportsPaths="**/coverage.xml" /d:sonar.cpd.cs.minimumTokens=40 /d:sonar.cpd.cs.minimumLines=5 /d:sonar.exclusions="**/bin/**,**/obj/**,**/sonarcloud.yml" /d:sonar.qualitygate.wait=true - shell: pwsh + dotnet sonarscanner begin /k:"friezze_ReengineeringCourse" /o:"friezze" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.cs.opencover.reportsPaths="**/coverage.xml" /d:sonar.cpd.cs.minimumTokens=40 /d:sonar.cpd.cs.minimumLines=5 /d:sonar.exclusions="**/bin/**,**/obj/**,**/sonarcloud.yml" /d:sonar.qualitygate.wait=true shell: pwsh - name: Restore From 890a88a0c61c825e8e7a5fad5bfff1ed897fb1b2 Mon Sep 17 00:00:00 2001 From: Nikita Date: Tue, 2 Jun 2026 00:09:59 +0300 Subject: [PATCH 13/13] README update --- README.md | 2 ++ image-3.png | Bin 0 -> 36291 bytes 2 files changed, 2 insertions(+) create mode 100644 image-3.png diff --git a/README.md b/README.md index bb24f64..12fad0b 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ https://github.com/friezze/ReengineeringCourse/commit/2534516c319a38d4aecd5d70a4 До змін ![alt text](image-2.png) Після +![alt text](image-3.png) +Може здатися дивним що їх стало більше але скоріше за все це тому що пофіксився білдер через зміни в які я лив в мейн і мерджив в гілку але сонар аналізував пуши в мейн а тік злиття. Але у будьякому випадку 8 фіксед. Цей репозиторій використовується для курсу **реінжиніринг ПЗ**. diff --git a/image-3.png b/image-3.png new file mode 100644 index 0000000000000000000000000000000000000000..d50e72f7875366cab61d8122d7591ce7de83520c GIT binary patch literal 36291 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%0Aogd6Qea7r~T8N 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 yRILE0+C?gO8|#s~%bNeFY!h&r