args = parser.parse_args()
    return args


if __name__ == '__main__':

    args = parse()

    try:
        (path, jars) = UF.get_engagement_app_jars(args.appname)
        UF.check_analysisdir(path)
    except UF.CHJError as e:
        print(str(e.wrap()))
        exit(1)

    app = AppAccess(path)

    cms = app.jd.get_cms(args.cmsix)
    cnix = cms.cnix
    msix = cms.msix
    (methodname, methodsig) = app.jd.mssignatures[msix]

    if not app.has_user_data_class(cnix):
        cn = app.jd.get_cn(cnix)
        package = cn.get_package_name()
        cname = cn.get_simple_name()
        newuserclass = UX.create_user_class_xnode(package, cname)
        UF.save_userdataclass_file(path, package, cname, newuserclass)

    userclass = app.get_user_data_class(cnix)
    if not userclass.has_method(msix):
                        action='store_true')
    args = parser.parse_args()
    return args


if __name__ == '__main__':

    args = parse()
    try:
        (path, _) = UF.get_engagement_app_jars(args.appname)
        UF.check_analysisdir(path)
    except UF.CHJError as e:
        print(str(e.wrap()))
        exit(1)

    app = AppAccess(path)

    lines = []
    if args.showstack or args.showtargets or args.showinvariants:
        bytecodereport = BRP.BytecodeReport(app, args.cmsix)
        lines.append(
            bytecodereport.to_string(showstack=args.showstack,
                                     showtargets=args.showtargets,
                                     showinvariants=args.showinvariants))
    else:
        lines.append(str(app.get_method(args.cmsix)))

    if args.save:
        reportsdir = UF.get_engagement_reports_dir(path)
        if reportsdir is None:
            print('*' * 80)
        if tgt.is_virtual_target() and tgt.get_length() > 1:
            return True
    else:
        return False


if __name__ == '__main__':

    args = parse()

    try:
        (path, _) = UF.get_engagement_app_jars(args.appname)
        UF.check_analysisdir(path)
    except UF.CHJError as e:
        print(str(e.wrap()))
        exit(1)

    app = AppAccess(path)
    callgraph = app.get_callgraph()

    for cmsix in callgraph.edges:
        cmsedges = callgraph.edges[cmsix]
        cms = app.jd.get_cms(cmsix)
        if multiple(cmsedges) or (not args.multiple):
            print('\n' + str(cms) + ' (' + str(cmsix) + ')')
            for pc in sorted(cmsedges):
                tgt = cmsedges[pc]
                if (not args.multiple) or (tgt.is_virtual_target()
                                           and tgt.get_length() > 1):
                    print('  ' + str(pc).rjust(4) + ': ' + str(cmsedges[pc]))
Ejemplo n.º 4
0
    args = parser.parse_args()
    return args


if __name__ == '__main__':

    args = parse()

    try:
        (path, _) = UF.get_engagement_app_jars(args.appname)
        UF.check_analysisdir(path)
    except UF.CHJError as e:
        print(str(e.wrap()))
        exit(1)

    app = AppAccess(path)

    lines = []
    headername = args.appname
    lines.append(
        UP.reportheader('Named method calls to ' + args.name, headername))

    results = []

    def f(cmsix, m):
        results.append((cmsix, m.get_named_method_calls(args.name)))

    app.iter_methods(f)

    for (cmsix, mmethodcalls) in results:
        if len(mmethodcalls) > 0:
Ejemplo n.º 5
0
    args = parser.parse_args()
    return args


if __name__ == '__main__':

    args = parse()

    try:
        (path, _) = UF.get_engagement_app_jars(args.appname)
        UF.check_analysisdir(path)
    except UF.CHJError as e:
        print(str(e.wrap()))
        exit(1)

    app = AppAccess(path)

    recursionreport = Recursion(app)
    recursionstring = recursionreport.to_string()

    if args.save:
        reportsdir = UF.get_engagement_reports_dir(path)
        if reportsdir is None:
            print('*' * 80)
            print('Unable to create reports directory')
            print('*' * 80)
            exit(1)
        filename = os.path.join(reportsdir, 'cost_model_report.txt')
        with open(filename, 'w') as fp:
            fp.write(recursionstring)
    else:
    args = parser.parse_args()
    return args


if __name__ == '__main__':

    args = parse()

    try:
        (path, _) = UF.get_engagement_app_jars(args.appname)
        UF.check_analysisdir(path)
    except UF.CHJError as e:
        print(str(e.wrap()))
        exit(1)

    app = AppAccess(path)

    results = app.get_loaded_strings(substring=args.substring)

    lines = []
    headername = args.appname
    lines.append(UP.reportheader('Loaded strings', headername))
    print('-' * 80)
    for (cmsix, methodresults) in sorted(results):
        if len(methodresults) == 0: continue
        lines.append('\n' + str(app.jd.get_cms(cmsix).get_aqname()))
        for (pc, instr) in sorted(methodresults):
            lines.append((str(pc).rjust(4) + '  ' + str(instr)))

    if args.save:
        reportsdir = UF.get_engagement_reports_dir(path)