logic: vs solution parsing fix

Fixed issue with vs internal macros
This commit is contained in:
Manuel Dobusch
2016-05-18 14:19:41 +02:00
parent e943ef149e
commit 2f25279662
6 changed files with 343 additions and 8 deletions
+173
View File
@@ -1,3 +1,174 @@
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml
Token.cpp ERROR: Location Id was not referenced by this Token.
Node.cpp WARNING: Cannot change NodeType after it was already set from namespace to class
Edge.cpp ERROR: Nodes are not plain copies.
@@ -55,3 +226,5 @@ TextAccess.cpp WARNING: Line numbers start with one, is 0
TextAccess.cpp WARNING: Line numbers start with one, is 0
TokenLocationCollection.cpp ERROR: Can't create TokenLocation with wrong boundaries.
TokenLocationCollection.cpp ERROR: Can't create TokenLocation with wrong boundaries.
SolutionParserVisualStudio.cpp INFO: Found 24 additional include paths
SolutionParserVisualStudio.cpp INFO: Found 450 code files
@@ -7,6 +7,9 @@
#include "boost/filesystem/path.hpp"
#include "boost/filesystem.hpp"
std::vector<std::string> SolutionParserUtility::m_ideMacros;
std::map<std::string, std::string> SolutionParserUtility::m_ideMacroValues;
TiXmlElement* SolutionParserUtility::getFirstTagByName(TiXmlElement* root, const std::string& tag)
{
TiXmlElement* element = root;
@@ -246,7 +249,18 @@ std::vector<std::string> SolutionParserUtility::resolveEnvironmentVariables(cons
for (unsigned int i = 0; i < paths.size(); i++)
{
resolvedPaths.push_back(findAndResolveEnvironmentVariable(paths[i]));
std::string resolvedPath = "";
try
{
resolvedPath = findAndResolveEnvironmentVariable(paths[i]);
resolvedPaths.push_back(resolvedPath);
}
catch (std::exception &e)
{
LOG_ERROR_STREAM(<< "Failed to resolve environment variable, exception was: \"" << e.what() << "\"");
}
}
return resolvedPaths;
@@ -263,7 +277,29 @@ std::string SolutionParserUtility::findAndResolveEnvironmentVariable(const std::
size_t endPos = path.substr(pos).find(")");
std::string envVariable = path.substr(pos + 2, (endPos - 2) - pos);
std::string envPath = getenv(envVariable.c_str());
std::string envPath = "";
std::string macro = checkIsIdeMacro(envVariable);
if (macro != "")
{
LOG_WARNING_STREAM(<< "Encountered IDE macro \"" << macro << "\"");
if (m_ideMacroValues.find(macro) == m_ideMacroValues.end())
{
LOG_WARNING_STREAM(<< "Could not resolve IDE macro \"" << macro << "\"");
return "";
}
else
{
envPath = m_ideMacroValues[macro];
}
}
else
{
envPath = getenv(envVariable.c_str());
}
std::string prePath = path.substr(0, pos);
std::string postPath = path.substr(endPos + 1);
@@ -308,3 +344,16 @@ std::vector<std::string> SolutionParserUtility::makePathsCanonical(const std::ve
return canonicalPaths;
}
std::string SolutionParserUtility::checkIsIdeMacro(const std::string& text)
{
for (unsigned int i = 0; i < m_ideMacros.size(); i++)
{
if (text == m_ideMacros[i])
{
return m_ideMacros[i];
}
}
return "";
}
@@ -1,6 +1,7 @@
#ifndef SOLUTION_PARSER_UTILITY_H
#define SOLUTION_PARSER_UTILITY_H
#include <map>
#include <string>
#include <vector>
@@ -20,6 +21,11 @@ public:
static std::vector<std::string> resolveEnvironmentVariables(const std::vector<std::string>& paths);
static std::string findAndResolveEnvironmentVariable(const std::string& path);
static std::vector<std::string> makePathsCanonical(const std::vector<std::string>& paths);
static std::string checkIsIdeMacro(const std::string& text); // returns matching macro or empty string if no match was found
static std::vector<std::string> m_ideMacros;
static std::map<std::string, std::string> m_ideMacroValues; // to replace macros with known values
};
#endif // SOLUTION_PARSER_UTILITY_H
@@ -17,6 +17,45 @@ SolutionParserVisualStudio::SolutionParserVisualStudio()
m_compatibilityFlags.push_back("-fms-extensions");
m_compatibilityFlags.push_back("-fms-compatibility");
m_compatibilityFlags.push_back("-fms-compatibility-version=19.00");
SolutionParserUtility::m_ideMacros.clear();
SolutionParserUtility::m_ideMacros.push_back("RemoteMachine");
SolutionParserUtility::m_ideMacros.push_back("Configuration");
SolutionParserUtility::m_ideMacros.push_back("Platform");
SolutionParserUtility::m_ideMacros.push_back("ParentName");
SolutionParserUtility::m_ideMacros.push_back("RootNameSpace");
SolutionParserUtility::m_ideMacros.push_back("IntDir");
SolutionParserUtility::m_ideMacros.push_back("OutDir");
SolutionParserUtility::m_ideMacros.push_back("DevEnvDir");
SolutionParserUtility::m_ideMacros.push_back("InputPath");
SolutionParserUtility::m_ideMacros.push_back("InputName");
SolutionParserUtility::m_ideMacros.push_back("InputFileName");
SolutionParserUtility::m_ideMacros.push_back("InputExt");
SolutionParserUtility::m_ideMacros.push_back("ProjectDir");
SolutionParserUtility::m_ideMacros.push_back("ProjectPath");
SolutionParserUtility::m_ideMacros.push_back("ProjectName");
SolutionParserUtility::m_ideMacros.push_back("ProjectFileName");
SolutionParserUtility::m_ideMacros.push_back("ProjectExt");
SolutionParserUtility::m_ideMacros.push_back("SolutionDir");
SolutionParserUtility::m_ideMacros.push_back("SolutionPath");
SolutionParserUtility::m_ideMacros.push_back("SolutionName");
SolutionParserUtility::m_ideMacros.push_back("SolutionExt");
SolutionParserUtility::m_ideMacros.push_back("TargetDir");
SolutionParserUtility::m_ideMacros.push_back("TargetPath");
SolutionParserUtility::m_ideMacros.push_back("TargetName");
SolutionParserUtility::m_ideMacros.push_back("TargetFileName");
SolutionParserUtility::m_ideMacros.push_back("VSInstallDir");
SolutionParserUtility::m_ideMacros.push_back("VCInstallDir");
SolutionParserUtility::m_ideMacros.push_back("FrameworkDir");
SolutionParserUtility::m_ideMacros.push_back("FrameworkVersion");
SolutionParserUtility::m_ideMacros.push_back("FrameworkSDKDir");
SolutionParserUtility::m_ideMacros.push_back("WebDeployPath");
SolutionParserUtility::m_ideMacros.push_back("WebDeployRoot");
SolutionParserUtility::m_ideMacros.push_back("SafeParentName");
SolutionParserUtility::m_ideMacros.push_back("SafeInputName");
SolutionParserUtility::m_ideMacros.push_back("SafeRootNamespace");
SolutionParserUtility::m_ideMacros.push_back("FxCopDir");
}
SolutionParserVisualStudio::~SolutionParserVisualStudio()
@@ -155,11 +194,6 @@ std::vector<std::string> SolutionParserVisualStudio::getCompileFlags()
compilerFlags.push_back(m_compatibilityFlags[i]);
}
//for (unsigned int i = 0; i < compilerFlags.size(); i++)
//{
// LOG_INFO_STREAM(<< "flag: " << compilerFlags[i]);
//}
std::set<std::string> s(compilerFlags.begin(), compilerFlags.end());
compilerFlags.assign(s.begin(), s.end());
@@ -168,13 +202,29 @@ std::vector<std::string> SolutionParserVisualStudio::getCompileFlags()
ProjectSettings SolutionParserVisualStudio::getProjectSettings(const std::string& solutionFilePath)
{
LOG_INFO_STREAM(<< "Starting to parse VS solution");
LOG_INFO_STREAM(<< "Opening solution file");
openSolutionFile(solutionFilePath);
SolutionParserUtility::m_ideMacroValues.clear();
SolutionParserUtility::m_ideMacroValues["SolutionPath"] = solutionFilePath;
SolutionParserUtility::m_ideMacroValues["SolutionDir"] = m_solutionPath.substr(0, m_solutionPath.size() - 1); // remove trailing slash, would cause problems during path resolving
SolutionParserUtility::m_ideMacroValues["SolutionName"] = getSolutionName();
SolutionParserUtility::m_ideMacroValues["SolutionFileName"] = m_solutionName;
LOG_INFO_STREAM(<< "Setting meta information");
ProjectSettings settings;
settings.setProjectName(getSolutionName());
settings.setProjectFileLocation(getSolutionPath());
settings.setVisualStudioSolutionPath(solutionFilePath);
LOG_INFO_STREAM(<< "Parsing project files");
LOG_INFO_STREAM(<< "Setting source files");
std::vector<std::string> sourceFiles = getProjectItems();
std::vector<FilePath> sourcePaths;
for (const std::string& p : sourceFiles)
@@ -182,6 +232,8 @@ ProjectSettings SolutionParserVisualStudio::getProjectSettings(const std::string
sourcePaths.push_back(FilePath(p));
}
LOG_INFO_STREAM(<< "Parsing include files");
std::vector<std::string> includePaths = getIncludePaths();
std::vector<FilePath> headerPaths;
@@ -190,12 +242,16 @@ ProjectSettings SolutionParserVisualStudio::getProjectSettings(const std::string
headerPaths.push_back(FilePath(p));
}
LOG_INFO_STREAM(<< "Setting compile flags");
std::vector<std::string> compilerFlags = getCompileFlags();
settings.setCompilerFlags(compilerFlags);
settings.setSourcePaths(sourcePaths);
settings.setHeaderSearchPaths(headerPaths);
LOG_INFO_STREAM(<< "Done parsing VS solution");
return settings;
}
@@ -388,6 +444,8 @@ std::vector<std::string> SolutionParserVisualStudio::findProjectItems()
std::set<std::string> s(projectItems.begin(), projectItems.end());
projectItems.assign(s.begin(), s.end());
LOG_INFO_STREAM(<< "Found " << projectItems.size() << " code files");
projectItems = SolutionParserUtility::resolveEnvironmentVariables(projectItems);
projectItems = makePathsAbsolute(projectItems);
@@ -434,6 +492,8 @@ std::vector<std::string> SolutionParserVisualStudio::findIncludePaths()
std::set<std::string> s(includePaths.begin(), includePaths.end());
includePaths.assign(s.begin(), s.end());
LOG_INFO_STREAM(<< "Found " << includePaths.size() << " additional include paths");
includePaths = SolutionParserUtility::resolveEnvironmentVariables(includePaths);
includePaths = makePathsAbsolute(includePaths);
@@ -527,6 +587,11 @@ std::vector<std::string> SolutionParserVisualStudio::seperateIncludePaths(const
pos = paths.find(seperator);
}
if (paths.size() > 0)
{
seperatedPaths.push_back(paths);
}
return seperatedPaths;
}
@@ -48,4 +48,46 @@ private:
std::vector<std::string> m_compatibilityFlags;
};
// list of possible vs ide macros
// source: https://msdn.microsoft.com/en-us/library/c02as0cs.aspx
/*
"RemoteMachine",
"Configuration",
"Platform",
"ParentName",
"RootNameSpace",
"IntDir",
"OutDir",
"DevEnvDir",
"InputDir",
"InputPath",
"InputName",
"InputFileName",
"InputExt",
"ProjectDir",
"ProjectPath",
"ProjectName",
"ProjectFileName",
"ProjectExt",
"SolutionDir",
"SolutionPath",
"SolutionName",
"SolutionExt",
"TargetDir",
"TargetPath",
"TargetName",
"TargetFileName",
"VSInstallDir",
"VCInstallDir",
"FrameworkDir",
"FrameworkVersion",
"FrameworkSDKDir",
"WebDeployPath",
"WebDeployRoot",
"SafeParentName",
"SafeInputName",
"SafeRootNamespace",
"FxCopDir"
*/
#endif // SOLUTION_PARSER_VISUAL_STUDIO_H
+1 -1
View File
@@ -47,7 +47,7 @@ public:
parser.openSolutionFile("data/vsSolutionParserTestSuite/Coati.sln");
std::vector<std::string> includePaths = parser.getIncludePathsNonCanonical();
TS_ASSERT_EQUALS(23, includePaths.size());
TS_ASSERT_EQUALS(24, includePaths.size());
}
void test_get_()