public IEnumerable <INamedTypeSymbol> GetSymbols(Compilation compilation) { var visitor = new NamedTypeSymbolVisitor(); visitor.Visit(compilation.GlobalNamespace); return(visitor.AllTypeSymbols); }
public List <INamedTypeSymbol> GetAllSymbols(Compilation compilation) { var visitor = new NamedTypeSymbolVisitor(); visitor.Visit(compilation.GlobalNamespace); return(visitor.NamedTypeSymbols); }
public void NoMatchNamedTypeSymbolTest() { // Arrange var helpers = new TestHelpers(); var pattern = this.GetDesignPattern(); var symbol = helpers.GetMockClass(Constants.EmptyPublicClass); var visitor = new NamedTypeSymbolVisitor(); var candidates = pattern.Components.Cast <IBaseConfigModel>(); // Act var results = visitor.Visit(symbol, candidates); // Assert Assert.IsNotNull(results); Assert.IsFalse(results.match); Assert.AreEqual(0, results.componentMatches.Count()); }
public void MatchNamedTypeSymbolTest() { // Arrange var helpers = new TestHelpers(); var pattern = this.GetDesignPattern(); var symbol = helpers.GetMockClass(Constants.EmptyPrivateStaticClass); var visitor = new NamedTypeSymbolVisitor(); var candidates = pattern.Components.Cast <IBaseConfigModel>(); // Act var results = visitor.Visit(symbol, candidates); // Assert Assert.IsNotNull(results); Assert.IsTrue(results.match); Assert.AreEqual(1, results.componentMatches.Count()); var componentMatch = results.componentMatches.Single(); Assert.AreEqual("TestDesignpattern", componentMatch.Component.DesignPatternName); Assert.AreEqual("TestComponent", componentMatch.Component.Name); }
/// <summary> /// Analyze the workspace /// </summary> /// <returns>The results of the analysis</returns> public Dictionary <Component, List <ComponentMatch> > AnalyzeSymbols() { var classVisitor = new NamedTypeSymbolVisitor(); Parallel.ForEach(this.namespaceMembers, (symbol) => { if (symbol != null) { var componentCandidates = configurationModel.Components.Cast <IBaseConfigModel>().ToList(); var(match, componentMatches) = classVisitor.Visit(symbol, componentCandidates); if (match) { foreach (var componentMatch in componentMatches) { this.AddComponentMatch(componentMatch); } } } }); return(this.componentMatches); }