MODULE_NAME = __name__ MODULE_DESCRIPTION = '''Run analysis of code built with a command like: javac <options> <source files> Analysis examples: infer -- javac srcfile.java infer -- /path/to/javac srcfile.java''' LANG = ['java'] def gen_instance(*args): return JavacCapture(*args) # This creates an empty argparser for the module, which provides only # description/usage information and no arguments. create_argparser = util.base_argparser(MODULE_DESCRIPTION, MODULE_NAME) class JavacCapture: def __init__(self, args, cmd): self.analysis = jwlib.AnalyzerWithFrontendWrapper( args, cmd[0], cmd[1:], ) def capture(self): try: self.analysis.start() return os.EX_OK except subprocess.CalledProcessError as exc:
import generic MODULE_NAME = __name__ MODULE_DESCRIPTION = '''Run analysis of code built with a command like: gradle [options] [task] Analysis examples: capture_javac.py -- gradle build capture_javac.py -- ./gradlew build''' def gen_instance(cmd): return GradleCapture(cmd) # This creates an empty argparser for the module, which provides only # description/usage information and no arguments. create_argparser = util.base_argparser(MODULE_DESCRIPTION, MODULE_NAME) class GradleCapture(generic.GenericCapture): def __init__(self, cmd): self.build_cmd = [cmd[0], '--debug'] + cmd[1:] def get_javac_commands(self, verbose_output): argument_start_pattern = ' Compiler arguments: ' results = [] for line in verbose_output: if argument_start_pattern in line: content = line.partition(argument_start_pattern)[2].strip() results.append(content.split(' '))