Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
d1509153
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d1509153
编写于
6月 15, 2015
作者:
T
Tanner Gooding
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3513 from tannergooding/master
[Automated] Merge 'stabilization' into 'master'
上级
08e6682b
c0a7f07a
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
59 addition
and
59 deletion
+59
-59
src/Compilers/Core/VBCSCompiler/AnalyzerConsistencyChecker.cs
...Compilers/Core/VBCSCompiler/AnalyzerConsistencyChecker.cs
+8
-8
src/VisualStudio/Core/Def/Implementation/AnalyzerDependencyChecker.cs
...udio/Core/Def/Implementation/AnalyzerDependencyChecker.cs
+6
-6
src/VisualStudio/Core/Def/Implementation/AnalyzerDependencyCheckingService.cs
...e/Def/Implementation/AnalyzerDependencyCheckingService.cs
+4
-4
src/VisualStudio/Core/Def/Implementation/IIgnorableAssemblyList.cs
...lStudio/Core/Def/Implementation/IIgnorableAssemblyList.cs
+1
-1
src/VisualStudio/Core/Def/Implementation/IgnorableAssemblyIdentityList.cs
.../Core/Def/Implementation/IgnorableAssemblyIdentityList.cs
+2
-2
src/VisualStudio/Core/Def/Implementation/IgnorableAssemblyNamePrefixList.cs
...ore/Def/Implementation/IgnorableAssemblyNamePrefixList.cs
+2
-2
src/VisualStudio/Core/Def/ServicesVisualStudio.csproj
src/VisualStudio/Core/Def/ServicesVisualStudio.csproj
+3
-3
src/VisualStudio/Core/Test/AnalyzerSupport/AnalyzerDependencyCheckerTests.vb
...re/Test/AnalyzerSupport/AnalyzerDependencyCheckerTests.vb
+33
-33
未找到文件。
src/Compilers/Core/VBCSCompiler/AnalyzerConsistencyChecker.cs
浏览文件 @
d1509153
...
...
@@ -12,19 +12,19 @@ namespace Microsoft.CodeAnalysis.CompilerServer
{
internal
static
class
AnalyzerConsistencyChecker
{
private
static
readonly
ImmutableArray
<
string
>
s_default
WhiteList
=
ImmutableArray
.
Create
(
"mscorlib"
,
"System"
,
"Microsoft.CodeAnalysis"
);
private
static
readonly
ImmutableArray
<
string
>
s_default
IgnorableReferenceNames
=
ImmutableArray
.
Create
(
"mscorlib"
,
"System"
,
"Microsoft.CodeAnalysis"
);
public
static
bool
Check
(
string
baseDirectory
,
IEnumerable
<
CommandLineAnalyzerReference
>
analyzerReferences
,
IAnalyzerAssemblyLoader
loader
,
IEnumerable
<
string
>
referenceWhiteList
=
null
)
public
static
bool
Check
(
string
baseDirectory
,
IEnumerable
<
CommandLineAnalyzerReference
>
analyzerReferences
,
IAnalyzerAssemblyLoader
loader
,
IEnumerable
<
string
>
ignorableReferenceNames
=
null
)
{
if
(
referenceWhiteList
==
null
)
if
(
ignorableReferenceNames
==
null
)
{
referenceWhiteList
=
s_defaultWhiteList
;
ignorableReferenceNames
=
s_defaultIgnorableReferenceNames
;
}
try
{
CompilerServerLogger
.
Log
(
"Begin Analyzer Consistency Check"
);
return
CheckCore
(
baseDirectory
,
analyzerReferences
,
loader
,
referenceWhiteList
);
return
CheckCore
(
baseDirectory
,
analyzerReferences
,
loader
,
ignorableReferenceNames
);
}
catch
(
Exception
e
)
{
...
...
@@ -37,7 +37,7 @@ public static bool Check(string baseDirectory, IEnumerable<CommandLineAnalyzerRe
}
}
private
static
bool
CheckCore
(
string
baseDirectory
,
IEnumerable
<
CommandLineAnalyzerReference
>
analyzerReferences
,
IAnalyzerAssemblyLoader
loader
,
IEnumerable
<
string
>
referenceWhiteList
)
private
static
bool
CheckCore
(
string
baseDirectory
,
IEnumerable
<
CommandLineAnalyzerReference
>
analyzerReferences
,
IAnalyzerAssemblyLoader
loader
,
IEnumerable
<
string
>
ignorableReferenceNames
)
{
var
resolvedPaths
=
new
List
<
string
>();
...
...
@@ -56,14 +56,14 @@ private static bool CheckCore(string baseDirectory, IEnumerable<CommandLineAnaly
// Don't worry about paths we can't resolve. The compiler will report an error for that later.
}
// First, check that the set of references is complete, modulo items in the
white
list.
// First, check that the set of references is complete, modulo items in the
safe
list.
foreach
(
var
resolvedPath
in
resolvedPaths
)
{
var
missingDependencies
=
AssemblyUtilities
.
IdentifyMissingDependencies
(
resolvedPath
,
resolvedPaths
);
foreach
(
var
missingDependency
in
missingDependencies
)
{
if
(!
referenceWhiteList
.
Any
(
name
=>
missingDependency
.
Name
.
StartsWith
(
name
)))
if
(!
ignorableReferenceNames
.
Any
(
name
=>
missingDependency
.
Name
.
StartsWith
(
name
)))
{
CompilerServerLogger
.
Log
(
$"Analyzer assembly
{
resolvedPath
}
depends on '
{
missingDependency
}
' but it was not found."
);
return
false
;
...
...
src/VisualStudio/Core/Def/Implementation/AnalyzerDependencyChecker.cs
浏览文件 @
d1509153
...
...
@@ -17,16 +17,16 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation
internal
sealed
class
AnalyzerDependencyChecker
{
private
readonly
HashSet
<
string
>
_analyzerFilePaths
;
private
readonly
List
<
I
AssemblyWhiteList
>
_assemblyWhite
Lists
;
private
readonly
List
<
I
IgnorableAssemblyList
>
_ignorableAssembly
Lists
;
private
readonly
IBindingRedirectionService
_bindingRedirectionService
;
public
AnalyzerDependencyChecker
(
IEnumerable
<
string
>
analyzerFilePaths
,
IEnumerable
<
I
AssemblyWhiteList
>
assemblyWhite
Lists
,
IBindingRedirectionService
bindingRedirectionService
=
null
)
public
AnalyzerDependencyChecker
(
IEnumerable
<
string
>
analyzerFilePaths
,
IEnumerable
<
I
IgnorableAssemblyList
>
ignorableAssembly
Lists
,
IBindingRedirectionService
bindingRedirectionService
=
null
)
{
Debug
.
Assert
(
analyzerFilePaths
!=
null
);
Debug
.
Assert
(
assemblyWhite
Lists
!=
null
);
Debug
.
Assert
(
ignorableAssembly
Lists
!=
null
);
_analyzerFilePaths
=
new
HashSet
<
string
>(
analyzerFilePaths
,
StringComparer
.
OrdinalIgnoreCase
);
_
assemblyWhiteLists
=
assemblyWhite
Lists
.
ToList
();
_
ignorableAssemblyLists
=
ignorableAssembly
Lists
.
ToList
();
_bindingRedirectionService
=
bindingRedirectionService
;
}
...
...
@@ -46,7 +46,7 @@ public AnalyzerDependencyResults Run(CancellationToken cancellationToken = defau
}
}
_
assemblyWhiteLists
.
Add
(
new
AssemblyIdentityWhite
List
(
analyzerInfos
.
Select
(
info
=>
info
.
Identity
)));
_
ignorableAssemblyLists
.
Add
(
new
IgnorableAssemblyIdentity
List
(
analyzerInfos
.
Select
(
info
=>
info
.
Identity
)));
// First check for analyzers with the same identity but different
// contents (that is, different MVIDs).
...
...
@@ -74,7 +74,7 @@ private ImmutableArray<MissingAnalyzerDependency> FindMissingDependencies(List<A
?
_bindingRedirectionService
.
ApplyBindingRedirects
(
reference
)
:
reference
;
if
(!
_
assemblyWhiteLists
.
Any
(
whiteList
=>
white
List
.
Includes
(
redirectedReference
)))
if
(!
_
ignorableAssemblyLists
.
Any
(
ignorableAssemblyList
=>
ignorableAssembly
List
.
Includes
(
redirectedReference
)))
{
builder
.
Add
(
new
MissingAnalyzerDependency
(
analyzerInfo
.
Path
,
...
...
src/VisualStudio/Core/Def/Implementation/AnalyzerDependencyCheckingService.cs
浏览文件 @
d1509153
...
...
@@ -20,7 +20,7 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation
internal
sealed
class
AnalyzerDependencyCheckingService
{
private
static
readonly
object
s_dependencyConflictErrorId
=
new
object
();
private
static
readonly
I
AssemblyWhiteList
s_systemPrefixWhiteList
=
new
AssemblyNamePrefixWhite
List
(
"System"
);
private
static
readonly
I
IgnorableAssemblyList
s_systemPrefixList
=
new
IgnorableAssemblyNamePrefix
List
(
"System"
);
private
readonly
VisualStudioWorkspaceImpl
_workspace
;
private
readonly
HostDiagnosticUpdateSource
_updateSource
;
...
...
@@ -194,10 +194,10 @@ private Task<AnalyzerDependencyResults> GetConflictsAsync()
_task
=
_task
.
SafeContinueWith
(
_
=>
{
IEnumerable
<
AssemblyIdentity
>
loadedAssemblies
=
AppDomain
.
CurrentDomain
.
GetAssemblies
().
Select
(
assembly
=>
AssemblyIdentity
.
FromAssemblyDefinition
(
assembly
));
AssemblyIdentityWhiteList
loadedAssembliesWhiteList
=
new
AssemblyIdentityWhite
List
(
loadedAssemblies
);
I
AssemblyWhiteList
[]
whiteLists
=
new
[]
{
s_systemPrefixWhiteList
,
loadedAssembliesWhite
List
};
IgnorableAssemblyIdentityList
loadedAssembliesList
=
new
IgnorableAssemblyIdentity
List
(
loadedAssemblies
);
I
IgnorableAssemblyList
[]
ignorableAssemblyLists
=
new
[]
{
s_systemPrefixList
,
loadedAssemblies
List
};
return
new
AnalyzerDependencyChecker
(
currentAnalyzerPaths
,
white
Lists
,
_bindingRedirectionService
).
Run
(
_cancellationTokenSource
.
Token
);
return
new
AnalyzerDependencyChecker
(
currentAnalyzerPaths
,
ignorableAssembly
Lists
,
_bindingRedirectionService
).
Run
(
_cancellationTokenSource
.
Token
);
},
TaskScheduler
.
Default
);
...
...
src/VisualStudio/Core/Def/Implementation/I
AssemblyWhite
List.cs
→
src/VisualStudio/Core/Def/Implementation/I
IgnorableAssembly
List.cs
浏览文件 @
d1509153
...
...
@@ -4,7 +4,7 @@
namespace
Microsoft.VisualStudio.LanguageServices.Implementation
{
internal
interface
I
AssemblyWhite
List
internal
interface
I
IgnorableAssembly
List
{
bool
Includes
(
AssemblyIdentity
assemblyIdentity
);
}
...
...
src/VisualStudio/Core/Def/Implementation/
AssemblyIdentityWhite
List.cs
→
src/VisualStudio/Core/Def/Implementation/
IgnorableAssemblyIdentity
List.cs
浏览文件 @
d1509153
...
...
@@ -6,11 +6,11 @@
namespace
Microsoft.VisualStudio.LanguageServices.Implementation
{
internal
sealed
class
AssemblyIdentityWhiteList
:
IAssemblyWhite
List
internal
sealed
class
IgnorableAssemblyIdentityList
:
IIgnorableAssembly
List
{
private
readonly
HashSet
<
AssemblyIdentity
>
_assemblyIdentities
;
public
AssemblyIdentityWhite
List
(
IEnumerable
<
AssemblyIdentity
>
assemblyIdentities
)
public
IgnorableAssemblyIdentity
List
(
IEnumerable
<
AssemblyIdentity
>
assemblyIdentities
)
{
Debug
.
Assert
(
assemblyIdentities
!=
null
);
...
...
src/VisualStudio/Core/Def/Implementation/
AssemblyNamePrefixWhite
List.cs
→
src/VisualStudio/Core/Def/Implementation/
IgnorableAssemblyNamePrefix
List.cs
浏览文件 @
d1509153
...
...
@@ -5,11 +5,11 @@
namespace
Microsoft.VisualStudio.LanguageServices.Implementation
{
internal
sealed
class
AssemblyNamePrefixWhiteList
:
IAssemblyWhite
List
internal
sealed
class
IgnorableAssemblyNamePrefixList
:
IIgnorableAssembly
List
{
private
readonly
string
_prefix
;
public
AssemblyNamePrefixWhite
List
(
string
prefix
)
public
IgnorableAssemblyNamePrefix
List
(
string
prefix
)
{
Debug
.
Assert
(
prefix
!=
null
);
...
...
src/VisualStudio/Core/Def/ServicesVisualStudio.csproj
浏览文件 @
d1509153
...
...
@@ -32,12 +32,12 @@
<Compile
Include=
"Implementation\AnalyzerDependencyChecker.cs"
/>
<Compile
Include=
"Implementation\AnalyzerDependencyCheckingService.cs"
/>
<Compile
Include=
"Implementation\AnalyzerDependencyConflict.cs"
/>
<Compile
Include=
"Implementation\
AssemblyIdentityWhite
List.cs"
/>
<Compile
Include=
"Implementation\
AssemblyNamePrefixWhite
List.cs"
/>
<Compile
Include=
"Implementation\
IgnorableAssemblyIdentity
List.cs"
/>
<Compile
Include=
"Implementation\
IgnorableAssemblyNamePrefix
List.cs"
/>
<Compile
Include=
"Implementation\CompilationErrorTelemetry\CompilationErrorTelemetryIncrementalAnalyzer.cs"
/>
<Compile
Include=
"Implementation\Diagnostics\VisualStudioVenusSpanMappingService.cs"
/>
<Compile
Include=
"Implementation\EditAndContinue\Interop\NativeMethods.cs"
/>
<Compile
Include=
"Implementation\I
AssemblyWhite
List.cs"
/>
<Compile
Include=
"Implementation\I
IgnorableAssembly
List.cs"
/>
<Compile
Include=
"Implementation\IBindingRedirectionService.cs"
/>
<Compile
Include=
"Implementation\LanguageService\AbstractLanguageService`2.IVsLanguageBlock.cs"
/>
<Compile
Include=
"Implementation\Library\FindResults\TreeItems\AbstractSourceTreeItem.cs"
/>
...
...
src/VisualStudio/Core/Test/AnalyzerSupport/AnalyzerDependencyCheckerTests.vb
浏览文件 @
d1509153
...
...
@@ -33,11 +33,11 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests
Private
Shared
s_CSharpCompilerExecutable
As
String
=
Path
.
Combine
(
MSBuildDirectory
,
"csc.exe"
)
Private
Shared
s_mscorlibDisplayName
As
String
=
"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
Private
Shared
Function
Get
WhiteLists
()
As
IEnumerable
(
Of
IAssemblyWhite
List
)
Private
Shared
Function
Get
IgnorableAssemblyLists
()
As
IEnumerable
(
Of
IIgnorableAssembly
List
)
Dim
mscorlib
As
AssemblyIdentity
=
Nothing
AssemblyIdentity
.
TryParseDisplayName
(
s_mscorlibDisplayName
,
mscorlib
)
Return
{
New
AssemblyIdentityWhite
List
({
mscorlib
})}
Return
{
New
IgnorableAssemblyIdentity
List
({
mscorlib
})}
End
Function
<
Fact
,
WorkItem
(
1064914
)
>
...
...
@@ -48,7 +48,7 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests
Using
directory
=
New
DisposableDirectory
(
Temp
)
Dim
library
=
BuildLibrary
(
directory
,
"public class A { }"
,
"A"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
library
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
library
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Assert
.
Empty
(
results
.
Conflicts
)
...
...
@@ -76,7 +76,7 @@ public class A
Dim
libraryB
=
BuildLibrary
(
directory
,
sourceB
,
"B"
)
Dim
libraryA
=
BuildLibrary
(
directory
,
sourceA
,
"A"
,
"B"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Assert
.
Empty
(
results
.
Conflicts
)
...
...
@@ -108,7 +108,7 @@ public class A
Dim
libraryB
=
BuildLibrary
(
directory
,
sourceB
,
"B"
)
Dim
libraryA
=
BuildLibrary
(
directory
,
sourceA
,
"A"
,
"B"
,
"C"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Assert
.
Empty
(
results
.
Conflicts
)
...
...
@@ -149,7 +149,7 @@ public class C
Dim
libraryD
=
BuildLibrary
(
directory
,
sourceD
,
"D"
)
Dim
libraryC
=
BuildLibrary
(
directory
,
sourceC
,
"C"
,
"D"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
,
libraryD
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
,
libraryD
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Assert
.
Empty
(
results
.
Conflicts
)
...
...
@@ -191,7 +191,7 @@ public class C
Dim
libraryD
=
BuildLibrary
(
directory2
,
sourceD
,
"D"
)
Dim
libraryC
=
BuildLibrary
(
directory2
,
sourceC
,
"C"
,
"D"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
,
libraryD
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
,
libraryD
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Assert
.
Empty
(
results
.
Conflicts
)
...
...
@@ -232,7 +232,7 @@ public class B
Dim
libraryA
=
BuildLibrary
(
directory
,
sourceA
,
"A"
,
"C"
)
Dim
libraryB
=
BuildLibrary
(
directory
,
sourceB
,
"B"
,
"C"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Assert
.
Empty
(
results
.
Conflicts
)
...
...
@@ -273,7 +273,7 @@ public class B
Dim
libraryC2
=
directory2
.
CreateFile
(
"C.dll"
).
CopyContentFrom
(
libraryC1
).
Path
Dim
libraryB
=
BuildLibrary
(
directory2
,
sourceB
,
"B"
,
"C"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC1
,
libraryC2
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC1
,
libraryC2
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Assert
.
Empty
(
results
.
Conflicts
)
...
...
@@ -325,7 +325,7 @@ public class C
Dim
libraryCPrime
=
BuildLibrary
(
directory2
,
sourceCPrime
,
"C"
)
Dim
libraryB
=
BuildLibrary
(
directory2
,
sourceB
,
"B"
,
"C"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
,
libraryCPrime
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
,
libraryCPrime
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Dim
conflicts
=
results
.
Conflicts
...
...
@@ -396,7 +396,7 @@ public class D
Dim
libraryA
=
BuildLibrary
(
directory1
,
sourceA
,
"A"
,
"C"
)
Dim
libraryB
=
BuildLibrary
(
directory2
,
sourceB
,
"B"
,
"C"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC1
,
libraryC2
,
libraryD
,
libraryDPrime
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC1
,
libraryC2
,
libraryD
,
libraryDPrime
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Dim
conflicts
=
results
.
Conflicts
...
...
@@ -475,7 +475,7 @@ public class E
Dim
libraryA
=
BuildLibrary
(
directory1
,
sourceA
,
"A"
,
"C"
)
Dim
libraryB
=
BuildLibrary
(
directory2
,
sourceB
,
"B"
,
"D"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
,
libraryD
,
libraryE
,
libraryEPrime
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
,
libraryD
,
libraryE
,
libraryEPrime
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Dim
conflicts
=
results
.
Conflicts
...
...
@@ -527,7 +527,7 @@ public class B
Dim
libraryBPrime
=
BuildLibrary
(
directory2
,
sourceBPrime
,
"B"
)
Dim
libraryA2
=
directory2
.
CreateFile
(
"A.dll"
).
CopyContentFrom
(
libraryA1
).
Path
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA1
,
libraryA2
,
libraryB
,
libraryBPrime
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA1
,
libraryA2
,
libraryB
,
libraryBPrime
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Dim
conflicts
=
results
.
Conflicts
...
...
@@ -591,7 +591,7 @@ public class B
Dim
libraryBPrime
=
BuildLibrary
(
directory2
,
sourceBPrime
,
"B"
)
Dim
libraryAPrime
=
BuildLibrary
(
directory2
,
sourceAPrime
,
"A"
,
"B"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryAPrime
,
libraryB
,
libraryBPrime
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryAPrime
,
libraryB
,
libraryBPrime
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Dim
conflicts
=
results
.
Conflicts
...
...
@@ -642,7 +642,7 @@ public class B
Dim
libraryB2
=
directory2
.
CreateFile
(
"B.dll"
).
CopyContentFrom
(
libraryB1
).
Path
Dim
libraryAPrime
=
BuildLibrary
(
directory2
,
sourceAPrime
,
"A"
,
"B"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryAPrime
,
libraryB1
,
libraryB2
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryAPrime
,
libraryB1
,
libraryB2
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Dim
conflicts
=
results
.
Conflicts
...
...
@@ -722,7 +722,7 @@ public class D
Dim
libraryDPrimePrime
=
BuildLibrary
(
directory3
,
sourceDPrimePrime
,
"D"
)
Dim
libraryC
=
BuildLibrary
(
directory3
,
sourceC
,
"C"
,
"D"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
,
libraryD
,
libraryDPrime
,
libraryDPrimePrime
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
,
libraryB
,
libraryC
,
libraryD
,
libraryDPrime
,
libraryDPrimePrime
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Assert
.
Equal
(
expected
:
=
3
,
actual
:
=
results
.
Conflicts
.
Length
)
...
...
@@ -737,7 +737,7 @@ public class D
Using
directory
=
New
DisposableDirectory
(
Temp
)
Dim
library
=
BuildLibrary
(
directory
,
"public class A { }"
,
"A"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
library
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
library
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Assert
.
Empty
(
results
.
MissingDependencies
)
...
...
@@ -764,7 +764,7 @@ public class A
Dim
libraryB
=
BuildLibrary
(
directory
,
sourceB
,
"B"
)
Dim
libraryA
=
BuildLibrary
(
directory
,
sourceA
,
"A"
,
"B"
)
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
},
Get
White
Lists
())
Dim
dependencyChecker
=
New
AnalyzerDependencyChecker
({
libraryA
},
Get
IgnorableAssembly
Lists
())
Dim
results
=
dependencyChecker
.
Run
()
Dim
missingDependencies
=
results
.
MissingDependencies
...
...
@@ -777,59 +777,59 @@ public class A
End
Sub
<
Fact
,
WorkItem
(
3020
,
"https://github.com/dotnet/roslyn/issues/3020"
)
>
Public
Sub
AssemblyIdentityWhite
List_IncludesItem
()
Public
Sub
IgnorableAssemblyIdentity
List_IncludesItem
()
Dim
mscorlib1
As
AssemblyIdentity
=
Nothing
AssemblyIdentity
.
TryParseDisplayName
(
s_mscorlibDisplayName
,
mscorlib1
)
Dim
whiteList
=
New
AssemblyIdentityWhite
List
({
mscorlib1
})
Dim
ignorableAssemblyList
=
New
IgnorableAssemblyIdentity
List
({
mscorlib1
})
Dim
mscorlib2
As
AssemblyIdentity
=
Nothing
AssemblyIdentity
.
TryParseDisplayName
(
s_mscorlibDisplayName
,
mscorlib2
)
Assert
.
True
(
white
List
.
Includes
(
mscorlib2
))
Assert
.
True
(
ignorableAssembly
List
.
Includes
(
mscorlib2
))
End
Sub
<
Fact
,
WorkItem
(
3020
,
"https://github.com/dotnet/roslyn/issues/3020"
)
>
Public
Sub
AssemblyIdentityWhite
List_DoesNotIncludeItem
()
Public
Sub
IgnorableAssemblyIdentity
List_DoesNotIncludeItem
()
Dim
mscorlib
As
AssemblyIdentity
=
Nothing
AssemblyIdentity
.
TryParseDisplayName
(
s_mscorlibDisplayName
,
mscorlib
)
Dim
whiteList
=
New
AssemblyIdentityWhite
List
({
mscorlib
})
Dim
ignorableAssemblyList
=
New
IgnorableAssemblyIdentity
List
({
mscorlib
})
Dim
alpha
As
AssemblyIdentity
=
Nothing
AssemblyIdentity
.
TryParseDisplayName
(
"Alpha, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
,
alpha
)
Assert
.
False
(
white
List
.
Includes
(
alpha
))
Assert
.
False
(
ignorableAssembly
List
.
Includes
(
alpha
))
End
Sub
<
Fact
,
WorkItem
(
3020
,
"https://github.com/dotnet/roslyn/issues/3020"
)
>
Public
Sub
AssemblyNamePrefixWhite
List_IncludesItem_Prefix
()
Dim
whiteList
=
New
AssemblyNamePrefixWhite
List
(
"Alpha"
)
Public
Sub
IgnorableAssemblyNamePrefix
List_IncludesItem_Prefix
()
Dim
ignorableAssemblyList
=
New
IgnorableAssemblyNamePrefix
List
(
"Alpha"
)
Dim
alphaBeta
As
AssemblyIdentity
=
Nothing
AssemblyIdentity
.
TryParseDisplayName
(
"Alpha.Beta, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
,
alphaBeta
)
Assert
.
True
(
white
List
.
Includes
(
alphaBeta
))
Assert
.
True
(
ignorableAssembly
List
.
Includes
(
alphaBeta
))
End
Sub
<
Fact
,
WorkItem
(
3020
,
"https://github.com/dotnet/roslyn/issues/3020"
)
>
Public
Sub
AssemblyNamePrefixWhite
List_IncludesItem_WholeName
()
Dim
whiteList
=
New
AssemblyNamePrefixWhite
List
(
"Alpha"
)
Public
Sub
IgnorableAssemblyNamePrefix
List_IncludesItem_WholeName
()
Dim
ignorableAssemblyList
=
New
IgnorableAssemblyNamePrefix
List
(
"Alpha"
)
Dim
alpha
As
AssemblyIdentity
=
Nothing
AssemblyIdentity
.
TryParseDisplayName
(
"Alpha, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
,
alpha
)
Assert
.
True
(
white
List
.
Includes
(
alpha
))
Assert
.
True
(
ignorableAssembly
List
.
Includes
(
alpha
))
End
Sub
<
Fact
,
WorkItem
(
3020
,
"https://github.com/dotnet/roslyn/issues/3020"
)
>
Public
Sub
AssemblyNamePrefixWhite
List_DoesNotIncludeItem
()
Dim
whiteList
=
New
AssemblyNamePrefixWhite
List
(
"Beta"
)
Public
Sub
IgnorableAssemblyNamePrefix
List_DoesNotIncludeItem
()
Dim
ignorableAssemblyList
=
New
IgnorableAssemblyNamePrefix
List
(
"Beta"
)
Dim
alpha
As
AssemblyIdentity
=
Nothing
AssemblyIdentity
.
TryParseDisplayName
(
"Alpha, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
,
alpha
)
Assert
.
False
(
white
List
.
Includes
(
alpha
))
Assert
.
False
(
ignorableAssembly
List
.
Includes
(
alpha
))
End
Sub
Private
Function
BuildLibrary
(
directory
As
DisposableDirectory
,
fileContents
As
String
,
libraryName
As
String
,
ParamArray
referenceNames
As
String
())
As
String
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录