protected override DisassembleResult DisassembleFile(string compiledFilePath)
        {
            var compiledFilesToDisassemble =
                Directory.GetFiles(this.workingDirectory, JavaCompiledFilesSearchPattern, SearchOption.AllDirectories);

            var result = new DisassembleResult(compiledFilesToDisassemble.Length > 0);

            var disassembledCode = new StringBuilder();

            foreach (var compiledFile in compiledFilesToDisassemble)
            {
                var currentDisassembleResult =
                    this.Disassembler.Disassemble(compiledFile, this.DisassemblerAdditionalArguments);
                if (!currentDisassembleResult.IsDisassembledSuccessfully)
                {
                    result.IsDisassembledSuccessfully = false;
                    break;
                }

                disassembledCode.AppendLine(currentDisassembleResult.DisassembledCode);
            }

            if (result.IsDisassembledSuccessfully)
            {
                result.DisassembledCode = disassembledCode.ToString();
            }

            DirectoryHelpers.SafeDeleteDirectory(this.workingDirectory, true);

            return result;
        }
        protected override DisassembleResult DisassembleFile(string compiledFilePath)
        {
            var compiledFilesToDisassemble =
                Directory.GetFiles(this.workingDirectory, JavaCompiledFilesSearchPattern, SearchOption.AllDirectories);

            var result = new DisassembleResult(compiledFilesToDisassemble.Length > 0);

            var disassembledCode = new StringBuilder();

            foreach (var compiledFile in compiledFilesToDisassemble)
            {
                var currentDisassembleResult =
                    this.Disassembler.Disassemble(compiledFile, this.DisassemblerAdditionalArguments);
                if (!currentDisassembleResult.IsDisassembledSuccessfully)
                {
                    result.IsDisassembledSuccessfully = false;
                    break;
                }

                disassembledCode.AppendLine(currentDisassembleResult.DisassembledCode);
            }

            if (result.IsDisassembledSuccessfully)
            {
                result.DisassembledCode = disassembledCode.ToString();
            }

            DirectoryHelpers.SafeDeleteDirectory(this.workingDirectory, true);

            return(result);
        }
Exemplo n.º 3
0
        public DependencyGraph BuildGraphForMethod(MethodBase method)
        {
            using (DisassembleResult disassembled = _disassembler.Disassemble(method))
            {
                var graph   = new DependencyGraph(disassembled.ModuleDefinition, _moduleComparer);
                var visitor = new DependencyGraphInstructionVisitor(graph, _moduleComparer);

                foreach (var instruction in disassembled.Body.Instructions)
                {
                    instruction.Accept(visitor);
                }

                return(graph);
            }
        }