Exemplo n.º 1
0
def timezone_analysis(opts):
    from vizgrimoire.analysis.timezone import Timezone
    from vizgrimoire.SCM import SCM
    from vizgrimoire.MLS import MLS

    scm_dbcon = SCMQuery(opts.dbuser, opts.dbpassword, opts.dbcvsanaly,
                         opts.dbidentities, opts.dbprojects)
    mls_dbcon = MLSQuery(opts.dbuser, opts.dbpassword, opts.dbmlstats,
                         opts.dbidentities, opts.dbprojects)

    period = "month"
    releases = opts.releases.split(",")[-2:]
    startdate = "'" + releases[0] + "'"
    enddate = "'" + releases[1] + "'"
    filters = MetricFilters(period, startdate, enddate, [], 10, "", "")

    tz = Timezone(scm_dbcon, filters)
    dataset = tz.result(SCM)
    labels = dataset["tz"]
    commits = dataset["commits"]
    authors = dataset["authors"]
    bar_chart("Timezone git activity", labels, commits, "commits_tz", authors,
              ["commits", "authors"])

    tz = Timezone(mls_dbcon, filters)
    dataset = tz.result(MLS)
    messages = dataset["messages"]
    authors = dataset["authors"]
    bar_chart("Timezone mailing list activity", labels, messages,
              "messages_tz", authors, ["messages", "authors"])
Exemplo n.º 2
0
def data_source_increment_activity(opts, people_out, affs_out):
    # Per data source, the increment or decrement of the activity is displayed
    dataset = {}

    data_sources = ["Gits", "Tickets", "Mailing Lists", "Gerrit", "Askbot", "IRC"]
    action = ["commits", "closed tickets", "sent emails", "submitted reviews", "posted questions", "messages"]
    net_values = []
    rel_values = [] #percentage wrt the previous 365 days

    scm_dbcon = SCMQuery(opts.dbuser, opts.dbpassword, opts.dbcvsanaly, opts.dbidentities)
    its_dbcon = ITSQuery(opts.dbuser, opts.dbpassword, opts.dbbicho, opts.dbidentities)
    mls_dbcon = MLSQuery(opts.dbuser, opts.dbpassword, opts.dbmlstats, opts.dbidentities)
    scr_dbcon = SCRQuery(opts.dbuser, opts.dbpassword, opts.dbreview, opts.dbidentities)
    qaforums_dbcon = QAForumsQuery(opts.dbuser, opts.dbpassword, opts.dbqaforums, opts.dbidentities)
    irc_dbcon = IRCQuery(opts.dbuser, opts.dbpassword, opts.dbirc, opts.dbidentities)

    period = "month"
    type_analysis = None
    releases = opts.releases.split(",")[-2:]
    startdate = "'"+releases[0]+"'"
    enddate = "'"+releases[1]+"'"
    filters = MetricFilters(period, startdate, enddate, None, 10, people_out, affs_out)

    commits = scm.Commits(scm_dbcon, filters)
    closed = its.Closed(its_dbcon, filters)
    emails = mls.EmailsSent(mls_dbcon, filters)
    submitted = scr.Submitted(scr_dbcon, filters)
    questions = qa.Questions(qaforums_dbcon, filters)
    messages = irc.Sent(irc_dbcon, filters)


    from vizgrimoire.ITS import ITS
    ITS.set_backend("jira")

    net_values.append(commits.get_trends(releases[1], 90)["commits_90"])
    rel_values.append(commits.get_trends(releases[1], 90)["percentage_commits_90"])
    net_values.append(closed.get_trends(releases[1], 90)["closed_90"])
    rel_values.append(closed.get_trends(releases[1], 90)["percentage_closed_90"])
    net_values.append(emails.get_trends(releases[1], 90)["sent_90"])
    rel_values.append(emails.get_trends(releases[1], 90)["percentage_sent_90"])
    net_values.append(submitted.get_trends(releases[1], 90)["submitted_90"])
    rel_values.append(submitted.get_trends(releases[1], 90)["percentage_submitted_90"])
    net_values.append(questions.get_trends(releases[1], 90)["qsent_90"])
    rel_values.append(questions.get_trends(releases[1], 90)["percentage_qsent_90"])
    net_values.append(messages.get_trends(releases[1], 90)["sent_90"])
    rel_values.append(messages.get_trends(releases[1], 90)["percentage_sent_90"])

    createCSV({"datasource":data_sources, "metricsnames":action, "relativevalues":rel_values, "netvalues":net_values}, "./release/data_source_evolution.csv")
Exemplo n.º 3
0
        scm_dbcon = SCMQuery(opts.dbuser, opts.dbpassword, opts.dbcvsanaly,
                             opts.dbidentities)
        data.update(scm_report(scm_dbcon, filters, project_sloc))

        #ITS report
        ITS.set_backend("bg")
        its_dbcon = ITSQuery(opts.dbuser, opts.dbpassword, opts.dbbicho,
                             opts.dbidentities)
        data.update(its_report(its_dbcon, filters, project_sloc))

        #SCR Report
        #scr_dbcon = SCRQuery(opts.dbuser, opts.dbpassword, opts.dbreview, opts.dbidentities)
        #data["scr"] = scr_report(scr_dbcon, filters)

        #MLS Report
        mls_dbcon = MLSQuery(opts.dbuser, opts.dbpassword, opts.dbmlstats,
                             opts.dbidentities)
        data.update(mls_report(mls_dbcon, filters, project_sloc))
        #FUDFORUMS Report
        fudforums_dbcon = MLSQuery(opts.dbuser, opts.dbpassword,
                                   opts.dbfudforums, opts.dbidentities)
        dataset = mls_report(fudforums_dbcon, filters, project_sloc)

        data_aux = {}
        data_aux["mls_usr_vol_3m"] = dataset["mls_dev_vol_3m"]
        data_aux["mls_usr_subj_3m"] = dataset["mls_dev_subj_3m"]
        data_aux["mls_usr_auth_3m"] = dataset["mls_dev_auth_3m"]
        data_aux["mls_usr_resp_ratio_3m"] = dataset["mls_dev_resp_ratio_3m"]
        data_aux["mls_usr_resp_time_med_3m"] = dataset[
            "mls_dev_resp_time_med_3m"]
        data.update(data_aux)
Exemplo n.º 4
0
def general_info(opts, releases, people_out, affs_out):
    # General info from MLS, IRC and QAForums.
    scm_dbcon = SCMQuery(opts.dbuser, opts.dbpassword, opts.dbcvsanaly,
                         opts.dbidentities, opts.dbprojects)

    # analysis currently failing
    #timezone_analysis(opts)

    core = []
    regular = []
    occasional = []
    authors_month = []

    emails = []
    emails_senders = []
    emails_senders_init = []
    questions = []
    answers = []
    comments = []
    qsenders = []
    irc_sent = []
    irc_senders = []
    releases_data = {}
    for release in releases:
        startdate = "'" + release[0] + "'"
        enddate = "'" + release[1] + "'"
        print "General info per release: " + startdate + " - " + enddate
        filters = MetricFilters("month", startdate, enddate, None,
                                opts.npeople, people_out, affs_out)
        # SCM info
        print "    General info: SCM"
        scm_dbcon = SCMQuery(opts.dbuser, opts.dbpassword, opts.dbcvsanaly,
                             opts.dbidentities, opts.dbprojects)
        dataset = scm_general(scm_dbcon, filters)
        core.append(dataset["core"])
        regular.append(dataset["regular"])
        occasional.append(dataset["occasional"])
        authors_month.append(float(dataset["authorsperiod"]))
        top_authors = dataset["topauthors"]
        release_pos = releases.index(release)
        createCSV(top_authors,
                  "./release/top_authors_release" + str(release_pos) + ".csv")

        # MLS info
        print "    General info: MLS"
        mls_dbcon = MLSQuery(opts.dbuser, opts.dbpassword, opts.dbmlstats,
                             opts.dbidentities, opts.dbprojects)
        dataset = mls_report(mls_dbcon, filters)
        emails.append(dataset["sent"])
        emails_senders.append(dataset["senders"])
        emails_senders_init.append(dataset["senders_init"])

        # QAForums info
        print "    General info: QAForums"
        qaforums_dbcon = QAForumsQuery(opts.dbuser, opts.dbpassword,
                                       opts.dbqaforums, opts.dbidentities,
                                       opts.dbprojects)
        dataset = qaforums_report(qaforums_dbcon, filters)
        questions.append(dataset["questions"])
        answers.append(dataset["answers"])
        comments.append(dataset["comments"])
        qsenders.append(dataset["qsenders"])

        # IRC info
        print "    General info: IRC"
        irc_dbcon = IRCQuery(opts.dbuser, opts.dbpassword, opts.dbirc,
                             opts.dbidentities, opts.dbprojects)
        dataset = irc_report(irc_dbcon, filters)
        irc_sent.append(dataset["sent"])
        irc_senders.append(dataset["senders"])

    labels = [
        "13-Q3", "13-Q4", "14-Q1", "14-Q2", "14-Q3", "14-Q4", "15-Q1", "15-Q2"
    ]
    #labels = ["2013-Q3", "2013-Q4", "2014-Q1", "2014-Q2"]
    bar_chart("Emails sent", labels, emails, "emails")

    createCSV({"labels": labels, "emails": emails}, "./release/emails.csv")
    bar_chart("People sending emails", labels, emails_senders,
              "emails_senders")
    createCSV({
        "labels": labels,
        "senders": emails_senders
    }, "./release/emails_senders.csv")
    bar_chart("People initiating threads", labels, emails_senders_init,
              "emails_senders_init")
    createCSV({
        "labels": labels,
        "senders": emails_senders_init
    }, "./release/emails_senders_init.csv")
    bar_chart("Questions", labels, questions, "questions")
    createCSV({
        "labels": labels,
        "questions": questions
    }, "./release/questions.csv")
    bar_chart("Answers", labels, answers, "answers")
    createCSV({"labels": labels, "answers": answers}, "./release/answers.csv")
    bar_chart("Comments", labels, comments, "comments")
    createCSV({
        "labels": labels,
        "comments": comments
    }, "./release/comments.csv")
    bar_chart("People asking Questions", labels, qsenders, "question_senders")
    createCSV({
        "labels": labels,
        "senders": qsenders
    }, "./release/question_senders.csv")
    bar_chart("Messages in IRC channels", labels, irc_sent, "irc_sent")
    createCSV({
        "labels": labels,
        "messages": irc_sent
    }, "./release/irc_sent.csv")
    bar_chart("People in IRC channels", labels, irc_senders, "irc_senders")
    createCSV({
        "labels": labels,
        "senders": irc_senders
    }, "./release/irc_senders.csv")

    bar3_chart("Community structure", labels, regular, "onion", core,
               occasional, ["casual", "regular", "core"])
    createCSV(
        {
            "labels": labels,
            "core": core,
            "regular": regular,
            "occasional": occasional
        }, "./release/onion_model.csv")
    bar_chart("Developers per month", labels, authors_month, "authors_month")
    createCSV({
        "labels": labels,
        "authormonth": authors_month
    }, "./release/authors_month.csv")

    # other analysis
    print "Other analysis"
    scm_dbcon = SCMQuery(opts.dbuser, opts.dbpassword, opts.dbcvsanaly,
                         opts.dbidentities)
Exemplo n.º 5
0
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

from vizgrimoire.analysis.timezone import Timezone
from vizgrimoire.SCM import SCM
from vizgrimoire.MLS import MLS
from vizgrimoire.metrics.query_builder import SCMQuery
from vizgrimoire.metrics.query_builder import MLSQuery
from vizgrimoire.metrics.metrics_filter import MetricFilters

dbuser = "******"
dbpassword = ""
dbcvsanaly = "eclipse_source_code"
dbmlstats = "eclipse_mailing_list"
dbidentities = "eclipse_source_code"
period = "month"
startdate = "'2013-10-16'"
enddate = "'2014-10-17'"

scm_dbcon = SCMQuery(dbuser, dbpassword, dbcvsanaly, dbidentities)
mls_dbcon = MLSQuery(dbuser, dbpassword, dbmlstats, dbidentities)

filters = MetricFilters(period, startdate, enddate, [], 10, "", "")

tz = Timezone(scm_dbcon, filters)
dataset = tz.result(SCM)
print dataset

tz = Timezone(mls_dbcon, filters)
dataset = tz.result(MLS)
print dataset
Exemplo n.º 6
0
            to_date = self.__get_date_from_month(current_month + 1)
            messages = self.__get_messages(from_date, to_date)

            for message in messages:
                message_id = message[0]
                response_of = message[1]

                if response_of is None:
                    unanswered.append(message_id)
                    continue

                if response_of in unanswered:
                    unanswered.remove(response_of)

            num_unanswered['month'].append(current_month)
            num_unanswered['unanswered_posts'].append(len(unanswered))

        return completePeriodIds(num_unanswered, self.filters.period,
                                 self.filters.startdate, self.filters.enddate)


if __name__ == '__main__':
    from vizgrimoire.metrics.query_builder import MLSQuery
    filters = MetricFilters("month", "'2014-01-01'", "'2015-01-01'", None, 30)
    dbcon = MLSQuery("root", "", "cp_mlstats_GrimoireLibTests",
                     "cp_sortinghat_GrimoireLibTests")
    emailssenders = EmailsSenders(dbcon, filters)
    print emailssenders.get_agg()
    print emailssenders.get_list(30)
    print emailssenders.get_list(365)
Exemplo n.º 7
0
        if opts.dbbicho is not None:
            dbcon = ITSQuery(opts.dbuser, opts.dbpassword, opts.dbbicho,
                             opts.dbidentities)
            dataset.update(its_report(dbcon, filters))

        if opts.dbreview is not None:
            dbcon = SCRQuery(opts.dbuser, opts.dbpassword, opts.dbreview,
                             opts.dbidentities)
            dataset.update(scr_report(dbcon, filters))

        if opts.dbirc is not None:
            dbcon = IRCQuery(opts.dbuser, opts.dbpassword, opts.dbirc,
                             opts.dbidentities)
            dataset.update(irc_report(dbcon, filters, opts.output_dir))

        if opts.dbqaforums is not None:
            dbcon = QAForumsQuery(opts.dbuser, opts.dbpassword,
                                  opts.dbqaforums, opts.dbidentities)
            dataset.update(qaforums_report(dbcon, filters, opts.output_dir))

        if opts.dbmlstats is not None:
            dbcon = MLSQuery(opts.dbuser, opts.dbpassword, opts.dbmlstats,
                             opts.dbidentities)
            dataset.update(mls_report(dbcon, filters, opts.output_dir))

        data = update_data(data, dataset)

    createJSON(dataset, opts.output_dir + "/report.json")
    draw(data, labels, opts.output_dir)