From b6ecf537cd20aa28bd9b6340e05b0a306a61810f Mon Sep 17 00:00:00 2001 From: Miha Kralj Date: Sat, 5 Oct 2024 15:36:27 -0700 Subject: [PATCH 1/2] Code Scanning fixes --- Tests/test_Trady.cs | 5 ++--- Tests/test_Tulip.cs | 6 ++---- Tests/test_talib.cs | 13 ++++++------- lib/volatility/Atr.cs | 2 +- quantower/_IndicatorBase.cs | 9 ++++----- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/Tests/test_Trady.cs b/Tests/test_Trady.cs index 00bacbab..ebf70c4e 100644 --- a/Tests/test_Trady.cs +++ b/Tests/test_Trady.cs @@ -11,7 +11,6 @@ public class TradyTests private readonly Random rnd; private readonly double range; private readonly int iterations; - private int period; private readonly int skip; private readonly IEnumerable Candles; @@ -39,7 +38,7 @@ public class TradyTests { for (int run = 0; run < iterations; run++) { - period = rnd.Next(50) + 5; + int period = rnd.Next(50) + 5; Sma ma = new(period); TSeries QL = new(); foreach (TBar item in feed) @@ -69,7 +68,7 @@ public class TradyTests { for (int run = 0; run < iterations; run++) { - period = rnd.Next(50) + 5; + int period = rnd.Next(50) + 5; Ema ma = new(period); TSeries QL = new(); foreach (TBar item in feed) diff --git a/Tests/test_Tulip.cs b/Tests/test_Tulip.cs index 4729e61b..174b4046 100644 --- a/Tests/test_Tulip.cs +++ b/Tests/test_Tulip.cs @@ -8,7 +8,6 @@ public class TulipTests private readonly GbmFeed feed; private readonly Random rnd; private readonly double range; - private int period; private readonly int iterations; private readonly double[] data; private readonly double[] outdata; @@ -32,7 +31,7 @@ public class TulipTests { for (int run = 0; run < iterations; run++) { - period = rnd.Next(50) + 5; + int period = rnd.Next(50) + 5; Sma ma = new(period); TSeries QL = new(); foreach (TBar item in feed) @@ -56,8 +55,7 @@ public class TulipTests { for (int run = 0; run < iterations; run++) { - period = rnd.Next(50) + 5; - period = 20; + int period = rnd.Next(30) + 5; Ema ma = new(period, useSma: false); TSeries QL = new(); foreach (TBar item in feed) diff --git a/Tests/test_talib.cs b/Tests/test_talib.cs index cd073b8e..dcd64c32 100644 --- a/Tests/test_talib.cs +++ b/Tests/test_talib.cs @@ -8,8 +8,7 @@ public class TAlibTests private readonly GbmFeed feed; private readonly Random rnd; private readonly double range; - private int period; - private readonly int iterations; + private readonly int iterations; private readonly double[] data; private readonly double[] TALIB; @@ -32,7 +31,7 @@ public class TAlibTests { for (int run = 0; run < iterations; run++) { - period = rnd.Next(50) + 5; + int period = rnd.Next(50) + 5; Sma ma = new(period); TSeries QL = new(); foreach (TBar item in feed) @@ -52,7 +51,7 @@ public class TAlibTests { for (int run = 0; run < iterations; run++) { - period = rnd.Next(50) + 5; + int period = rnd.Next(50) + 5; Ema ma = new(period, useSma: true); TSeries QL = new(); foreach (TBar item in feed) @@ -72,7 +71,7 @@ public class TAlibTests { for (int run = 0; run < iterations; run++) { - period = rnd.Next(50) + 5; + int period = rnd.Next(50) + 5; Dema ma = new(period); TSeries QL = new(); foreach (TBar item in feed) @@ -92,7 +91,7 @@ public class TAlibTests { for (int run = 0; run < iterations; run++) { - period = rnd.Next(50) + 5; + int period = rnd.Next(50) + 5; Tema ma = new(period); TSeries QL = new(); foreach (TBar item in feed) @@ -135,7 +134,7 @@ public class TAlibTests { for (int run = 0; run < iterations; run++) { - period = rnd.Next(50) + 5; + int period = rnd.Next(50) + 5; T3 ma = new(period, vfactor: 0.7, useSma: false); TSeries QL = new(); foreach (TBar item in feed) diff --git a/lib/volatility/Atr.cs b/lib/volatility/Atr.cs index f3167410..35a67a15 100644 --- a/lib/volatility/Atr.cs +++ b/lib/volatility/Atr.cs @@ -19,7 +19,7 @@ public class Atr : AbstractBarBase { /// /// Thrown when period is less than 1. /// - public Atr(int period) : base() { + public Atr(int period) { if (period < 1) { throw new ArgumentOutOfRangeException(nameof(period), "Period must be greater than or equal to 1."); } diff --git a/quantower/_IndicatorBase.cs b/quantower/_IndicatorBase.cs index 043fd9e1..3b0cae62 100644 --- a/quantower/_IndicatorBase.cs +++ b/quantower/_IndicatorBase.cs @@ -27,7 +27,7 @@ public abstract class IndicatorBase : Indicator, IWatchlistIndicator [InputParameter("Show cold values", sortIndex: 20)] public bool ShowColdValues { get; set; } = true; - public int MinHistoryDepths; + public int MinHistoryDepths { get; set; } // LineSeries.LineSeries(string, Color, int, LineStyle)' @@ -37,7 +37,7 @@ public abstract class IndicatorBase : Indicator, IWatchlistIndicator int IWatchlistIndicator.MinHistoryDepths => 0; - protected IndicatorBase() : base() + protected IndicatorBase() { OnBackGround = true; SeparateWindow = false; @@ -45,7 +45,6 @@ public abstract class IndicatorBase : Indicator, IWatchlistIndicator Series = new(name: $"{Name}", color: Color.Yellow, width: 2, style: LineStyle.Solid); AddLineSeries(Series); - InitIndicator(); } protected virtual void InitIndicator() @@ -95,7 +94,7 @@ public abstract class IndicatorBase : Indicator, IWatchlistIndicator { base.OnPaintChart(args); List allPoints = new List(); - if (CurrentChart == null) return; + if (CurrentChart == null) { return; } Graphics gr = args.Graphics; var mainWindow = this.CurrentChart.Windows[args.WindowIndex]; @@ -126,7 +125,7 @@ public abstract class IndicatorBase : Indicator, IWatchlistIndicator private void DrawSmoothCombinedCurve(Graphics gr, List allPoints, int hotCount) { - if (allPoints.Count < 2) return; + if (allPoints.Count < 2) { return; } using (Pen defaultPen = new(Series!.Color, Series.Width) { DashStyle = ConvertLineStyleToDashStyle(Series.Style) }) using (Pen coldPen = new(Series!.Color, Series.Width) { DashStyle = DashStyle.Dot }) From 2a09ea83433854b7eec5d8b17f45180b2de76457 Mon Sep 17 00:00:00 2001 From: Miha Kralj Date: Sat, 5 Oct 2024 19:36:01 -0700 Subject: [PATCH 2/2] sonarcloud workflow --- .github/workflows/securitycodescan.yml | 62 +++++++++++++++--------- .github/workflows/sonarcloud.yml | 67 -------------------------- 2 files changed, 39 insertions(+), 90 deletions(-) delete mode 100644 .github/workflows/sonarcloud.yml diff --git a/.github/workflows/securitycodescan.yml b/.github/workflows/securitycodescan.yml index 16cfdf30..124eec2a 100644 --- a/.github/workflows/securitycodescan.yml +++ b/.github/workflows/securitycodescan.yml @@ -1,32 +1,48 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -# This workflow integrates SecurityCodeScan with GitHub's Code Scanning feature -# SecurityCodeScan is a vulnerability patterns detector for C# and VB.NET - -name: SecurityCodeScan +name: Code Analysis on: - push: - branches: [ "main" ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "main" ] - schedule: - - cron: '23 14 * * 2' + push: # Triggers on push events to any branch + pull_request: # Triggers on pull request events targeting any branch + workflow_dispatch: # Allows manual triggering of the workflow + +permissions: + pull-requests: read # Allows SonarCloud to decorate PRs with analysis results jobs: - SCS: + SonarCloud-Analysis: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup .NET 8.0 SDK + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '8.0.x' + + - name: SonarCloud Scan + uses: SonarSource/sonarcloud-github-action@v2.2.0 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: > + -Dsonar.projectKey=mihakralj_QuanTAlib + -Dsonar.organization=mihakralj + projectBaseDir: . + + SecurityCodeScan: runs-on: windows-latest steps: - uses: actions/checkout@v4 - - uses: nuget/setup-nuget@04b0c2b8d1b97922f67eca497d7cf0bf17b8ffe1 - - uses: microsoft/setup-msbuild@v1.0.2 + - uses: nuget/setup-nuget@v1 + - uses: microsoft/setup-msbuild@v1 + + - name: Setup .NET 8.0 SDK + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '8.0.x' - name: Set up projects for analysis - uses: security-code-scan/security-code-scan-add-action@f8ff4f2763ed6f229eded80b1f9af82ae7f32a0d + uses: security-code-scan/security-code-scan-add-action@v1 - name: Restore dependencies run: dotnet restore @@ -34,8 +50,8 @@ jobs: - name: Build run: dotnet build --no-restore - - name: Convert sarif for uploading to GitHub - uses: security-code-scan/security-code-scan-results-action@cdb3d5e639054395e45bf401cba8688fcaf7a687 + - name: Convert SARIF for uploading to GitHub + uses: security-code-scan/security-code-scan-results-action@v1 - - name: Upload sarif + - name: Upload SARIF uses: github/codeql-action/upload-sarif@v3 diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml deleted file mode 100644 index 27cf35d9..00000000 --- a/.github/workflows/sonarcloud.yml +++ /dev/null @@ -1,67 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -# This workflow helps you trigger a SonarCloud analysis of your code and populates -# GitHub Code Scanning alerts with the vulnerabilities found. -# Free for open source project. - -# 1. Login to SonarCloud.io using your GitHub account - -# 2. Import your project on SonarCloud -# * Add your GitHub organization first, then add your repository as a new project. -# * Please note that many languages are eligible for automatic analysis, -# which means that the analysis will start automatically without the need to set up GitHub Actions. -# * This behavior can be changed in Administration > Analysis Method. -# -# 3. Follow the SonarCloud in-product tutorial -# * a. Copy/paste the Project Key and the Organization Key into the args parameter below -# (You'll find this information in SonarCloud. Click on "Information" at the bottom left) -# -# * b. Generate a new token and add it to your Github repository's secrets using the name SONAR_TOKEN -# (On SonarCloud, click on your avatar on top-right > My account > Security -# or go directly to https://sonarcloud.io/account/security/) - -# Feel free to take a look at our documentation (https://docs.sonarcloud.io/getting-started/github/) -# or reach out to our community forum if you need some help (https://community.sonarsource.com/c/help/sc/9) - -name: SonarCloud analysis - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - workflow_dispatch: - -permissions: - pull-requests: read # allows SonarCloud to decorate PRs with analysis results - -jobs: - Analysis: - runs-on: ubuntu-latest - - steps: - - name: Analyze with SonarCloud - - # You can pin the exact commit or the version. - # uses: SonarSource/sonarcloud-github-action@v2.2.0 - uses: SonarSource/sonarcloud-github-action@4006f663ecaf1f8093e8e4abb9227f6041f52216 - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # Generate a token on Sonarcloud.io, add it to the secrets of this repo with the name SONAR_TOKEN (Settings > Secrets > Actions > add new repository secret) - with: - # Additional arguments for the SonarScanner CLI - args: - # Unique keys of your project and organization. You can find them in SonarCloud > Information (bottom-left menu) - # mandatory - -Dsonar.projectKey= mihakralj_QuanTAlib - -Dsonar.organization= mihakralj - # Comma-separated paths to directories containing main source files. - #-Dsonar.sources= # optional, default is project base directory - # Comma-separated paths to directories containing test source files. - #-Dsonar.tests= # optional. For more info about Code Coverage, please refer to https://docs.sonarcloud.io/enriching/test-coverage/overview/ - # Adds more detail to both client and server-side analysis logs, activating DEBUG mode for the scanner, and adding client-side environment variables and system properties to the server-side log of analysis report processing. - #-Dsonar.verbose= # optional, default is false - # When you need the analysis to take place in a directory other than the one from which it was launched, default is . - projectBaseDir: .