codeclimate/codeclimate-eslint

View on GitHub
lib/compute_fingerprint.js

Summary

Maintainability
A
0 mins
Test Coverage
var crypto = require("crypto");

var Fingerprint = function (path, rule, message) {
  this.path = path;
  this.rule = rule;
  this.message = message;
};

Fingerprint.prototype.compute = function() {
  var fingerprint = null;

  if (this.rule === "complexity") {
    var md5 = crypto.createHash("md5");
    md5.update(this.path);
    md5.update(this.rule);
    md5.update(this.strippedMessage(this.message));

    fingerprint = md5.digest("hex");
  }

  return fingerprint;
};

Fingerprint.prototype.strippedMessage = function(message) {
  var regex = /Function '\S+'/
    , match = message.match(regex);

  if (match) {
    return match[0];
  } else {
    return "Anonymous Function";
  }
};

function computeFingerprint(path, rule, message) {
  return new Fingerprint(path, rule, message).compute();
};

module.exports = computeFingerprint;