Skip to content

Commit 4cd0883

Browse files
committed
correction Of #82
1 parent ef91e25 commit 4cd0883

3 files changed

Lines changed: 15 additions & 12 deletions

File tree

src/NetArchTest.Rules/Dependencies/DependencySearch.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ internal class DependencySearch
2020
/// <returns>A list of found types.</returns>
2121
public IReadOnlyList<TypeDefinition> FindTypesThatHaveDependencyOnAny(IEnumerable<TypeDefinition> input, IEnumerable<string> dependencies)
2222
{
23-
return FindTypes(input, TypeDefinitionCheckingResult.SearchType.HaveDependencyOnAny, dependencies);
23+
return FindTypes(input, TypeDefinitionCheckingResult.SearchType.HaveDependencyOnAny, dependencies, true);
2424
}
2525

2626
/// <summary>
@@ -31,7 +31,7 @@ public IReadOnlyList<TypeDefinition> FindTypesThatHaveDependencyOnAny(IEnumerabl
3131
/// <returns>A list of found types.</returns>
3232
public IReadOnlyList<TypeDefinition> FindTypesThatHaveDependencyOnAll(IEnumerable<TypeDefinition> input, IEnumerable<string> dependencies)
3333
{
34-
return FindTypes(input, TypeDefinitionCheckingResult.SearchType.HaveDependencyOnAll, dependencies);
34+
return FindTypes(input, TypeDefinitionCheckingResult.SearchType.HaveDependencyOnAll, dependencies, true);
3535
}
3636

3737
/// <summary>
@@ -42,7 +42,7 @@ public IReadOnlyList<TypeDefinition> FindTypesThatHaveDependencyOnAll(IEnumerabl
4242
/// <returns>A list of found types.</returns>
4343
public IReadOnlyList<TypeDefinition> FindTypesThatOnlyHaveDependenciesOnAnyOrNone(IEnumerable<TypeDefinition> input, IEnumerable<string> dependencies)
4444
{
45-
return FindTypes(input, TypeDefinitionCheckingResult.SearchType.OnlyHaveDependenciesOnAnyOrNone, dependencies);
45+
return FindTypes(input, TypeDefinitionCheckingResult.SearchType.OnlyHaveDependenciesOnAnyOrNone, dependencies, false);
4646
}
4747

4848
/// <summary>
@@ -53,7 +53,7 @@ public IReadOnlyList<TypeDefinition> FindTypesThatOnlyHaveDependenciesOnAnyOrNon
5353
/// <returns>A list of found types.</returns>
5454
public IReadOnlyList<TypeDefinition> FindTypesThatOnlyHaveDependenciesOnAny(IEnumerable<TypeDefinition> input, IEnumerable<string> dependencies)
5555
{
56-
return FindTypes(input, TypeDefinitionCheckingResult.SearchType.OnlyHaveDependenciesOnAny, dependencies);
56+
return FindTypes(input, TypeDefinitionCheckingResult.SearchType.OnlyHaveDependenciesOnAny, dependencies, false);
5757
}
5858

5959
/// <summary>
@@ -64,17 +64,17 @@ public IReadOnlyList<TypeDefinition> FindTypesThatOnlyHaveDependenciesOnAny(IEnu
6464
/// <returns>A list of found types.</returns>
6565
public IReadOnlyList<TypeDefinition> FindTypesThatOnlyOnlyHaveDependenciesOnAll(IEnumerable<TypeDefinition> input, IEnumerable<string> dependencies)
6666
{
67-
return FindTypes(input, TypeDefinitionCheckingResult.SearchType.OnlyHaveDependenciesOnAll, dependencies);
67+
return FindTypes(input, TypeDefinitionCheckingResult.SearchType.OnlyHaveDependenciesOnAll, dependencies, false);
6868
}
6969

70-
private List<TypeDefinition> FindTypes(IEnumerable<TypeDefinition> input, TypeDefinitionCheckingResult.SearchType searchType, IEnumerable<string> dependencies)
70+
private List<TypeDefinition> FindTypes(IEnumerable<TypeDefinition> input, TypeDefinitionCheckingResult.SearchType searchType, IEnumerable<string> dependencies, bool serachForDependencyInFieldConstant)
7171
{
7272
var output = new List<TypeDefinition>();
7373
var searchTree = new CachedNamespaceTree(dependencies);
7474

7575
foreach (var type in input)
7676
{
77-
var context = new TypeDefinitionCheckingContext(type, searchType, searchTree);
77+
var context = new TypeDefinitionCheckingContext(type, searchType, searchTree, serachForDependencyInFieldConstant);
7878
if (context.IsTypeFound())
7979
{
8080
output.Add(type);

src/NetArchTest.Rules/Dependencies/TypeDefinitionCheckingContext.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@
99
internal class TypeDefinitionCheckingContext
1010
{
1111
private readonly TypeDefinition _typeToCheck;
12-
private readonly TypeDefinitionCheckingResult _result;
13-
12+
private readonly TypeDefinitionCheckingResult _result;
13+
private readonly bool _serachForDependencyInFieldConstant;
1414

15-
public TypeDefinitionCheckingContext(TypeDefinition typeToCheck, TypeDefinitionCheckingResult.SearchType searchType, ISearchTree searchTree)
15+
public TypeDefinitionCheckingContext(TypeDefinition typeToCheck, TypeDefinitionCheckingResult.SearchType searchType, ISearchTree searchTree, bool serachForDependencyInFieldConstant = false)
1616
{
1717
_typeToCheck = typeToCheck;
18-
_result = new TypeDefinitionCheckingResult(searchType, searchTree);
18+
_result = new TypeDefinitionCheckingResult(searchType, searchTree);
19+
_serachForDependencyInFieldConstant = serachForDependencyInFieldConstant;
1920
}
2021

2122
public bool IsTypeFound()
@@ -96,7 +97,7 @@ private void CheckFields(TypeDefinition typeToCheck)
9697
{
9798
CheckCustomAttributes(field);
9899
CheckTypeReference(field.FieldType);
99-
if (field.HasConstant && field.FieldType.FullName == typeof(string).FullName)
100+
if (_serachForDependencyInFieldConstant && field.HasConstant && field.FieldType.FullName == typeof(string).FullName)
100101
{
101102
_result.CheckDependency(field.Constant.ToString());
102103
}

test/NetArchTest.TestStructure/Dependencies/TypeOfSearch/Classes.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
public class Class_A
1111
{
12+
string stringField = "I am not a dependency!";
13+
1214
public static void LetUsCreateSomeAnonymousTypes()
1315
{
1416
var numbers = Enumerable.Range(0, 1);

0 commit comments

Comments
 (0)