Exemplo n.º 1
0
        public static DelFileAnalyzers LoadFileAnalyzers()
        {
            DelFileAnalyzers del  = null;
            string           path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            string[] files = Directory.GetFiles(path, "*.dll");

            if (files != null)
            {
                foreach (string dll in files)
                {
                    Assembly a = Assembly.LoadFile(dll);
                    foreach (Type t in a.GetTypes())
                    {
                        if (t.GetInterface("IDGFileAnalyzer") != null)
                        {
                            try
                            {
                                IDGFileAnalyzer fa = Activator.CreateInstance(t) as IDGFileAnalyzer;
                                del += fa.AnalyzeFile;
                            }
                            catch
                            {
                                // nothing to do here :(
                            }
                        }
                    }
                }
            }

            return(del);
        }
Exemplo n.º 2
0
        private static void AnalyzeFile(ref FileInfo file, ref List <FileInfo> FileInfosFullList, string[] VendorsToExclude, DelFileAnalyzers FileAnalyzers)
        {
            if (FileInfosFullList.Contains(file))
            {
                file = FileInfosFullList.ElementAt(FileInfosFullList.IndexOf(file));
            }
            else
            {
                AddVendorInformation(ref file);

                FileAnalyzers(ref file);
                FileInfosFullList.Add(file);

                string   SystemDir = Environment.SystemDirectory;
                string   WinDir    = Environment.GetEnvironmentVariable("windir");
                string[] EnvPaths  = Environment.GetEnvironmentVariable("path").Split(new char[] { ';' });

                List <DGFileImport> CleanImports = new List <DGFileImport>();
                foreach (DGFileImport import in file.Imports)
                {
                    string path = Path.GetDirectoryName(file.FileNameFullPath);

                    if (File.Exists(path + "\\" + import.File.FileName))
                    {
                        import.File.FileNameFullPath = path + "\\" + import.File.FileName;
                    }
                    else if (File.Exists(SystemDir + "\\" + import.File.FileName))
                    {
                        import.File.FileNameFullPath = SystemDir + "\\" + import.File.FileName;
                    }
                    else if (File.Exists(WinDir + "\\" + import.File.FileName))
                    {
                        import.File.FileNameFullPath = WinDir + "\\" + import.File.FileName;
                    }
                    else
                    {
                        foreach (string p in EnvPaths)
                        {
                            if (File.Exists(p + "\\" + import.File.FileName))
                            {
                                import.File.FileNameFullPath = p + "\\" + import.File.FileName;
                                break;
                            }
                        }
                        if (import.File.FileNameFullPath == null)
                        {
                            continue;
                        }
                    }

                    FileInfo fi = import.File;
                    if (!ShouldFileBeExcluded(fi, VendorsToExclude))
                    {
                        AnalyzeFile(ref fi, ref FileInfosFullList, VendorsToExclude, FileAnalyzers);
                    }
                    import.File = fi;
                }

                foreach (DGFileImport i in file.Imports)
                {
                    if (!ShouldFileBeExcluded(i.File, VendorsToExclude))
                    {
                        CleanImports.Add(i);
                    }
                }
                file.Imports.Clear();
                file.Imports.AddRange(CleanImports);
            }
        }
Exemplo n.º 3
0
        public static FileInfo[] CreateDependencyGraph(string[] FileNames, string[] VendorsToExclude, DelFileAnalyzers FileAnalyzers)
        {
            List <FileInfo> FileInfosReturn = new List <FileInfo>();

            if (FileAnalyzers != null)
            {
                List <FileInfo> FileInfosFullList = new List <FileInfo>();
                foreach (string fn in FileNames)
                {
                    FileInfo fi = new FileInfo(Path.GetFileName(fn));
                    fi.FileNameFullPath = fn;
                    AnalyzeFile(ref fi, ref FileInfosFullList, VendorsToExclude, FileAnalyzers);
                    FileInfosReturn.Add(fi);
                }
            }
            return(FileInfosReturn.ToArray());
        }