diff --git a/csharp/autobuilder/Semmle.Autobuild.CSharp/AutoBuildRule.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp/AutoBuildRule.cs
index e58c8ddccd9..b3efe64b7e9 100644
--- a/csharp/autobuilder/Semmle.Autobuild.CSharp/AutoBuildRule.cs
+++ b/csharp/autobuilder/Semmle.Autobuild.CSharp/AutoBuildRule.cs
@@ -49,11 +49,9 @@ namespace Semmle.Autobuild.CSharp
tryCleanExtractorArgsLogs &
BuildScript.DeleteFile(Extractor.GetCSharpLogPath());
- ///
- /// Execute script `s` and check that the C# extractor has been executed.
- /// If either fails, attempt to cleanup any artifacts produced by the extractor,
- /// and exit with code 1, in order to proceed to the next attempt.
- ///
+ // Execute script `s` and check that the C# extractor has been executed.
+ // If either fails, attempt to cleanup any artifacts produced by the extractor,
+ // and exit with code 1, in order to proceed to the next attempt.
BuildScript IntermediateAttempt(BuildScript s) =>
(s & this.autobuilder.CheckExtractorRun(false)) |
(attemptExtractorCleanup & BuildScript.Failure);
diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs
index 371352cf5e2..919e3821750 100644
--- a/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs
+++ b/csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs
@@ -195,7 +195,7 @@ namespace Semmle.Autobuild.Shared
}
///
- /// Retrieves the value of an environment variable named or throws
+ /// Retrieves the value of an environment variable named or throws
/// an exception if no such environment variable has been set.
///
/// The name of the environment variable.
@@ -228,7 +228,7 @@ namespace Semmle.Autobuild.Shared
private readonly IDiagnosticsWriter diagnostics;
///
- /// Makes relative to the root source directory.
+ /// Makes relative to the root source directory.
///
/// The path which to make relative.
/// The relative path.
diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/MarkdownUtil.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/MarkdownUtil.cs
index 13a3533eb31..f5721910a96 100644
--- a/csharp/autobuilder/Semmle.Autobuild.Shared/MarkdownUtil.cs
+++ b/csharp/autobuilder/Semmle.Autobuild.Shared/MarkdownUtil.cs
@@ -22,7 +22,7 @@ namespace Semmle.Autobuild.Shared
public static string ToMarkdownLink(this string link, string title) => $"[{title}]({link})";
///
- /// Renders as a markdown list of the project paths.
+ /// Renders as a markdown list of the project paths.
///
///
/// The list of projects whose paths should be rendered as a markdown list.
@@ -35,7 +35,7 @@ namespace Semmle.Autobuild.Shared
}
///
- /// Renders as a markdown list.
+ /// Renders as a markdown list.
///
/// The item type.
/// The list that should be formatted as a markdown list.
diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs
index 4a6b401038e..13235ba1988 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/Assets.cs
@@ -127,21 +127,21 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
///
/// Example:
/// "project": {
- // "version": "1.0.0",
- // "frameworks": {
- // "net7.0": {
- // "frameworkReferences": {
- // "Microsoft.AspNetCore.App": {
- // "privateAssets": "none"
- // },
- // "Microsoft.NETCore.App": {
- // "privateAssets": "all"
- // }
- // }
- // }
- // }
- // }
- //
+ /// "version": "1.0.0",
+ /// "frameworks": {
+ /// "net7.0": {
+ /// "frameworkReferences": {
+ /// "Microsoft.AspNetCore.App": {
+ /// "privateAssets": "none"
+ /// },
+ /// "Microsoft.NETCore.App": {
+ /// "privateAssets": "all"
+ /// }
+ /// }
+ /// }
+ /// }
+ /// }
+ ///
/// Adds the following dependencies
/// Paths: {
/// "microsoft.aspnetcore.app.ref",
diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetVersion.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetVersion.cs
index f62c279d240..b4273d02b77 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetVersion.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNetVersion.cs
@@ -27,7 +27,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
* This is the same as FullPath, except that we assume that the
* reference assemblies are in a directory called "packs" and
* the reference assemblies themselves are in a directory called
- * ".Ref/ref".
+ * "[Framework].Ref/ref".
* Example:
* FullPath: /usr/share/dotnet/shared/Microsoft.NETCore.App/7.0.2
* FullPathReferenceAssemblies: /usr/share/dotnet/packs/Microsoft.NETCore.App.Ref/7.0.2/ref
diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs
index f33329046cf..f5199de1c13 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/FileContent.cs
@@ -38,8 +38,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
/// True if any file in the source directory indicates that ASP.NET Core is used.
/// The following heuristic is used to decide, if ASP.NET Core is used:
/// If any file in the source directory contains something like (this will most like be a .csproj file)
- ///
- ///
+ /// <Project Sdk="Microsoft.NET.Sdk.Web">
+ /// <FrameworkReference Include="Microsoft.AspNetCore.App"/>
///
public bool UseAspNetCoreDlls
{
diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs
index bfc8b44ee56..89631ffa861 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNetCliInvoker.cs
@@ -10,20 +10,20 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
string Exec { get; }
///
- /// Execute `dotnet ` and return true if the command succeeded, otherwise false.
+ /// Execute `dotnet ` and return true if the command succeeded, otherwise false.
/// If `silent` is true the output of the command is logged as `debug` otherwise as `info`.
///
bool RunCommand(string args, bool silent = true);
///
- /// Execute `dotnet ` and return true if the command succeeded, otherwise false.
+ /// Execute `dotnet ` and return true if the command succeeded, otherwise false.
/// The output of the command is returned in `output`.
/// If `silent` is true the output of the command is logged as `debug` otherwise as `info`.
///
bool RunCommand(string args, out IList output, bool silent = true);
///
- /// Execute `dotnet ` in `` and return true if the command succeeded, otherwise false.
+ /// Execute `dotnet ` in `` and return true if the command succeeded, otherwise false.
/// The output of the command is returned in `output`.
/// If `silent` is true the output of the command is logged as `debug` otherwise as `info`.
///
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/CodeAnalysisExtensions/SymbolExtensions.cs b/csharp/extractor/Semmle.Extraction.CSharp/CodeAnalysisExtensions/SymbolExtensions.cs
index 2ffdd9dbcd6..72c45b797d8 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/CodeAnalysisExtensions/SymbolExtensions.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/CodeAnalysisExtensions/SymbolExtensions.cs
@@ -133,9 +133,6 @@ namespace Semmle.Extraction.CSharp
///
/// Constructs a unique string for this type symbol.
- ///
- /// The supplied action is applied to the
- /// syntactic sub terms of this type (if any).
///
/// The extraction context.
/// The trap builder used to store the result.
@@ -495,31 +492,31 @@ namespace Semmle.Extraction.CSharp
///
/// Holds if this type is of the form int? or
- /// System.Nullable.
+ /// System.Nullable<int>.
///
public static bool IsBoundNullable(this ITypeSymbol type) =>
type.SpecialType == SpecialType.None && type.OriginalDefinition.IsUnboundNullable();
///
- /// Holds if this type is System.Nullable.
+ /// Holds if this type is System.Nullable<T>.
///
public static bool IsUnboundNullable(this ITypeSymbol type) =>
type.SpecialType == SpecialType.System_Nullable_T;
///
- /// Holds if this type is System.Span.
+ /// Holds if this type is System.Span<T>.
///
public static bool IsUnboundSpan(this ITypeSymbol type) =>
type.ToString() == "System.Span";
///
- /// Holds if this type is of the form System.Span.
+ /// Holds if this type is of the form System.Span<byte>.
///
public static bool IsBoundSpan(this ITypeSymbol type) =>
type.SpecialType == SpecialType.None && type.OriginalDefinition.IsUnboundSpan();
///
- /// Holds if this type is System.ReadOnlySpan.
+ /// Holds if this type is System.ReadOnlySpan<T>.
///
public static bool IsUnboundReadOnlySpan(this ITypeSymbol type) =>
type.ToString() == "System.ReadOnlySpan";
@@ -536,7 +533,7 @@ namespace Semmle.Extraction.CSharp
}
///
- /// Holds if this type is of the form System.ReadOnlySpan.
+ /// Holds if this type is of the form System.ReadOnlySpan<byte>.
///
public static bool IsBoundReadOnlySpan(this ITypeSymbol type) =>
type.SpecialType == SpecialType.None && type.OriginalDefinition.IsUnboundReadOnlySpan();
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedEntity.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedEntity.cs
index ed0a21bc083..96bef973211 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedEntity.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedEntity.cs
@@ -7,7 +7,7 @@ namespace Semmle.Extraction.CSharp.Entities
///
/// A cached entity.
///
- /// The property is used as label in caching.
+ /// The property is used as label in caching.
///
public abstract class CachedEntity : LabelledEntity
{
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/IEntity.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/IEntity.cs
index d8d3c538e42..f6f60ff9146 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/IEntity.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/IEntity.cs
@@ -9,12 +9,12 @@ namespace Semmle.Extraction.CSharp
/// Entities are divided into two types: normal entities and cached
/// entities.
///
- /// Normal entities implement directly, and they
+ /// Normal entities implement directly, and they
/// (may) emit contents to the trap file during object construction.
///
- /// Cached entities implement , and they
- /// emit contents to the trap file when
- /// is called. Caching prevents
+ /// Cached entities implement , and they
+ /// emit contents to the trap file when
+ /// is called. Caching prevents
/// from being called on entities that have already been emitted.
///
public interface IEntity
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs
index f5021d38eeb..9241528eb75 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs
@@ -77,7 +77,7 @@ namespace Semmle.Extraction.CSharp.Entities
///
/// Gets a string representation of a constant value.
///
- /// The value.
+ /// The value.
/// The string representation.
public static string ValueAsString(object? value)
{
@@ -98,7 +98,6 @@ namespace Semmle.Extraction.CSharp.Entities
/// The node to extract.
/// The parent entity.
/// The child index.
- /// A type hint.
/// The new expression.
public static Expression Create(Context cx, ExpressionSyntax node, IExpressionParentEntity parent, int child, Boolean isCompilerGenerated = false)
{
@@ -120,7 +119,6 @@ namespace Semmle.Extraction.CSharp.Entities
/// The node to extract.
/// The parent entity.
/// The child index.
- /// A type hint.
public static void CreateDeferred(Context cx, ExpressionSyntax node, IExpressionParentEntity parent, int child)
{
if (ContainsPattern(node))
@@ -244,7 +242,6 @@ namespace Semmle.Extraction.CSharp.Entities
/// to show the target of the call. Also note the dynamic method
/// name if available.
///
- /// Context
/// The expression.
public void OperatorCall(TextWriter trapFile, ExpressionSyntax node)
{
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression`1.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression`1.cs
index 6386e43a9b4..4c2670369e0 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression`1.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression`1.cs
@@ -20,7 +20,7 @@ namespace Semmle.Extraction.CSharp.Entities
/// expressions and expr_location are populated by the constructor
/// (should not fail), so even if expression-type specific population fails (e.g., in
/// standalone extraction), the expression created via
- /// will
+ /// will
/// still be valid.
///
protected abstract void PopulateExpression(TextWriter trapFile);
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs
index 189a07f6f47..b2106febaff 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/NamedType.cs
@@ -21,10 +21,9 @@ namespace Semmle.Extraction.CSharp.Entities
NamedTypeFactory.Instance.CreateEntityFromSymbol(cx, type);
///
- /// Creates a named type entity from a tuple type. Unlike `Create`, this
+ /// Creates a named type entity from a tuple type. Unlike , this
/// will create an entity for the underlying `System.ValueTuple` struct.
- /// For example, `(int, string)` will result in an entity for
- /// `System.ValueTuple`.
+ /// For example, `(int, string)` will result in an entity for `System.ValueTuple<int, string>`.
///
public static NamedType CreateNamedTypeFromTupleType(Context cx, INamedTypeSymbol type) =>
UnderlyingTupleTypeFactory.Instance.CreateEntity(cx, (new SymbolEqualityWrapper(type), typeof(TupleType)), type);
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Nullability.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Nullability.cs
index 9791f386a19..add36226f16 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Nullability.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Types/Nullability.cs
@@ -209,8 +209,8 @@ namespace Semmle.Extraction.CSharp.Entities
/// This is so that we can avoid populating nullability in most cases.
/// For example,
///
- /// IEnumerable<string?> // false
- /// IEnumerable<string?>? // true
+ /// IEnumerable<string?> // false
+ /// IEnumerable<string?>? // true
/// string? // true
/// string[] // true
/// string?[] // false
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs
index f2fc4b85d7f..141bded87ac 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/UserOperator.cs
@@ -86,7 +86,7 @@ namespace Semmle.Extraction.CSharp.Entities
/// Logs an error if the name is not found.
///
/// Extractor context.
- /// The method name.
+ /// The method symbol.
/// The converted name.
private static string OperatorSymbol(Context cx, IMethodSymbol method)
{
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs
index 8d819d715f9..67bb2808ae6 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Context.cs
@@ -152,7 +152,7 @@ namespace Semmle.Extraction.CSharp
///
/// Enqueue the given action to be performed later.
///
- /// The action to run.
+ /// The action to run.
public void PopulateLater(Action a, bool preserveDuplicationKey = true)
{
var key = preserveDuplicationKey ? GetCurrentTagStackKey() : null;
@@ -598,7 +598,6 @@ namespace Semmle.Extraction.CSharp
///
/// Register a program entity which can be bound to comments.
///
- /// Extractor context.
/// Program entity.
/// Location of the entity.
public void BindComments(Entity entity, Microsoft.CodeAnalysis.Location? l)
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TrapWriter.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TrapWriter.cs
index 4830c3209c2..42e933c8eaf 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TrapWriter.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/TrapWriter.cs
@@ -171,7 +171,7 @@ namespace Semmle.Extraction.CSharp
///
/// Close the trap file, and move it to the right place in the trap directory.
/// If the file exists already, rename it to allow the new file (ending .trap.gz)
- /// to sit alongside the old file (except if is true,
+ /// to sit alongside the old file (except if is true,
/// in which case only the existing file is kept).
///
public void Dispose()
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Trap/EscapingTextWriter.cs b/csharp/extractor/Semmle.Extraction.CSharp/Trap/EscapingTextWriter.cs
index 63f5e81c358..28e1d0bf146 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Trap/EscapingTextWriter.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Trap/EscapingTextWriter.cs
@@ -8,7 +8,7 @@ namespace Semmle.Extraction.CSharp
{
///
/// A `TextWriter` object that wraps another `TextWriter` object, and which
- /// HTML escapes the characters `&`, `{`, `}`, `"`, `@`, and `#`, before
+ /// HTML escapes the characters &, {, }, ", @, and #, before
/// writing to the underlying object.
///
public sealed class EscapingTextWriter : TextWriter
diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Trap/TrapExtensions.cs b/csharp/extractor/Semmle.Extraction.CSharp/Trap/TrapExtensions.cs
index 787ba62e3e8..22e38bac51c 100644
--- a/csharp/extractor/Semmle.Extraction.CSharp/Trap/TrapExtensions.cs
+++ b/csharp/extractor/Semmle.Extraction.CSharp/Trap/TrapExtensions.cs
@@ -226,7 +226,7 @@ namespace Semmle.Extraction.CSharp
///
/// Builds a trap builder using a separator and an action for each item in the list.
///
- /// The type of the items.
+ /// The type of the items.
/// The trap builder to append to.
/// The separator string (e.g. ",")
/// The list of items.
@@ -251,7 +251,7 @@ namespace Semmle.Extraction.CSharp
///
/// Builds a trap builder using a separator and an action for each item in the list.
///
- /// The type of the items.
+ /// The type of the items.
/// The trap builder to append to.
/// The separator string (e.g. ",")
/// The list of items.
diff --git a/csharp/extractor/Semmle.Util/CanonicalPathCache.cs b/csharp/extractor/Semmle.Util/CanonicalPathCache.cs
index a79854333ac..d3cbf41fa10 100644
--- a/csharp/extractor/Semmle.Util/CanonicalPathCache.cs
+++ b/csharp/extractor/Semmle.Util/CanonicalPathCache.cs
@@ -208,7 +208,7 @@ namespace Semmle.Util
/// Create cache with a given capacity.
///
/// The algorithm for determining the canonical path.
- /// The size of the cache.
+ /// The size of the cache.
public CanonicalPathCache(int maxCapacity, PathStrategy pathStrategy)
{
if (maxCapacity <= 0)
@@ -230,7 +230,6 @@ namespace Semmle.Util
///
///
/// Size of the cache.
- /// Policy for following symlinks.
/// A new CanonicalPathCache.
public static CanonicalPathCache Create(ILogger logger, int maxCapacity)
{
diff --git a/csharp/extractor/Semmle.Util/CommandBuilder.cs b/csharp/extractor/Semmle.Util/CommandBuilder.cs
index 3d8f907f866..1b6cd3176c4 100644
--- a/csharp/extractor/Semmle.Util/CommandBuilder.cs
+++ b/csharp/extractor/Semmle.Util/CommandBuilder.cs
@@ -62,7 +62,6 @@ namespace Semmle.Util
///
/// The argument to append.
/// Whether to always quote the argument.
- /// Whether to escape for cmd.exe
///
///
/// This implementation is copied from