Skip to content

Commit ba9dfa7

Browse files
authored
fix static analysis error for Azure.Core (Azure#12293)
* fix static analysis error for Azure.Core * refine log message
1 parent abf6f37 commit ba9dfa7

File tree

5 files changed

+57
-26
lines changed

5 files changed

+57
-26
lines changed

tools/StaticAnalysis/BreakingChangeAnalyzer/BreakingChangeAnalyzer.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public void Analyze(
100100
foreach (var baseDirectory in cmdletProbingDirs.Where(s => !s.Contains("ServiceManagement") &&
101101
!ModuleFilter.IsAzureStackModule(s) && Directory.Exists(Path.GetFullPath(s))))
102102
{
103+
SharedAssemblyLoader.Load(baseDirectory);
103104
var probingDirectories = new List<string> {baseDirectory};
104105

105106
// Add current directory for probing

tools/StaticAnalysis/DependencyAnalyzer/DependencyAnalyzer.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,8 @@ public class DependencyAnalyzer : IStaticAnalyzer
181181
"System.Security.AccessControl",
182182
"System.Security.Principal.Windows",
183183
"System.Data.SqlClient",
184-
"System.Security.Cryptography.ProtectedData"
184+
"System.Security.Cryptography.ProtectedData",
185+
"System.Text.Json" //TODO: Compare Version along with Azure.Core
185186
};
186187

187188
private readonly Dictionary<string, AssemblyRecord> _assemblies =
@@ -226,6 +227,7 @@ public void Analyze(IEnumerable<string> directories, IEnumerable<String> modules
226227
_dependencyMapLogger = Logger.CreateLogger<DependencyMap>("DependencyMap.csv");
227228
foreach (var baseDirectory in directories)
228229
{
230+
SharedAssemblyLoader.Load(baseDirectory);
229231
foreach (var directoryPath in Directory.EnumerateDirectories(baseDirectory))
230232
{
231233
if (modulesToAnalyze != null &&
@@ -291,6 +293,9 @@ private bool AddSharedAssembly(AssemblyRecord assembly)
291293
{
292294
var stored = _sharedAssemblyReferences[assembly.AssemblyName];
293295
if (assembly.Equals(stored) || IsFrameworkAssembly(assembly.AssemblyName) && assembly.Version.Major <= 4) return true;
296+
//TODO: Compare Azure.Core version
297+
if (string.Equals(assembly.AssemblyName.Name, "Azure.Core", StringComparison.InvariantCultureIgnoreCase))
298+
return true;
294299

295300
_sharedConflictLogger.LogRecord(new SharedAssemblyConflict
296301
{

tools/StaticAnalysis/HelpAnalyzer/HelpAnalyzer.cs

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public void Analyze(IEnumerable<string> scopes, IEnumerable<string> modulesToAna
9696
var helpLogger = Logger.CreateLogger<HelpIssue>("HelpIssues.csv");
9797
foreach (var baseDirectory in scopes.Where(s => Directory.Exists(Path.GetFullPath(s))))
9898
{
99-
PreloadSharedAssemblies(baseDirectory);
99+
SharedAssemblyLoader.Load(baseDirectory);
100100
foreach (var directory in Directory.EnumerateDirectories(Path.GetFullPath(baseDirectory)))
101101
{
102102
if (modulesToAnalyze != null &&
@@ -116,30 +116,6 @@ public void Analyze(IEnumerable<string> scopes, IEnumerable<string> modulesToAna
116116
}
117117
}
118118

119-
private static void PreloadSharedAssemblies(string directory)
120-
{
121-
var sharedAssemblyFolder = Path.Combine(directory, "Az.Accounts", "NetCoreAssemblies");
122-
if (Directory.Exists(sharedAssemblyFolder))
123-
{
124-
foreach (var file in Directory.GetFiles(sharedAssemblyFolder))
125-
{
126-
try
127-
{
128-
Console.WriteLine($"PreloadSharedAssemblies: Starting to load assembly {file}.");
129-
Assembly.LoadFrom(file);
130-
}
131-
catch (Exception e)
132-
{
133-
Console.WriteLine($"PreloadSharedAssemblies: Failed to load assembly {Path.GetFileNameWithoutExtension(file)} with {e}");
134-
}
135-
}
136-
}
137-
else
138-
{
139-
Console.WriteLine($"PreloadSharedAssemblies: Could not find directory {sharedAssemblyFolder}.");
140-
}
141-
}
142-
143119
private void AnalyzeMamlHelp(
144120
IEnumerable<string> scopes,
145121
string directory,
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Reflection;
5+
using System.Text;
6+
7+
namespace StaticAnalysis
8+
{
9+
internal class SharedAssemblyLoader
10+
{
11+
public static HashSet<string> ProcessedFolderSet = new HashSet<string>();
12+
13+
public static void Load(string directory)
14+
{
15+
directory = Path.GetFullPath(directory);
16+
if(!ProcessedFolderSet.Contains(directory))
17+
{
18+
ProcessedFolderSet.Add(directory);
19+
PreloadSharedAssemblies(directory);
20+
}
21+
}
22+
23+
private static void PreloadSharedAssemblies(string directory)
24+
{
25+
var sharedAssemblyFolder = Path.Combine(directory, "Az.Accounts", "NetCoreAssemblies");
26+
if (Directory.Exists(sharedAssemblyFolder))
27+
{
28+
foreach (var file in Directory.GetFiles(sharedAssemblyFolder))
29+
{
30+
try
31+
{
32+
Console.WriteLine($"PreloadSharedAssemblies: Starting to load assembly {file}.");
33+
Assembly.LoadFrom(file);
34+
}
35+
catch (Exception e)
36+
{
37+
Console.WriteLine($"PreloadSharedAssemblies: Failed (but could be IGNORED) to load assembly {Path.GetFileNameWithoutExtension(file)} with {e}");
38+
}
39+
}
40+
}
41+
else
42+
{
43+
Console.WriteLine($"PreloadSharedAssemblies: Could not find directory {sharedAssemblyFolder}.");
44+
}
45+
}
46+
}
47+
}

tools/StaticAnalysis/SignatureVerifier/SignatureVerifier.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ public void Analyze(IEnumerable<string> cmdletProbingDirs,
7777
foreach (var baseDirectory in cmdletProbingDirs.Where(s => !s.Contains("ServiceManagement") &&
7878
!ModuleFilter.IsAzureStackModule(s) && Directory.Exists(Path.GetFullPath(s))))
7979
{
80+
SharedAssemblyLoader.Load(baseDirectory);
81+
8082
//Add current directory for probing
8183
probingDirectories.Add(baseDirectory);
8284
probingDirectories.AddRange(Directory.EnumerateDirectories(Path.GetFullPath(baseDirectory)));

0 commit comments

Comments
 (0)