Exemple #1
0
        public ImmutableArray <PartitionInfo> Schedule(string assemblyPath, bool force = false)
        {
            if (_options.Sequential)
            {
                return(ImmutableArray.Create(new PartitionInfo(assemblyPath)));
            }

            var typeInfoList = GetTypeInfoList(assemblyPath);

            AssemblyInfoBuilder.Build(assemblyPath, _methodLimit, typeInfoList, out var partitionList);

            // If the scheduling didn't actually produce multiple partition then send back an unpartitioned
            // representation.
            if (partitionList.Length == 1 && !force)
            {
                Logger.Log($"Assembly schedule produced a single partition {assemblyPath}");
                return(ImmutableArray.Create(new PartitionInfo(assemblyPath)));
            }

            Logger.Log($"Assembly Schedule: {Path.GetFileName(assemblyPath)}");
            foreach (var partition in partitionList)
            {
                var methodCount = partition.TypeInfoList.Sum(x => x.MethodCount);
                var delta       = methodCount - _methodLimit;
                Logger.Log($"  Partition: {partition.AssemblyPartitionId} method count {methodCount} delta {delta}");
                foreach (var typeInfo in partition.TypeInfoList)
                {
                    Logger.Log($"    {typeInfo.FullName} {typeInfo.MethodCount}");
                }
            }

            return(partitionList);
        }
Exemple #2
0
        public IEnumerable <AssemblyInfo> Schedule(string assemblyPath, bool force = false)
        {
            if (_options.Sequential)
            {
                return(new[] { CreateAssemblyInfo(assemblyPath) });
            }

            var typeInfoList     = GetTypeInfoList(assemblyPath);
            var assemblyInfoList = new List <AssemblyInfo>();
            var partitionList    = new List <Partition>();

            AssemblyInfoBuilder.Build(assemblyPath, _methodLimit, _options.IncludeHtml, typeInfoList, out partitionList, out assemblyInfoList);

            // If the scheduling didn't actually produce multiple partition then send back an unpartitioned
            // representation.
            if (assemblyInfoList.Count == 1 && !force)
            {
                Logger.Log($"Assembly schedule produced a single partition {assemblyPath}");
                return(new[] { CreateAssemblyInfo(assemblyPath) });
            }

            Logger.Log($"Assembly Schedule: {Path.GetFileName(assemblyPath)}");
            foreach (var partition in partitionList)
            {
                var methodCount = partition.TypeInfoList.Sum(x => x.MethodCount);
                var delta       = methodCount - _methodLimit;
                Logger.Log($"  Partition: {partition.Id} method count {methodCount} delta {delta}");
                foreach (var typeInfo in partition.TypeInfoList)
                {
                    Logger.Log($"    {typeInfo.FullName} {typeInfo.MethodCount}");
                }
            }

            return(assemblyInfoList);
        }
Exemple #3
0
        public IEnumerable <AssemblyInfo> Schedule(string assemblyPath, bool force = false)
        {
            var typeInfoList     = GetTypeInfoList(assemblyPath);
            var assemblyInfoList = new List <AssemblyInfo>();
            var chunkList        = new List <Chunk>();

            AssemblyInfoBuilder.Build(assemblyPath, _methodLimit, _options.UseHtml, typeInfoList, out chunkList, out assemblyInfoList);

            // If the scheduling didn't actually produce multiple chunks then send back an unchunked
            // representation.
            if (assemblyInfoList.Count == 1 && !force)
            {
                Logger.Log($"Assembly schedule produced a single chunk {assemblyPath}");
                return(new[] { CreateAssemblyInfo(assemblyPath) });
            }

            Logger.Log($"Assembly Schedule: {Path.GetFileName(assemblyPath)}");
            foreach (var chunk in chunkList)
            {
                var methodCount = chunk.TypeInfoList.Sum(x => x.MethodCount);
                var delta       = methodCount - _methodLimit;
                Logger.Log($"  Chunk: {chunk.Id} method count {methodCount} delta {delta}");
                foreach (var typeInfo in chunk.TypeInfoList)
                {
                    Logger.Log($"    {typeInfo.FullName} {typeInfo.MethodCount}");
                }
            }

            return(assemblyInfoList);
        }
        public void WithAssemblyInformationalVersion_WithVersion_BuildsCorrectAssemblyInfo()
        {
            var builder = new AssemblyInfoBuilder(new CSharpCodeProvider());
            builder.WithAssemblyInformationalVersion("4.3.2.1 Beta 4");
            var assemblyInfo = builder.Build();

            Assert.Contains("[assembly: System.Reflection.AssemblyInformationalVersionAttribute(\"4.3.2.1 Beta 4\")]", assemblyInfo);
        }
        public void WithAssemblyInformationalVersion_WithSpecialChars_BuildsCorrectAssemblyInfo()
        {
            var builder = new AssemblyInfoBuilder(new CSharpCodeProvider());
            builder.WithAssemblyInformationalVersion("4.3.2.1 code-named \"Maverick\"");
            var assemblyInfo = builder.Build();

            Assert.Contains("[assembly: System.Reflection.AssemblyInformationalVersionAttribute(\"4.3.2.1 code-named \\\"Maverick\\\"\")]", assemblyInfo);
        }
Exemple #6
0
            internal static void Build(string assemblyPath, int methodLimit, bool useHtml, List <TypeInfo> typeInfoList, out List <Chunk> chunkList, out List <AssemblyInfo> assemblyInfoList)
            {
                var builder = new AssemblyInfoBuilder(assemblyPath, methodLimit, useHtml);

                builder.Build(typeInfoList);
                chunkList        = builder._chunkList;
                assemblyInfoList = builder._assemblyInfoList;
            }
Exemple #7
0
            internal static void Build(string assemblyPath, int methodLimit, List <TypeInfo> typeInfoList, out List <Partition> partitionList, out List <AssemblyPartitionInfo> assemblyInfoList)
            {
                var hasEventListenerGuard = typeInfoList.Any(x => x.FullName == EventListenerGuardFullName);
                var builder = new AssemblyInfoBuilder(assemblyPath, methodLimit, hasEventListenerGuard);

                builder.Build(typeInfoList);
                partitionList    = builder._partitionList;
                assemblyInfoList = builder._assemblyInfoList;
            }
        public void WithAssemblyInformationalVersion_CanBeCalledMoreThanOnce()
        {
            var builder = new AssemblyInfoBuilder(new CSharpCodeProvider());
            builder
                .WithAssemblyInformationalVersion("4.3.2.1 code-named \"Maverick\"")
                .WithAssemblyInformationalVersion("3.0 code-named \"Maverick\"");
            var assemblyInfo = builder.Build();

            Assert.Contains("[assembly: System.Reflection.AssemblyInformationalVersionAttribute(\"3.0 code-named \\\"Maverick\\\"\")]", assemblyInfo);
        }
        public void WithAssemblyFileVersion_CanBeCalledMoreThanOnce()
        {
            var builder = new AssemblyInfoBuilder(new CSharpCodeProvider());
            builder
                .WithAssemblyFileVersion(new Version(4, 3, 2, 1))
                .WithAssemblyFileVersion(new Version(1, 2, 3, 4));
            var assemblyInfo = builder.Build();

            Assert.Contains("[assembly: System.Reflection.AssemblyFileVersionAttribute(\"1.2.3.4\")]", assemblyInfo);
        }
Exemple #10
0
        public IEnumerable <AssemblyPartitionInfo> Schedule(string assemblyPath, bool force = false)
        {
            var typeInfoList     = GetTypeInfoList(assemblyPath);
            var assemblyInfoList = new List <AssemblyPartitionInfo>();
            var partitionList    = new List <Partition>();

            AssemblyInfoBuilder.Build(assemblyPath, _methodLimit, typeInfoList, out partitionList, out assemblyInfoList);

            // If the scheduling didn't actually produce multiple partition then send back an unpartitioned
            // representation.
            if (assemblyInfoList.Count == 1 && !force)
            {
                // Logger.Log($"Assembly schedule produced a single partition {assemblyPath}");
                return(new[] { CreateAssemblyInfo(assemblyPath) });
            }

            return(assemblyInfoList);
        }
Exemple #11
0
 internal static void Build(string assemblyPath, int methodLimit, bool useHtml, List<TypeInfo> typeInfoList, out List<Chunk> chunkList, out List<AssemblyInfo> assemblyInfoList)
 {
     var builder = new AssemblyInfoBuilder(assemblyPath, methodLimit, useHtml);
     builder.Build(typeInfoList);
     chunkList = builder._chunkList;
     assemblyInfoList = builder._assemblyInfoList;
 }
        public void WithCLSCompliant_WithTrue_BuildsCorrectAssemblyInfo()
        {
            var builder = new AssemblyInfoBuilder(new CSharpCodeProvider());
            builder.WithCLSCompliant(true);
            var assemblyInfo = builder.Build();

            Assert.Contains("[assembly: System.CLSCompliantAttribute(true)]", assemblyInfo);
        }
        public void WithCLSCompliant_CanBeCalledMoreThanOnce()
        {
            var builder = new AssemblyInfoBuilder(new CSharpCodeProvider());
            builder
                .WithCLSCompliant(true)
                .WithCLSCompliant(false);
            var assemblyInfo = builder.Build();

            Assert.Contains("[assembly: System.CLSCompliantAttribute(false)]", assemblyInfo);
        }
Exemple #14
0
 internal static void Build(string assemblyPath, int methodLimit, bool useHtml, List<TypeInfo> typeInfoList, out List<Partition> partitionList, out List<AssemblyInfo> assemblyInfoList)
 {
     var hasEventListenerGuard = typeInfoList.Any(x => x.FullName == EventListenerGuardFullName);
     var builder = new AssemblyInfoBuilder(assemblyPath, methodLimit, useHtml, hasEventListenerGuard);
     builder.Build(typeInfoList);
     partitionList = builder._partitionList;
     assemblyInfoList = builder._assemblyInfoList;
 }