コード例 #1
0
ファイル: Project.cs プロジェクト: pescuma/dependency-checker
 protected bool Equals(Project other)
 {
     return base.Equals(other) && string.Equals(ProjectName, other.ProjectName) && string.Equals(ProjectPath, other.ProjectPath);
 }
コード例 #2
0
 public void AddIgnoredProject(Project project)
 {
     Add(ignoredProjectByName, ignoredProjectByFilename, project);
 }
コード例 #3
0
 public void AddProject(Project project)
 {
     Add(projectsByName, projectsByFilename, project);
 }
コード例 #4
0
        private void WarnIfSimilarFound(List<Library> result, Project proj, Dependency dep, string filename, string refName)
        {
            if (result == null || !result.Any())
                return;

            var message = new OutputMessage().Append("The project ")
                .Append(proj, OutputMessage.ProjInfo.Name)
                .Append(" references the project ")
                .Append(filename)
                .Append(" but it could not be loaded. Using project")
                .Append(result.Count > 1 ? "s" : "")
                .Append(" ")
                .Append(refName)
                .Append(" instead:");

            if (result.Count == 1)
                result.ForEach(p => message.Append(result.First(), OutputMessage.ProjInfo.ProjectPath));
            else
                result.ForEach(p => message.Append("\n  - ")
                    .Append(p, OutputMessage.ProjInfo.ProjectPath));

            warnings.Add(new LoadingOutputEntry("Only similar project found", message, result.Select(dep.WithTarget)
                .ToArray()));
        }
コード例 #5
0
        private List<Library> FindLibraryByNameAndLibraryName(Project proj, Dependency dep, string name, string libraryName)
        {
            var candidates = db.FindByNameAndLibraryName(name, libraryName);

            if (candidates != null && candidates.Count > 1)
                warnings.Add(CreateMultipleReferencesWarning(candidates, proj, dep, "with name " + name + " and library name " + libraryName));

            return candidates;
        }
コード例 #6
0
        private List<Library> FindLibraryByFilename(Project proj, Dependency dep, string filename)
        {
            var candidates = db.FindByPath(filename);

            if (candidates != null && candidates.Count > 1)
                warnings.Add(CreateMultipleReferencesWarning(candidates, proj, dep, filename));

            return candidates;
        }
コード例 #7
0
        private OutputEntry CreateMultipleReferencesWarning(List<Library> candidates, Project proj, Dependency dep, string refName)
        {
            var message = new OutputMessage().Append("The project ")
                .Append(proj, OutputMessage.ProjInfo.NameAndProjectPath)
                .Append(" references the project ")
                .Append(refName)
                .Append(", but there are ")
                .Append(candidates.Count)
                .Append(" projects that match:");

            candidates.ForEach(c => message.Append("\n  - ")
                .Append(c, OutputMessage.ProjInfo.ProjectPath));
            message.Append("\nMultiple dependencies will be created.");

            return new LoadingOutputEntry("Multiple projects found", message, candidates.Select(dep.WithTarget)
                .ToArray());
        }
コード例 #8
0
        private Project CreateFakeProject(Project proj, Dependency dep, TempReference reference)
        {
            var result = new Project(reference.ReferenceName ?? reference.ReferenceLibraryName,
                reference.ReferenceLibraryName ?? reference.ReferenceName, reference.ReferenceGuid ?? Guid.NewGuid(), reference.ReferenceFilename, null);

            if (Ignore(result))
                return null;

            if (reference.ReferenceName == null || reference.ReferenceLibraryName == null)
            {
                var guessed = reference.ReferenceName == null ? "project name" : "library name";
                var used = reference.ReferenceName == null ? "library name" : "project name";

                var msg = new OutputMessage().Append("The project ")
                    .Append(proj, OutputMessage.ProjInfo.Name)
                    .Append(" references the project ")
                    .Append(reference.ReferenceFilename ?? reference.ReferenceName ?? reference.ReferenceLibraryName)
                    .Append(" but it could not be loaded. Guessing the ")
                    .Append(guessed)
                    .Append(" to be the same as the ")
                    .Append(used)
                    .Append(".");

                warnings.Add(new LoadingOutputEntry("Project not found", msg, dep.WithTarget(result)));
            }

            AddLibrary(result);

            return result;
        }