mirror of
https://github.com/github/codeql.git
synced 2026-04-25 16:55:19 +02:00
Change file content string comparisons to be case invariant
This commit is contained in:
@@ -127,10 +127,10 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
public FileContent(ILogger logger, IEnumerable<string> files) : this(logger, files, new UnsafeFileReader())
|
||||
{ }
|
||||
|
||||
private static string GetGroup(ReadOnlySpan<char> input, ValueMatch valueMatch, string groupPrefix, bool toLower)
|
||||
private static string GetGroup(ReadOnlySpan<char> input, ValueMatch valueMatch, string groupPrefix)
|
||||
{
|
||||
var match = input.Slice(valueMatch.Index, valueMatch.Length);
|
||||
var includeIndex = match.IndexOf(groupPrefix, StringComparison.InvariantCultureIgnoreCase);
|
||||
var includeIndex = match.IndexOf(groupPrefix, StringComparison.OrdinalIgnoreCase);
|
||||
if (includeIndex == -1)
|
||||
{
|
||||
return string.Empty;
|
||||
@@ -141,14 +141,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
var quoteIndex1 = match.IndexOf("\"");
|
||||
var quoteIndex2 = match.Slice(quoteIndex1 + 1).IndexOf("\"");
|
||||
|
||||
var result = match.Slice(quoteIndex1 + 1, quoteIndex2).ToString();
|
||||
|
||||
if (toLower)
|
||||
{
|
||||
result = result.ToLowerInvariant();
|
||||
}
|
||||
|
||||
return result;
|
||||
return match.Slice(quoteIndex1 + 1, quoteIndex2).ToString();
|
||||
}
|
||||
|
||||
private static bool IsGroupMatch(ReadOnlySpan<char> line, Regex regex, string groupPrefix, string value)
|
||||
@@ -156,7 +149,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
foreach (var valueMatch in regex.EnumerateMatches(line))
|
||||
{
|
||||
// We can't get the group from the ValueMatch, so doing it manually:
|
||||
if (GetGroup(line, valueMatch, groupPrefix, toLower: true) == value.ToLowerInvariant())
|
||||
if (string.Equals(GetGroup(line, valueMatch, groupPrefix), value, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -172,12 +165,11 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
{
|
||||
foreach (ReadOnlySpan<char> line in unsafeFileReader.ReadLines(file))
|
||||
{
|
||||
|
||||
// Find all the packages.
|
||||
foreach (var valueMatch in PackageReference().EnumerateMatches(line))
|
||||
{
|
||||
// We can't get the group from the ValueMatch, so doing it manually:
|
||||
var packageName = GetGroup(line, valueMatch, "Include", toLower: true);
|
||||
var packageName = GetGroup(line, valueMatch, "Include").ToLowerInvariant();
|
||||
if (!string.IsNullOrEmpty(packageName))
|
||||
{
|
||||
allPackages.Add(packageName);
|
||||
@@ -189,24 +181,23 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
|
||||
|| IsGroupMatch(line, ProjectSdk(), "Sdk", "Microsoft.NET.Sdk.Web")
|
||||
|| IsGroupMatch(line, FrameworkReference(), "Include", "Microsoft.AspNetCore.App");
|
||||
|
||||
|
||||
// Determine if implicit usings are used.
|
||||
useImplicitUsings = useImplicitUsings
|
||||
|| line.Contains("<ImplicitUsings>enable</ImplicitUsings>".AsSpan(), StringComparison.Ordinal)
|
||||
|| line.Contains("<ImplicitUsings>true</ImplicitUsings>".AsSpan(), StringComparison.Ordinal);
|
||||
|| line.Contains("<ImplicitUsings>enable</ImplicitUsings>".AsSpan(), StringComparison.OrdinalIgnoreCase)
|
||||
|| line.Contains("<ImplicitUsings>true</ImplicitUsings>".AsSpan(), StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
// Determine if WPF is used.
|
||||
useWpf = useWpf
|
||||
|| line.Contains("<UseWPF>true</UseWPF>".AsSpan(), StringComparison.Ordinal);
|
||||
|| line.Contains("<UseWPF>true</UseWPF>".AsSpan(), StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
// Determine if Windows Forms is used.
|
||||
useWindowsForms = useWindowsForms
|
||||
|| line.Contains("<UseWindowsForms>true</UseWindowsForms>".AsSpan(), StringComparison.Ordinal);
|
||||
|| line.Contains("<UseWindowsForms>true</UseWindowsForms>".AsSpan(), StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
// Find all custom implicit usings.
|
||||
foreach (var valueMatch in CustomImplicitUsingDeclarations().EnumerateMatches(line))
|
||||
{
|
||||
var ns = GetGroup(line, valueMatch, "Include", toLower: false);
|
||||
var ns = GetGroup(line, valueMatch, "Include");
|
||||
if (!string.IsNullOrEmpty(ns))
|
||||
{
|
||||
implicitUsingNamespaces.Add(ns);
|
||||
|
||||
Reference in New Issue
Block a user