Parent:
[a7bb5d]
(diff)
Download this file
InactiveCommitters.rsc
52 lines (41 with data), 1.8 kB
module InactiveCommitters
import org::ossmeter::metricprovider::ProjectDelta;
import ValueIO;
import IO;
import Map;
import Set;
import List;
import DateTime;
@metric{inactiveCommitters}
@doc{inactiveCommitters}
@friendlyName{inactiveCommitters}
@appliesTo{generic()}
list[str] inactiveCommitters(ProjectDelta delta = \empty()) {
set[str] threeMonthsActive = {};
set[str] activeBeforeThreeMonths = {};
datetime today = delta.date;
writeBinaryValueFile(|home:///ossmeter/<delta.project.name>/activecommitters_<printDate(today.justDate, "YYYYMMdd")>.am3|, [ commit.author | /VcsCommit commit <- delta ]);
datetime threeMonthsAgo = decrementMonths(delta.date, 3);
list[datetime] activePeriod = dateRangeByDay(createInterval(threeMonthsAgo, today));
for (datetime d <- activePeriod) {
loc activeCommittersForDay = |home:///ossmeter/<delta.project.name>/activecommitters_<printDate(d.justDate, "YYYYMMdd")>.am3|;
if (exists(activeCommittersForDay)) {
threeMonthsActive += { *readBinaryValueFile(#list[str], activeCommittersForDay) };
}
}
activePeriod = dateRangeByDay(createInterval(decrementMonths(threeMonthsAgo, 6), threeMonthsAgo));
for (datetime d <- activePeriod) {
loc activeCommittersForDay = |home:///ossmeter/<delta.project.name>/activecommitters_<printDate(d.justDate, "YYYYMMdd")>.am3|;
if (exists(activeCommittersForDay)) {
activeBeforeThreeMonths += { *readBinaryValueFile(#list[str], activeCommittersForDay) };
}
}
return [*(activeBeforeThreeMonths - threeMonthsActive)];
}
@metric{numberofinactivecommitters}
@doc{numbrofinactivecommitters}
@friendlyName{numberofinactivecommitters}
@appliesTo{generic()}
int numberOfInactiveCommitters(ProjectDelta delta = \empty()) {
return size(inactiveCommitters(delta = delta));
}