From 3aa6ae0937bf12d9600f08e8c1d9ceb8da4f8ef4 Mon Sep 17 00:00:00 2001 From: borisforzun Date: Sun, 9 Feb 2025 16:49:40 +0200 Subject: [PATCH 01/10] Add ability to create a template analyzer providing programatically created rules. --- src/Analyzer.Core/TemplateAnalyzer.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Analyzer.Core/TemplateAnalyzer.cs b/src/Analyzer.Core/TemplateAnalyzer.cs index 88ce1876..1323530e 100644 --- a/src/Analyzer.Core/TemplateAnalyzer.cs +++ b/src/Analyzer.Core/TemplateAnalyzer.cs @@ -65,9 +65,21 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg throw new TemplateAnalyzerException("Failed to read rules.", e); } + return Create(includeNonSecurityRules, rules, logger); + } + + /// + /// Creates a new instance with in-memory rules. + /// + /// Whether or not to run also non-security rules against the template. + /// The in-memory rules object represented as a string. + /// A logger to report errors and debug information + /// A new instance. + public static TemplateAnalyzer Create(bool includeNonSecurityRules, string rulesJsonAsString, ILogger logger = null) + { return new TemplateAnalyzer( JsonRuleEngine.Create( - rules, + rulesJsonAsString, templateContext => templateContext.IsBicep ? new BicepSourceLocationResolver(templateContext) : new JsonSourceLocationResolver(templateContext), From 136e3fb3e370dacc7e746bfb4ea1fcfb55f6b352 Mon Sep 17 00:00:00 2001 From: borisforzun Date: Sun, 9 Feb 2025 17:33:57 +0200 Subject: [PATCH 02/10] fix --- src/Analyzer.Core/TemplateAnalyzer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Analyzer.Core/TemplateAnalyzer.cs b/src/Analyzer.Core/TemplateAnalyzer.cs index 8c57e07a..c65d21f1 100644 --- a/src/Analyzer.Core/TemplateAnalyzer.cs +++ b/src/Analyzer.Core/TemplateAnalyzer.cs @@ -66,7 +66,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg throw new TemplateAnalyzerException("Failed to read rules.", e); } - return Create(includeNonSecurityRules, rules, logger); + return Create(includeNonSecurityRules: includeNonSecurityRules, rules, logger, includePowerShellRules: includePowerShellRules); } /// @@ -76,7 +76,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg /// The in-memory rules object represented as a string. /// A logger to report errors and debug information /// A new instance. - public static TemplateAnalyzer Create(bool includeNonSecurityRules, string rulesJsonAsString, ILogger logger = null) + public static TemplateAnalyzer Create(bool includeNonSecurityRules, string rulesJsonAsString, ILogger logger = null, bool includePowerShellRules = true) { return new TemplateAnalyzer( JsonRuleEngine.Create( From 6468c232f93b87637c2dc9b792b0a6c2eaedb967 Mon Sep 17 00:00:00 2001 From: borisforzun Date: Sun, 9 Feb 2025 17:59:38 +0200 Subject: [PATCH 03/10] fix --- src/Analyzer.Core/TemplateAnalyzer.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Analyzer.Core/TemplateAnalyzer.cs b/src/Analyzer.Core/TemplateAnalyzer.cs index c65d21f1..6e7439b1 100644 --- a/src/Analyzer.Core/TemplateAnalyzer.cs +++ b/src/Analyzer.Core/TemplateAnalyzer.cs @@ -75,6 +75,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg /// Whether or not to run also non-security rules against the template. /// The in-memory rules object represented as a string. /// A logger to report errors and debug information + /// Whether or not to run also powershell rules against the template. /// A new instance. public static TemplateAnalyzer Create(bool includeNonSecurityRules, string rulesJsonAsString, ILogger logger = null, bool includePowerShellRules = true) { From 8ee039b18a736594121f21fe0d76d00442006a53 Mon Sep 17 00:00:00 2001 From: borisforzun Date: Sun, 9 Feb 2025 18:37:25 +0200 Subject: [PATCH 04/10] fix --- src/Analyzer.Core/TemplateAnalyzer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Analyzer.Core/TemplateAnalyzer.cs b/src/Analyzer.Core/TemplateAnalyzer.cs index 6e7439b1..511ec435 100644 --- a/src/Analyzer.Core/TemplateAnalyzer.cs +++ b/src/Analyzer.Core/TemplateAnalyzer.cs @@ -66,7 +66,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg throw new TemplateAnalyzerException("Failed to read rules.", e); } - return Create(includeNonSecurityRules: includeNonSecurityRules, rules, logger, includePowerShellRules: includePowerShellRules); + return Create(includeNonSecurityRules: includeNonSecurityRules, includePowerShellRules: includePowerShellRules, rulesJsonAsString: rules, logger: logger); } /// @@ -77,7 +77,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg /// A logger to report errors and debug information /// Whether or not to run also powershell rules against the template. /// A new instance. - public static TemplateAnalyzer Create(bool includeNonSecurityRules, string rulesJsonAsString, ILogger logger = null, bool includePowerShellRules = true) + public static TemplateAnalyzer Create(bool includeNonSecurityRules, bool includePowerShellRules, string rulesJsonAsString, ILogger logger = null) { return new TemplateAnalyzer( JsonRuleEngine.Create( From eeb4293b53a5beaae26ffa2ca2ce5d7a38fa5633 Mon Sep 17 00:00:00 2001 From: borisforzun Date: Sun, 9 Feb 2025 19:09:25 +0200 Subject: [PATCH 05/10] fix --- src/Analyzer.Core/TemplateAnalyzer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Analyzer.Core/TemplateAnalyzer.cs b/src/Analyzer.Core/TemplateAnalyzer.cs index 511ec435..0961a3a8 100644 --- a/src/Analyzer.Core/TemplateAnalyzer.cs +++ b/src/Analyzer.Core/TemplateAnalyzer.cs @@ -66,7 +66,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg throw new TemplateAnalyzerException("Failed to read rules.", e); } - return Create(includeNonSecurityRules: includeNonSecurityRules, includePowerShellRules: includePowerShellRules, rulesJsonAsString: rules, logger: logger); + return CreateFromString(includeNonSecurityRules: includeNonSecurityRules, includePowerShellRules: includePowerShellRules, rulesJsonAsString: rules, logger: logger); } /// @@ -77,7 +77,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg /// A logger to report errors and debug information /// Whether or not to run also powershell rules against the template. /// A new instance. - public static TemplateAnalyzer Create(bool includeNonSecurityRules, bool includePowerShellRules, string rulesJsonAsString, ILogger logger = null) + public static TemplateAnalyzer CreateFromString(bool includeNonSecurityRules, bool includePowerShellRules, string rulesJsonAsString, ILogger logger = null) { return new TemplateAnalyzer( JsonRuleEngine.Create( From b23ad30cdf0aedc8dfe2620fc1e1de759e45b8bf Mon Sep 17 00:00:00 2001 From: borisforzun Date: Tue, 11 Feb 2025 14:08:38 +0200 Subject: [PATCH 06/10] bump ver --- src/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 0cb24db7..d303607c 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,6 +1,6 @@ - 0.8.3 + 0.8.4 Microsoft © Microsoft Corporation. All rights reserved. From 844a495a9f234d2673088eba450f18cbee37296d Mon Sep 17 00:00:00 2001 From: Boris F <48494688+borisf94@users.noreply.github.com> Date: Thu, 13 Feb 2025 10:08:48 +0200 Subject: [PATCH 07/10] Update src/Analyzer.Core/TemplateAnalyzer.cs Co-authored-by: Johnathon Mohr --- src/Analyzer.Core/TemplateAnalyzer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Analyzer.Core/TemplateAnalyzer.cs b/src/Analyzer.Core/TemplateAnalyzer.cs index 0961a3a8..0b76e2c6 100644 --- a/src/Analyzer.Core/TemplateAnalyzer.cs +++ b/src/Analyzer.Core/TemplateAnalyzer.cs @@ -70,7 +70,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg } /// - /// Creates a new instance with in-memory rules. + /// Creates a new instance. /// /// Whether or not to run also non-security rules against the template. /// The in-memory rules object represented as a string. From 2916accf403e5182519a1208d59bedc9cf4fe886 Mon Sep 17 00:00:00 2001 From: Boris F <48494688+borisf94@users.noreply.github.com> Date: Thu, 13 Feb 2025 10:09:08 +0200 Subject: [PATCH 08/10] Update src/Analyzer.Core/TemplateAnalyzer.cs Co-authored-by: Johnathon Mohr --- src/Analyzer.Core/TemplateAnalyzer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Analyzer.Core/TemplateAnalyzer.cs b/src/Analyzer.Core/TemplateAnalyzer.cs index 0b76e2c6..cd6f5dcc 100644 --- a/src/Analyzer.Core/TemplateAnalyzer.cs +++ b/src/Analyzer.Core/TemplateAnalyzer.cs @@ -73,7 +73,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg /// Creates a new instance. /// /// Whether or not to run also non-security rules against the template. - /// The in-memory rules object represented as a string. + /// The rules to evaluate, in JSON string format. /// A logger to report errors and debug information /// Whether or not to run also powershell rules against the template. /// A new instance. From 0bd9082b388426a5e06a8693f0e45c2427afe57e Mon Sep 17 00:00:00 2001 From: borisforzun Date: Sun, 16 Feb 2025 14:27:12 +0200 Subject: [PATCH 09/10] fix --- src/Analyzer.Core/TemplateAnalyzer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Analyzer.Core/TemplateAnalyzer.cs b/src/Analyzer.Core/TemplateAnalyzer.cs index 0961a3a8..dafb8cac 100644 --- a/src/Analyzer.Core/TemplateAnalyzer.cs +++ b/src/Analyzer.Core/TemplateAnalyzer.cs @@ -34,7 +34,7 @@ public class TemplateAnalyzer private ILogger logger; /// - /// Private constructor to enforce use of for creating new instances. + /// Private constructor to enforce using one of the TemplateAnalyzer.Create methods for creating new instances. /// /// The to use in analyzing templates. /// The to use in analyzing templates. From 6ea3ef922c129821e323d9db3b686fcd05854eca Mon Sep 17 00:00:00 2001 From: borisforzun Date: Wed, 19 Feb 2025 13:38:56 +0200 Subject: [PATCH 10/10] rename method --- src/Analyzer.Core/TemplateAnalyzer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Analyzer.Core/TemplateAnalyzer.cs b/src/Analyzer.Core/TemplateAnalyzer.cs index c515ba88..c9c147e3 100644 --- a/src/Analyzer.Core/TemplateAnalyzer.cs +++ b/src/Analyzer.Core/TemplateAnalyzer.cs @@ -66,7 +66,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg throw new TemplateAnalyzerException("Failed to read rules.", e); } - return CreateFromString(includeNonSecurityRules: includeNonSecurityRules, includePowerShellRules: includePowerShellRules, rulesJsonAsString: rules, logger: logger); + return Create(includeNonSecurityRules: includeNonSecurityRules, includePowerShellRules: includePowerShellRules, rulesJsonAsString: rules, logger: logger); } /// @@ -77,7 +77,7 @@ public static TemplateAnalyzer Create(bool includeNonSecurityRules, ILogger logg /// A logger to report errors and debug information /// Whether or not to run also powershell rules against the template. /// A new instance. - public static TemplateAnalyzer CreateFromString(bool includeNonSecurityRules, bool includePowerShellRules, string rulesJsonAsString, ILogger logger = null) + public static TemplateAnalyzer Create(bool includeNonSecurityRules, bool includePowerShellRules, string rulesJsonAsString, ILogger logger = null) { return new TemplateAnalyzer( JsonRuleEngine.Create(