dotnet / codeformatter

Tool that uses Roslyn to automatically rewrite the source to follow our coding styles
MIT License
1.24k stars 244 forks source link

XUnitConverter not working #266

Open philwindsor opened 7 years ago

philwindsor commented 7 years ago

I've had nothing but trouble trying to get this to work and have hit yet another issue.

 SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);

            List<UsingDirectiveSyntax> newUsings = new List<UsingDirectiveSyntax>();
            bool needsChanges = false;

            foreach (var usingSyntax in root.Usings)
            {
                var symbolInfo = semanticModel.GetSymbolInfo(usingSyntax.Name);
                if (symbolInfo.Symbol != null)
                {
                    string namespaceDocID = symbolInfo.Symbol.GetDocumentationCommentId();
                    if (s_mstestNamespaces.Contains(namespaceDocID))
                    {
                        needsChanges = true;
                    }
                    else
                    {
                        newUsings.Add(RemoveLeadingAndTrailingCompilerDirectives(usingSyntax));
                    }
                }
                else
                {
                    newUsings.Add(RemoveLeadingAndTrailingCompilerDirectives(usingSyntax));
                }
            }

            if (!needsChanges)
            {
                return document.Project.Solution;
            }

The above code is from MSTestToXUnitConverter.cs. The issue is when it gets to the using statement for Microsoft.VisualStudio.TestTools.UnitTesting symbolInfo.Symbol is null so it doesn't hit the code inside the if statement

Does anyone know why this is and how to fix it? I'm using visual studio 2017

JayCroghan commented 5 years ago

So this two year old issue hasn't been even commented on, I have the exact same issue in 2019. At first it wasn't even getting my list of usings because they are inside the namespace, but now that I figured that out and moved them it's returning Symbol as null here and ignoring the file.