Example #1
0
        public ApiTraverser(IMetadataReaderHost host, IAssembly assembly)
        {
            if (host == null)
                throw new ArgumentNullException("ContractAwareHost arg should not be null.");

            _host = host;
            _assembly = new AssemblyApi(assembly);
        }
Example #2
0
 public static IEnumerable<string> CompareApi(AssemblyApi oldVersion, AssemblyApi newVersion)
 {
     List<string> incompatibility = new List<string>();
     if (newVersion.IsCompatible(oldVersion) >= 0)
         return null;
     else
         return incompatibility;
 }
Example #3
0
        static int Main(string[] args)
        {
#if DEBUG
            args    = new string[2];
            args[0] = "-a";
            args[1] = @"Y:\Career\Ctrip2014\Project\ApiScannerTemp\DummyAssembly1\Arch.CFX.dll";
            //args[2] = "-n";
            //args[3] = @"Y:\Career\Ctrip2014\Project\ApiScannerTemp\DummyAssembly2\Arch.CFX.dll";
#endif
            if (!TryReadArgs(args))
            {
                WriteHelp();
#if !DEBUG
                return(0);
#endif
            }

            int         result   = 0;
            AssemblyApi assembly = Scanner.Traverse(_path);
            if (!string.IsNullOrWhiteSpace(_newVersion))
            {
                AssemblyApi newAssembly = Scanner.Traverse(_newVersion);
                var         incoms      = Scanner.CompareApi(assembly, newAssembly);
                if (incoms != null)
                {
                    Console.WriteLine("Incompatible API as follows:");
                    foreach (string incom in incoms)
                    {
                        Console.WriteLine(incom);
                    }
                    result = -1;
                }
                else
                {
                    Console.WriteLine("Assemblies are compatible.");
                }
            }
            else
            {
                PrintApi(assembly);
            }

#if DEBUG
            Console.ReadLine();
#endif
            return(result);
        }
Example #4
0
        static void PrintApi(AssemblyApi assembly)
        {
            Console.WriteLine(assembly.ToString());

            Console.WriteLine("References:");
            foreach (var refe in assembly.References)
                Console.WriteLine("\t{0}", refe.ToString());

            foreach (var type in assembly.Types)
            {
                Console.WriteLine(type.Signature);
                Console.WriteLine("\tBase Classes:");
                foreach (var parent in type.Parents)
                    Console.WriteLine("\t\t{0}", parent);
                foreach (var api in type.Members)
                    Console.WriteLine("\t{0}", api.Signature);
            }
        }
Example #5
0
        static void PrintApi(AssemblyApi assembly)
        {
            Console.WriteLine(assembly.ToString());

            Console.WriteLine("References:");
            foreach (var refe in assembly.References)
            {
                Console.WriteLine("\t{0}", refe.ToString());
            }

            foreach (var type in assembly.Types)
            {
                Console.WriteLine(type.Signature);
                Console.WriteLine("\tBase Classes:");
                foreach (var parent in type.Parents)
                {
                    Console.WriteLine("\t\t{0}", parent);
                }
                foreach (var api in type.Members)
                {
                    Console.WriteLine("\t{0}", api.Signature);
                }
            }
        }