Skip to content

Commit 6de89f0

Browse files
committed
#3334 - fix nullable warnings
1 parent f6bae02 commit 6de89f0

File tree

21 files changed

+63
-60
lines changed

21 files changed

+63
-60
lines changed

src/GitVersion.Core/Core/GitVersionModule.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using GitVersion.Extensions;
12
using Microsoft.Extensions.DependencyInjection;
23

34
namespace GitVersion;
@@ -6,8 +7,10 @@ public abstract class GitVersionModule : IGitVersionModule
67
{
78
public abstract void RegisterTypes(IServiceCollection services);
89

9-
protected static IEnumerable<Type> FindAllDerivedTypes<T>(Assembly assembly)
10+
protected static IEnumerable<Type> FindAllDerivedTypes<T>(Assembly? assembly)
1011
{
12+
assembly.NotNull();
13+
1114
var derivedType = typeof(T);
1215
return assembly.GetTypes().Where(t => t != derivedType && derivedType.IsAssignableFrom(t));
1316
}

src/GitVersion.Core/Core/MergeCommitFinder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ internal class MergeCommitFinder
88
{
99
private readonly IEnumerable<IBranch> excludedBranches;
1010
private readonly ILog log;
11-
private readonly Dictionary<IBranch?, List<BranchCommit>> mergeBaseCommitsCache = new();
11+
private readonly Dictionary<IBranch, List<BranchCommit>> mergeBaseCommitsCache = new();
1212
private readonly RepositoryStore repositoryStore;
1313
private readonly GitVersionConfiguration configuration;
1414

src/GitVersion.Core/Extensions/CommonExtensions.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ public static string NotNullOrEmpty([NotNull] this string? value, [CallerArgumen
1515
throw new ArgumentException("The parameter is null or empty.", name);
1616
}
1717

18-
#pragma warning disable CS8777 // Parameter must have a non-null value when exiting.
19-
return value!;
20-
#pragma warning restore CS8777 // Parameter must have a non-null value when exiting.
18+
return value;
2119
}
2220

2321
public static string NotNullOrWhitespace([NotNull] this string? value, [CallerArgumentExpression("value")] string name = "")
@@ -27,8 +25,6 @@ public static string NotNullOrWhitespace([NotNull] this string? value, [CallerAr
2725
throw new ArgumentException("The parameter is null or empty or contains only white space.", name);
2826
}
2927

30-
#pragma warning disable CS8777 // Parameter must have a non-null value when exiting.
31-
return value!;
32-
#pragma warning restore CS8777 // Parameter must have a non-null value when exiting.
28+
return value;
3329
}
3430
}

src/GitVersion.Core/Extensions/ServiceCollectionExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ public static IServiceCollection AddModule(this IServiceCollection serviceCollec
1010
return serviceCollection;
1111
}
1212

13-
public static TService? GetServiceForType<TService, TType>(this IServiceProvider serviceProvider) =>
14-
serviceProvider.GetServices<TService>().SingleOrDefault(t => t?.GetType() == typeof(TType));
13+
public static TService GetServiceForType<TService, TType>(this IServiceProvider serviceProvider) =>
14+
serviceProvider.GetServices<TService>().Single(t => t?.GetType() == typeof(TType));
1515
}

src/GitVersion.Core/Git/ReferenceName.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ public static ReferenceName Parse(string canonicalName)
5656
public bool IsPullRequest { get; }
5757

5858
public bool Equals(ReferenceName? other) => equalityHelper.Equals(this, other);
59-
public int CompareTo(ReferenceName other) => comparerHelper.Compare(this, other);
60-
public override bool Equals(object obj) => Equals((obj as ReferenceName));
59+
public int CompareTo(ReferenceName? other) => comparerHelper.Compare(this, other);
60+
public override bool Equals(object? obj) => Equals((obj as ReferenceName));
6161
public override int GetHashCode() => equalityHelper.GetHashCode(this);
6262
public override string ToString() => Friendly;
6363

src/GitVersion.Core/OutputVariables/VersionVariables.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Text.Encodings.Web;
22
using System.Text.Json;
3+
using GitVersion.Extensions;
34
using GitVersion.Helpers;
45
using YamlDotNet.Serialization;
56
using static GitVersion.Extensions.ObjectExtensions;
@@ -115,7 +116,8 @@ private static VersionVariables FromDictionary(IEnumerable<KeyValuePair<string,
115116
.Select(p => properties?.Single(v => string.Equals(v.Key, p.Name, StringComparison.InvariantCultureIgnoreCase)).Value)
116117
.Cast<object>()
117118
.ToArray();
118-
return (VersionVariables)Activator.CreateInstance(type, ctorArgs);
119+
var instance = Activator.CreateInstance(type, ctorArgs).NotNull();
120+
return (VersionVariables)instance;
119121
}
120122

121123
public static VersionVariables FromJson(string json)

src/GitVersion.Core/VersionCalculation/BaseVersionCalculators/VersionStrategyModule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class VersionStrategyModule : GitVersionModule
77
public override void RegisterTypes(IServiceCollection services)
88
{
99
var versionStrategies = FindAllDerivedTypes<IVersionStrategy>(Assembly.GetAssembly(GetType()))
10-
.Where(x => !x.IsAbstract && !x.IsInterface);
10+
.Where(x => x is { IsAbstract: false, IsInterface: false });
1111

1212
foreach (var versionStrategy in versionStrategies)
1313
{

src/GitVersion.Core/VersionCalculation/IncrementStrategyFinder.cs

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
3030
{
3131
configuration.NotNull();
3232

33-
var commitMessageIncrement = FindCommitMessageIncrement(this.repository, context, configuration, baseVersion.BaseVersionSource);
33+
var commitMessageIncrement = FindCommitMessageIncrement(context, configuration, baseVersion.BaseVersionSource);
3434

3535
var defaultIncrement = configuration.Increment.ToVersionField();
3636

@@ -73,8 +73,7 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
7373
: null;
7474
}
7575

76-
private VersionField? FindCommitMessageIncrement(IGitRepository repository, GitVersionContext context,
77-
EffectiveConfiguration configuration, ICommit? baseCommit)
76+
private VersionField? FindCommitMessageIncrement(GitVersionContext context, EffectiveConfiguration configuration, ICommit? baseCommit)
7877
{
7978
if (baseCommit == null) return null;
8079

@@ -83,7 +82,7 @@ public VersionField DetermineIncrementedField(GitVersionContext context, BaseVer
8382
return null;
8483
}
8584

86-
var commits = GetIntermediateCommits(repository, baseCommit, context.CurrentCommit);
85+
var commits = GetIntermediateCommits(baseCommit, context.CurrentCommit);
8786

8887
// consider commit messages since latest tag only (see #3071)
8988
var tags = new HashSet<string?>(repository.Tags.Select(t => t.TargetSha));
@@ -106,33 +105,33 @@ private static Regex TryGetRegexOrDefault(string? messageRegex, Regex defaultReg
106105
: CompiledRegexCache.GetOrAdd(messageRegex, pattern => new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase));
107106

108107
/// <summary>
109-
/// Get the sequence of commits in a <paramref name="repository"/> between a <paramref name="baseCommit"/> (exclusive)
108+
/// Get the sequence of commits in a repository between a <paramref name="baseCommit"/> (exclusive)
110109
/// and a particular <paramref name="headCommit"/> (inclusive)
111110
/// </summary>
112-
private IEnumerable<ICommit> GetIntermediateCommits(IGitRepository repository, IGitObject baseCommit, ICommit? headCommit)
111+
private IEnumerable<ICommit> GetIntermediateCommits(IGitObject baseCommit, ICommit? headCommit)
113112
{
114-
var map = GetHeadCommitsMap(repository, headCommit);
113+
var map = GetHeadCommitsMap(headCommit);
115114
if (!map.TryGetValue(baseCommit.Sha, out var baseIndex)) return Enumerable.Empty<ICommit>();
116115
var commitAfterBaseIndex = baseIndex + 1;
117-
var headCommits = GetHeadCommits(repository, headCommit);
116+
var headCommits = GetHeadCommits(headCommit);
118117
return new ArraySegment<ICommit>(headCommits, commitAfterBaseIndex, headCommits.Length - commitAfterBaseIndex);
119118
}
120119

121120
/// <summary>
122121
/// Get a mapping of commit shas to their zero-based position in the sequence of commits from the beginning of a
123-
/// <paramref name="repository"/> to a particular <paramref name="headCommit"/>
122+
/// repository to a particular <paramref name="headCommit"/>
124123
/// </summary>
125-
private Dictionary<string, int> GetHeadCommitsMap(IGitRepository repository, ICommit? headCommit) =>
124+
private Dictionary<string, int> GetHeadCommitsMap(ICommit? headCommit) =>
126125
this.headCommitsMapCache.GetOrAdd(headCommit?.Sha ?? "NULL", () =>
127-
GetHeadCommits(repository, headCommit)
126+
GetHeadCommits(headCommit)
128127
.Select((commit, index) => (commit.Sha, Index: index))
129128
.ToDictionary(t => t.Sha, t => t.Index));
130129

131130
/// <summary>
132-
/// Get the sequence of commits from the beginning of a <paramref name="repository"/> to a particular
131+
/// Get the sequence of commits from the beginning of a repository to a particular
133132
/// <paramref name="headCommit"/> (inclusive)
134133
/// </summary>
135-
private ICommit[] GetHeadCommits(IGitRepository repository, ICommit? headCommit) =>
134+
private ICommit[] GetHeadCommits(ICommit? headCommit) =>
136135
this.headCommitsCache.GetOrAdd(headCommit?.Sha ?? "NULL", () =>
137136
GetCommitsReacheableFromHead(repository, headCommit).ToArray());
138137

src/GitVersion.Core/VersionCalculation/NextVersion.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ public NextVersion(SemanticVersion incrementedVersion, BaseVersion baseVersion,
2626
Branch = branch.NotNull();
2727
}
2828

29-
public int CompareTo(NextVersion other) => IncrementedVersion.CompareTo(other.IncrementedVersion);
29+
public int CompareTo(NextVersion? other) => IncrementedVersion.CompareTo(other?.IncrementedVersion);
3030

31-
public static bool operator ==(NextVersion left, NextVersion right) => left.CompareTo(right) == 0;
31+
public static bool operator ==(NextVersion left, NextVersion? right) => left.CompareTo(right) == 0;
3232

3333
public static bool operator !=(NextVersion left, NextVersion right) => left.CompareTo(right) != 0;
3434

@@ -40,9 +40,9 @@ public NextVersion(SemanticVersion incrementedVersion, BaseVersion baseVersion,
4040

4141
public static bool operator >=(NextVersion left, NextVersion right) => left.CompareTo(right) >= 0;
4242

43-
public bool Equals(NextVersion other) => this == other;
43+
public bool Equals(NextVersion? other) => this == other;
4444

45-
public override bool Equals(object other) => other is NextVersion nextVersion && Equals(nextVersion);
45+
public override bool Equals(object? other) => other is NextVersion nextVersion && Equals(nextVersion);
4646

4747
public override string ToString() => $"{BaseVersion} | {IncrementedVersion}";
4848

src/GitVersion.Core/VersionCalculation/NextVersionCalculator.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public virtual NextVersion FindVersion()
5252
if (Context.IsCurrentCommitTagged)
5353
{
5454
// Will always be 0, don't bother with the +0 on tags
55-
var semanticVersionBuildMetaData = this.mainlineVersionCalculator.CreateVersionBuildMetaData(Context.CurrentCommit!);
55+
var semanticVersionBuildMetaData = this.mainlineVersionCalculator.CreateVersionBuildMetaData(Context.CurrentCommit);
5656
semanticVersionBuildMetaData.CommitsSinceTag = null;
5757
var semanticVersion = new SemanticVersion(Context.CurrentCommitTaggedVersion) { BuildMetaData = semanticVersionBuildMetaData };
5858
taggedSemanticVersion = semanticVersion;
@@ -135,15 +135,16 @@ private void UpdatePreReleaseTag(EffectiveBranchConfiguration configuration, Sem
135135

136136
if (lastTag != null && MajorMinorPatchEqual(lastTag, semanticVersion) && lastTag.HasPreReleaseTagWithLabel)
137137
{
138-
number = lastTag.PreReleaseTag!.Number + 1;
138+
number = lastTag.PreReleaseTag?.Number + 1;
139139
}
140140

141141
number ??= 1;
142142

143143
semanticVersion.PreReleaseTag = new SemanticVersionPreReleaseTag(tagToUse, number);
144144
}
145145

146-
private static bool MajorMinorPatchEqual(SemanticVersion lastTag, SemanticVersion baseVersion) => lastTag.Major == baseVersion.Major && lastTag.Minor == baseVersion.Minor && lastTag.Patch == baseVersion.Patch;
146+
private static bool MajorMinorPatchEqual(SemanticVersion lastTag, SemanticVersion baseVersion) =>
147+
lastTag.Major == baseVersion.Major && lastTag.Minor == baseVersion.Minor && lastTag.Patch == baseVersion.Patch;
147148

148149
private NextVersion Calculate(IBranch branch, GitVersionConfiguration configuration)
149150
{
@@ -152,6 +153,8 @@ private NextVersion Calculate(IBranch branch, GitVersionConfiguration configurat
152153
var nextVersions = GetNextVersions(branch, configuration).ToArray();
153154
var maxVersion = nextVersions.Max();
154155

156+
maxVersion.NotNull();
157+
155158
var matchingVersionsOnceIncremented = nextVersions
156159
.Where(v => v.BaseVersion.BaseVersionSource != null && v.IncrementedVersion == maxVersion.IncrementedVersion)
157160
.ToList();
@@ -192,13 +195,14 @@ static NextVersion CompareVersions(
192195
filteredVersions = filteredVersions.Where(v => !v.BaseVersion.SemanticVersion.HasPreReleaseTagWithLabel);
193196
}
194197

195-
var version = filteredVersions
198+
var versions = filteredVersions as NextVersion[] ?? filteredVersions.ToArray();
199+
var version = versions
196200
.Where(v => v.BaseVersion.BaseVersionSource != null)
197201
.OrderByDescending(v => v.IncrementedVersion)
198-
.ThenByDescending(v => v.BaseVersion.BaseVersionSource!.When)
202+
.ThenByDescending(v => v.BaseVersion.BaseVersionSource?.When)
199203
.FirstOrDefault();
200204

201-
version ??= filteredVersions.Where(v => v.BaseVersion.BaseVersionSource == null)
205+
version ??= versions.Where(v => v.BaseVersion.BaseVersionSource == null)
202206
.OrderByDescending(v => v.IncrementedVersion)
203207
.First();
204208
latestBaseVersionSource = version.BaseVersion.BaseVersionSource;

0 commit comments

Comments
 (0)