示例#1
0
def metrics(params, config):

    parser = argparse.ArgumentParser()
    parser.add_argument('-f', '--c-files', dest='c_files'
                        , help='C file(s) to check'
                        , nargs='+')
    parser.add_argument('-P', '--project', dest='metricProject',
                        help='Display metrics of a  project', nargs='*')
    parser.add_argument('--verbose', dest= 'verbose_mode', type=int, nargs=1)

    #
    args = parser.parse_args(params)

    #
    verbose = 0
    if args.verbose_mode is not None:
        verbose = args.verbose_mode[0]

    # ---------
    if args.c_files is not None:
        #
        if len(args.c_files) > 1:
            for c_file in args.c_files:
                display_metrics(c_file, metrics_file(c_file), 1)
        else:
            c_file=args.c_files[0]
            print  metrics_file(c_file)
            display_metrics(c_file, metrics_file(c_file), 1)

    elif args.metricProject is not None:

        project = utils.checkProject(config, args.metricProject[0])
        display_metrics(project, metrics_project(project, verbose), 1)
    else:
        print 'no file to apply metrics'
示例#2
0
def applyRulesOnProject(rules_file, config, project):

    cocci_tree_path = config.get('Cocci', 'cocci_path')
    project_tree_path = config.get('Projects', 'project_path')

    # Check Project
    _project = utils.checkProject(config, project)

    # Check Rules File
    rules_abspath = utils.checkRulesFile(_project, rules_file)

    if rules_abspath is None:
        print "Rules File %s does not exist. Aborting" % rules_file
        sys.exit(2)

    # Create list of cocci_files from rules_files
    cocci_files = []
    fd = open(rules_abspath, 'r')
    for line in fd:
        if not line.startswith('#'):
            cocci_files.append(line.strip())

    # Command line
    for cocci_file in cocci_files:
        cocci_abspath = utils.checkCocciFile(cocci_tree_path, cocci_file)
        print cocci_abspath
        if cocci_abspath is not None:
            command_line = "spatch -sp_file " + cocci_abspath + " -dir " + _project
            subprocess.call(command_line, shell=True)
        else:
            print "%s is not a cocci file" % cocci_file
示例#3
0
def applyCocciOnProject(cocci_files, config, project):

    cocci_tree_path = config.get('Cocci', 'cocci_path')
    project_tree_path = config.get('Projects', 'project_path')

    _project = utils.checkProject(project_tree_path, project)

    for cocci_file in cocci_files:

        cocci_abspath = utils.checkCocciFile(cocci_tree_path, cocci_file)
        if cocci_abspath is not None:
             command_line = "spatch -sp_file " + cocci_abspath + " -dir " + _project
             subprocess.call(command_line, shell=True)
        else:
            print "%s is not a cocci file" % cocci_file