Beispiel #1
0
        ScriptProjectAnalysisResult AnalyzeProject(Project project, ScriptUpgradeAnalysisOptions options)
        {
            if (!project.IsLoaded())
            {
                return(ScriptProjectAnalysisResult.NonScriptProjectResult);
            }
            var projectInfo = ProjectScriptInfo.Load(project.FullName, project.Name);

            if (!projectInfo.IsValid)
            {
                return(ScriptProjectAnalysisResult.NonScriptProjectResult);
            }
            var expectedGamePath    = projectInfo.GetActualGameBinPath(options.DefaultGameBinPath).TrimEnd('\\');
            var expectedInstallPath = options.InstallPath.TrimEnd('\\');

            var badReferences = ImmutableArray.CreateBuilder <BadReference>();
            var projectFile   = new FileInfo(projectInfo.FileName);
            var projectDir    = projectFile.Directory ?? throw new InvalidOperationException($"Unexpected error: Could not determine the directory of the project {projectInfo.FileName}");
            var document      = XDocument.Load(projectInfo.FileName);
            var xmlns         = new XmlNamespaceManager(new NameTable());

            xmlns.AddNamespace("ms", Xmlns);

            AnalyzeReferences(options, document, xmlns, projectDir, expectedGamePath, expectedInstallPath, badReferences);
            AnalyzeFiles(options, document, xmlns, projectDir, expectedGamePath, expectedInstallPath, badReferences);

            return(new ScriptProjectAnalysisResult(projectInfo, document, badReferences.ToImmutable()));
        }
Beispiel #2
0
        ScriptProjectAnalysisResult AnalyzeProject(Project project, ScriptUpgradeAnalysisOptions options)
        {
            if (!project.IsLoaded())
            {
                return(ScriptProjectAnalysisResult.NonScriptProjectResult);
            }
            var projectInfo = ProjectScriptInfo.Load(project.FullName, project.Name);

            if (!projectInfo.IsValid)
            {
                return(ScriptProjectAnalysisResult.NonScriptProjectResult);
            }
            var expectedGamePath    = projectInfo.GetActualGameBinPath(options.DefaultGameBinPath).TrimEnd('\\');
            var expectedInstallPath = options.InstallPath.TrimEnd('\\');

            var badReferences = ImmutableArray.CreateBuilder <BadReference>();
            var projectFile   = new FileInfo(projectInfo.FileName);
            var projectDir    = projectFile.Directory;
            var document      = XDocument.Load(projectInfo.FileName);
            var xmlns         = new XmlNamespaceManager(new NameTable());

            xmlns.AddNamespace("ms", Xmlns);

            AnalyzeReferences(options, document, xmlns, projectDir, expectedGamePath, expectedInstallPath, badReferences);
            AnalyzeFiles(options, document, xmlns, projectDir, expectedGamePath, expectedInstallPath, badReferences);
            var whitelist = VerifyWhitelist(document, projectDir, expectedInstallPath);

            return(new ScriptProjectAnalysisResult(project, projectInfo, document, whitelist, badReferences.ToImmutable()));
        }