mirror of
https://github.com/github/codeql.git
synced 2026-05-03 12:45:27 +02:00
C#: Fix tests
This commit is contained in:
@@ -100,20 +100,20 @@ namespace Semmle.BuildAnalyser
|
||||
|
||||
{
|
||||
// These files can sometimes prevent `dotnet restore` from working correctly.
|
||||
using var renamer1 = new FileRenamer(sourceDir.GetFiles("global.json", SearchOption.AllDirectories));
|
||||
using var renamer2 = new FileRenamer(sourceDir.GetFiles("Directory.Build.props", SearchOption.AllDirectories));
|
||||
using (new FileRenamer(sourceDir.GetFiles("global.json", SearchOption.AllDirectories)))
|
||||
using (new FileRenamer(sourceDir.GetFiles("Directory.Build.props", SearchOption.AllDirectories)))
|
||||
{
|
||||
var solutions = options.SolutionFile != null ?
|
||||
new[] { options.SolutionFile } :
|
||||
sourceDir.GetFiles("*.sln", SearchOption.AllDirectories).Select(d => d.FullName);
|
||||
|
||||
var solutions = options.SolutionFile != null ?
|
||||
new[] { options.SolutionFile } :
|
||||
sourceDir.GetFiles("*.sln", SearchOption.AllDirectories).Select(d => d.FullName);
|
||||
RestoreSolutions(solutions);
|
||||
dllDirNames.Add(PackageDirectory.DirInfo.FullName);
|
||||
assemblyCache = new BuildAnalyser.AssemblyCache(dllDirNames, progress);
|
||||
AnalyseSolutions(solutions);
|
||||
|
||||
|
||||
RestoreSolutions(solutions);
|
||||
dllDirNames.Add(PackageDirectory.DirInfo.FullName);
|
||||
assemblyCache = new BuildAnalyser.AssemblyCache(dllDirNames, progress);
|
||||
AnalyseSolutions(solutions);
|
||||
|
||||
usedReferences = new HashSet<string>(assemblyCache.AllAssemblies.Select(a => a.Filename));
|
||||
usedReferences = new HashSet<string>(assemblyCache.AllAssemblies.Select(a => a.Filename));
|
||||
}
|
||||
}
|
||||
|
||||
ResolveConflicts();
|
||||
@@ -254,7 +254,7 @@ namespace Semmle.BuildAnalyser
|
||||
unresolvedReferences[id] = projectFile;
|
||||
}
|
||||
|
||||
TemporaryDirectory PackageDirectory;
|
||||
readonly TemporaryDirectory PackageDirectory;
|
||||
|
||||
/// <summary>
|
||||
/// Reads all the source files and references from the given list of projects.
|
||||
|
||||
@@ -90,9 +90,6 @@ namespace Semmle.BuildAnalyser
|
||||
|
||||
if(netCoreProjectFile)
|
||||
{
|
||||
var frameworksNode = root.SelectNodes("/Project/PropertyGroup/TargetFrameworks").NodeList().Concat(
|
||||
root.SelectNodes("/Project/PropertyGroup/TargetFramework").NodeList()).Select(node => node.InnerText);
|
||||
|
||||
var relativeCsIncludes2 =
|
||||
root.SelectNodes("/Project/ItemGroup/Compile/@Include", mgr).
|
||||
NodeList().
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace Semmle.BuildAnalyser
|
||||
/// </summary>
|
||||
sealed class FileRenamer : IDisposable
|
||||
{
|
||||
string[] files;
|
||||
readonly string[] files;
|
||||
const string suffix = ".codeqlhidden";
|
||||
|
||||
public FileRenamer(IEnumerable<FileInfo> oldFiles)
|
||||
|
||||
@@ -114,16 +114,15 @@ namespace Semmle.BuildAnalyser
|
||||
|
||||
try
|
||||
{
|
||||
using (var p = Process.Start(pi))
|
||||
{
|
||||
string output = p.StandardOutput.ReadToEnd();
|
||||
string error = p.StandardError.ReadToEnd();
|
||||
using var p = Process.Start(pi);
|
||||
|
||||
p.WaitForExit();
|
||||
if (p.ExitCode != 0)
|
||||
{
|
||||
pm.FailedNugetCommand(pi.FileName, pi.Arguments, output + error);
|
||||
}
|
||||
string output = p.StandardOutput.ReadToEnd();
|
||||
string error = p.StandardError.ReadToEnd();
|
||||
|
||||
p.WaitForExit();
|
||||
if (p.ExitCode != 0)
|
||||
{
|
||||
pm.FailedNugetCommand(pi.FileName, pi.Arguments, output + error);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -136,6 +135,10 @@ namespace Semmle.BuildAnalyser
|
||||
readonly string nugetExe;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A temporary directory that is created within the system temp directory.
|
||||
/// When this object is disposed, the directory is deleted.
|
||||
/// </summary>
|
||||
sealed class TemporaryDirectory : IDisposable
|
||||
{
|
||||
public DirectoryInfo DirInfo { get; }
|
||||
@@ -156,7 +159,7 @@ namespace Semmle.BuildAnalyser
|
||||
{
|
||||
var bytes = Encoding.Unicode.GetBytes(srcDir);
|
||||
|
||||
var sha1 = new SHA1CryptoServiceProvider();
|
||||
using var sha1 = new SHA1CryptoServiceProvider();
|
||||
var sha = sha1.ComputeHash(bytes);
|
||||
var sb = new StringBuilder();
|
||||
foreach (var b in sha.Take(8))
|
||||
|
||||
@@ -85,7 +85,7 @@ namespace Semmle.Extraction.CSharp.Standalone
|
||||
static int Main(string[] args)
|
||||
{
|
||||
var options = Options.Create(args);
|
||||
options.CIL = true;
|
||||
// options.CIL = true; // To do: Enable this
|
||||
var output = new ConsoleLogger(options.Verbosity);
|
||||
var a = new Analysis(output);
|
||||
|
||||
|
||||
@@ -214,7 +214,6 @@ namespace Semmle.Extraction.CSharp
|
||||
static void BuildNamedTypeId(this INamedTypeSymbol named, Context cx, TextWriter trapFile, Action<Context, TextWriter, ITypeSymbol> subTermAction)
|
||||
{
|
||||
bool prefixAssembly = true;
|
||||
if (cx.Extractor.Standalone) prefixAssembly = false;
|
||||
if (named.ContainingAssembly is null) prefixAssembly = false;
|
||||
|
||||
if (named.IsTupleType)
|
||||
|
||||
@@ -388,7 +388,12 @@ library class PropertyAccessExpr extends Expr, @property_access_expr {
|
||||
/** Gets the target of this property access. */
|
||||
Property getProperty() { expr_access(this, result) }
|
||||
|
||||
override string toString() { result = "access to property " + this.getProperty().getName() }
|
||||
override string toString() {
|
||||
result = "access to property " + this.getProperty().getName()
|
||||
or
|
||||
not exists(this.getProperty()) and
|
||||
result = "access to property (unknown)"
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,9 +7,14 @@
|
||||
| ControlFlow.cs:10:9:10:43 | Call (unknown target) | ControlFlow.cs:12:9:12:87 | ...; |
|
||||
| ControlFlow.cs:10:9:10:43 | call to method | ControlFlow.cs:12:9:12:87 | ...; |
|
||||
| ControlFlow.cs:10:9:10:44 | ...; | ControlFlow.cs:10:9:10:13 | Expression |
|
||||
| ControlFlow.cs:10:22:10:22 | access to local variable v | ControlFlow.cs:10:22:10:24 | Expression |
|
||||
| ControlFlow.cs:10:22:10:24 | Expression | ControlFlow.cs:10:22:10:26 | Expression |
|
||||
| ControlFlow.cs:10:22:10:26 | Expression | ControlFlow.cs:10:29:10:42 | "This is true" |
|
||||
| ControlFlow.cs:10:22:10:22 | access to local variable v | ControlFlow.cs:10:22:10:24 | Call (unknown target) |
|
||||
| ControlFlow.cs:10:22:10:22 | access to local variable v | ControlFlow.cs:10:22:10:24 | access to property (unknown) |
|
||||
| ControlFlow.cs:10:22:10:24 | Call (unknown target) | ControlFlow.cs:10:22:10:26 | Call (unknown target) |
|
||||
| ControlFlow.cs:10:22:10:24 | Call (unknown target) | ControlFlow.cs:10:22:10:26 | access to property (unknown) |
|
||||
| ControlFlow.cs:10:22:10:24 | access to property (unknown) | ControlFlow.cs:10:22:10:26 | Call (unknown target) |
|
||||
| ControlFlow.cs:10:22:10:24 | access to property (unknown) | ControlFlow.cs:10:22:10:26 | access to property (unknown) |
|
||||
| ControlFlow.cs:10:22:10:26 | Call (unknown target) | ControlFlow.cs:10:29:10:42 | "This is true" |
|
||||
| ControlFlow.cs:10:22:10:26 | access to property (unknown) | ControlFlow.cs:10:29:10:42 | "This is true" |
|
||||
| ControlFlow.cs:10:29:10:42 | "This is true" | ControlFlow.cs:10:9:10:43 | Call (unknown target) |
|
||||
| ControlFlow.cs:10:29:10:42 | "This is true" | ControlFlow.cs:10:9:10:43 | call to method |
|
||||
| ControlFlow.cs:12:9:12:86 | Call (unknown target) | ControlFlow.cs:12:37:12:47 | Expression |
|
||||
@@ -20,5 +25,7 @@
|
||||
| ControlFlow.cs:12:51:12:62 | access to field Empty | ControlFlow.cs:12:37:12:62 | ... = ... |
|
||||
| ControlFlow.cs:12:65:12:75 | Expression | ControlFlow.cs:12:79:12:79 | access to local variable v |
|
||||
| ControlFlow.cs:12:65:12:84 | ... = ... | ControlFlow.cs:12:35:12:86 | { ..., ... } |
|
||||
| ControlFlow.cs:12:79:12:79 | access to local variable v | ControlFlow.cs:12:79:12:84 | Expression |
|
||||
| ControlFlow.cs:12:79:12:84 | Expression | ControlFlow.cs:12:65:12:84 | ... = ... |
|
||||
| ControlFlow.cs:12:79:12:79 | access to local variable v | ControlFlow.cs:12:79:12:84 | Call (unknown target) |
|
||||
| ControlFlow.cs:12:79:12:79 | access to local variable v | ControlFlow.cs:12:79:12:84 | access to property (unknown) |
|
||||
| ControlFlow.cs:12:79:12:84 | Call (unknown target) | ControlFlow.cs:12:65:12:84 | ... = ... |
|
||||
| ControlFlow.cs:12:79:12:84 | access to property (unknown) | ControlFlow.cs:12:65:12:84 | ... = ... |
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
| errors.cs:43:21:43:28 | errors.cs:43:21:43:28 | object creation of type C1 | C1 |
|
||||
| errors.cs:44:13:44:19 | errors.cs:44:13:44:19 | call to method m1 | m1 |
|
||||
| errors.cs:45:13:45:19 | errors.cs:45:13:45:19 | call to method m2 | m2 |
|
||||
| errors.cs:46:13:46:38 | errors.cs:46:13:46:38 | call to method | none |
|
||||
| errors.cs:46:13:46:38 | errors.cs:46:13:46:38 | call to method WriteLine | WriteLine |
|
||||
| errors.cs:53:17:53:25 | errors.cs:53:17:53:25 | object creation of type C2 | none |
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
| regressions.cs:16:13:16:37 | case ...: | regressions.cs:16:18:16:36 | Expression |
|
||||
| regressions.cs:18:13:18:37 | case ...: | regressions.cs:18:18:18:36 | Expression |
|
||||
| regressions.cs:16:13:16:37 | case ...: | regressions.cs:16:18:16:36 | access to property (unknown) |
|
||||
| regressions.cs:18:13:18:37 | case ...: | regressions.cs:18:18:18:36 | access to property (unknown) |
|
||||
| regressions.cs:20:13:20:23 | case ...: | regressions.cs:20:18:20:22 | Int32 x |
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
import csharp
|
||||
|
||||
from Case c, Expr e
|
||||
where
|
||||
e = c.getPattern().stripCasts() and
|
||||
(e instanceof @unknown_expr or e instanceof ConstantPatternExpr)
|
||||
where e = c.getPattern().stripCasts()
|
||||
select c, e
|
||||
|
||||
Reference in New Issue
Block a user