{
"info": {
"author": "Mark Fink",
"author_email": "mark@mark-fink.de",
"bugtrack_url": null,
"classifiers": [
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: English",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.6"
],
"description": "|License| |GitHub issues|\n\nmetrics\n=======\n\nThe original idea of metrics was a platform that can be extended with\nmany different metrics. At the time I will focus only on SLOC and McCabe\ncomplexity metrics. *metrics* is build in a way to support many, many\nlanguages `supported languages `__.\nCurrently we test support for Python, C, C++, Go and JavaScript.\n\nThe SLOC metric counts the lines but excludes empty lines and comments.\nThis is sometimes referred to as the *source lines of code* (SLOC). In\nliterature this is often also referred as physical lines of code. I\nsimplified it to something which to my understanding is the common\ndenominator for the metric packages I looked into (CCCC, SLOCCount,\nPyMetrics, Eclipse-Metrics, Ohcount).\n\ninstallation\n============\n\n**metrics** is released as a Python package so you can apply the std.\nPython mechanism for installation:\n\n.. code:: bash\n\n $ pip install metrics\n\nSome plugins are available to collect information from a typical\ndevelopment environment. If you have a similar environment you can\ninstall them as well in one go:\n\n.. code:: bash\n\n $ pip install metrics metrics.bumpversion metrics.gitinfo metrics.pylint metrics.pytest-cov\n\nSample use\n==========\n\nGet an overview on a package (number of files, used languages, and\nmetrics):\n\n.. code:: bash\n\n $ metrics **/*\n Metrics Summary:\n Files Language SLOC Comment McCabe \n ----- ------------------------------ ----------- ------- ------ \n 6 C 14 3 0 \n 3 C++ 1114 236 108 \n 1 INI 5 0 0 \n 2 Java 27 8 1 \n 3 JavaScript 1453 54 169 \n 1 markdown 7 0 0 \n 18 Python 1038 425 238 \n 11 Text only 0 0 0 \n ----- ------------------------------ ----------- ------- ------ \n 45 Total 3658 726 516 \n\nNote how you can use glob file pattern or a list of files\u2026\n\nUsage help:\n\n.. code:: bash\n\n $ metrics --help\n Options:\n --version show program's version number and exit\n -h, --help show this help message and exit\n -f IN_FILE_LIST, --files=IN_FILE_LIST\n File containing list of path names to modules for\n analysis.\n -q, --quiet suppress normal summary output to stdout. (Default is\n False)\n --format=OUTPUT_FORMAT_STR\n Choose an output format for a parser to read. Valid\n choices: xml, csv, json\n\nGet a detailed report:\n\n.. code:: bash\n\n $ metrics -q --format=csv metrics/metrics.py\n filename,sloc,comments,ratio_comment_to_code,mccabe,language\n metrics/metrics.py,21,14,0.67,1,Python\n\nSame detailed report but output to csv file:\n\n.. code:: bash\n\n $ metrics -q --format=csv metrics/metrics.py > output.csv\n\nPlugins for metrics\n===================\n\nSome plugins are available to collect information from a typical\ndevelopment environment. Please visit the plugin page for details:\n\n- `version from\n .bumpversion.cfg `__\n- `Git changes, commiters,\n \u2026 `__\n- `Pylint lint score `__\n- `test coverage `__\n\nSample \u201c.metrics\u201d file results (with plugins installed)\n\n.. code:: json\n\n {\n \"build\": {\n \"active_branch\": \"master\",\n \"committed_datetime\": \"2018-04-28T12:19:14+02:00\",\n \"committed_ts\": 1524910754,\n \"committers\": [\n \"mark\"\n ],\n \"origin\": \"git@github.com:markfink/metrics.gitinfo.git\",\n \"sha\": \"4c355c2f6ffef88252e565f6ef5006468e410187\",\n \"sha_start\": \"f7ba6f27ee8c34991acd3cd6ef14c8bd6ed9c34e\",\n \"summary\": \"Bump version: 0.0.4 \\u2192 0.0.5\",\n \"version\": \"0.0.5\"\n },\n \"files\": {\n \"metrics_gitinfo/__init__.py\": {\n \"age_days\": 25.81871527777778,\n \"block_positions\": [],\n \"change_frequency\": 6,\n \"comments\": 1,\n \"committers_count\": 1,\n \"language\": \"Python\",\n \"lines_added\": [\n 3\n ],\n \"lines_deleted\": [\n 3\n ],\n \"mccabe\": 0,\n \"pylint_score\": 5.0,\n \"ratio_comment_to_code\": 0.5,\n \"sloc\": 2,\n \"test_coverage\": 0.0,\n \"test_missing\": \"2-3\"\n },\n \"metrics_gitinfo/file_info.py\": {\n \"age_days\": 0.01931712962962963,\n \"block_positions\": [\n {\n \"end\": 17,\n \"name\": \"get_file_info\",\n \"start\": 5,\n \"type\": \"Function\"\n }\n ],\n \"change_frequency\": 1,\n \"comments\": 4,\n \"committers_count\": 1,\n \"language\": \"Python\",\n \"mccabe\": 1,\n \"pylint_score\": 10.0,\n \"ratio_comment_to_code\": 0.44,\n \"sloc\": 9,\n \"test_coverage\": 0.0,\n \"test_missing\": \"2-17\"\n },\n \"metrics_gitinfo/git_diff_muncher.py\": {\n \"age_days\": 24.06056712962963,\n \"block_positions\": [\n {\n \"end\": 17,\n \"name\": \"GitDiffError\",\n \"start\": 10,\n \"type\": \"Class\"\n },\n {\n \"end\": 81,\n \"name\": \"parse_diff_lines\",\n \"start\": 18,\n \"type\": \"Function\"\n },\n {\n \"end\": 111,\n \"name\": \"_parse_hunk_line\",\n \"start\": 82,\n \"type\": \"Function\"\n }\n ],\n \"change_frequency\": 1,\n \"comments\": 50,\n \"committers_count\": 1,\n \"language\": \"Python\",\n \"mccabe\": 15,\n \"pylint_score\": 9.56,\n \"ratio_comment_to_code\": 1.02,\n \"sloc\": 49,\n \"test_coverage\": 0.0,\n \"test_missing\": \"2-129\"\n },\n \"metrics_gitinfo/gitinfo.py\": {\n \"age_days\": 25.81871527777778,\n \"block_positions\": [\n {\n \"end\": 17,\n \"name\": \"get_file_processors\",\n \"start\": 13,\n \"type\": \"Function\"\n },\n {\n \"end\": 22,\n \"name\": \"get_build_processors\",\n \"start\": 18,\n \"type\": \"Function\"\n },\n {\n \"end\": 113,\n \"methods\": [\n {\n \"end\": 35,\n \"name\": \"_get_commits_contained\",\n \"start\": 31,\n \"type\": \"Function\"\n },\n {\n \"end\": 41,\n \"name\": \"_get_source_target\",\n \"start\": 36,\n \"type\": \"Function\"\n },\n {\n \"end\": 56,\n \"name\": \"_extract_info\",\n \"start\": 52,\n \"type\": \"Function\"\n },\n {\n \"end\": 88,\n \"name\": \"reset\",\n \"start\": 84,\n \"type\": \"Function\"\n },\n {\n \"end\": 105,\n \"name\": \"process_file\",\n \"start\": 89,\n \"type\": \"Function\"\n },\n {\n \"end\": 108,\n \"name\": \"get_metrics\",\n \"start\": 106,\n \"type\": \"Function\"\n },\n {\n \"end\": 113,\n \"name\": \"get_build_metrics\",\n \"start\": 109,\n \"type\": \"Function\"\n }\n ],\n \"name\": \"GitMetric\",\n \"start\": 23,\n \"type\": \"Class\"\n }\n ],\n \"change_frequency\": 7,\n \"comments\": 9,\n \"committers_count\": 1,\n \"language\": \"Python\",\n \"lines_added\": [\n 96\n ],\n \"lines_deleted\": [\n 66,\n 94,\n 97\n ],\n \"mccabe\": 8,\n \"pylint_score\": 9.06,\n \"ratio_comment_to_code\": 0.11,\n \"sloc\": 83,\n \"test_coverage\": 0.0,\n \"test_missing\": \"2-113\"\n },\n \"tests/__init__.py\": {\n \"age_days\": 24.099988425925925,\n \"block_positions\": [\n {\n \"end\": 10,\n \"name\": \"here\",\n \"start\": 9,\n \"type\": \"Function\"\n }\n ],\n \"change_frequency\": 1,\n \"comments\": 1,\n \"committers_count\": 1,\n \"language\": \"Python\",\n \"mccabe\": 0,\n \"pylint_score\": 3.33,\n \"ratio_comment_to_code\": 0.17,\n \"sloc\": 6,\n \"test_coverage\": 83.33,\n \"test_missing\": \"10\"\n },\n \"tests/test_metrics_gitinfo.py\": {\n \"age_days\": 22.091909722222223,\n \"block_positions\": [\n {\n \"end\": 19,\n \"name\": \"tempfolder\",\n \"start\": 11,\n \"type\": \"Function\"\n },\n {\n \"end\": 29,\n \"name\": \"test_metrics_gitinfo_no_git_repo\",\n \"start\": 20,\n \"type\": \"Function\"\n },\n {\n \"end\": 39,\n \"name\": \"test_metrics_gitinfo\",\n \"start\": 30,\n \"type\": \"Function\"\n },\n {\n \"end\": 47,\n \"name\": \"test_metrics_gitinfo_no_lastrun\",\n \"start\": 40,\n \"type\": \"Function\"\n }\n ],\n \"change_frequency\": 1,\n \"comments\": 2,\n \"committers_count\": 1,\n \"language\": \"Python\",\n \"mccabe\": 6,\n \"pylint_score\": 4.64,\n \"ratio_comment_to_code\": 0.07,\n \"sloc\": 29,\n \"test_coverage\": 100.0\n }\n }\n }\n\nAcknowledgements\n================\n\n- codebase originally based on grop.py by Jurgen Hermann (2001)\n- also based on PyMetrics by Reg. Charney to do Python complexity\n measurements (2007)\n- we use some sample programming language files for the test cases from\n Ohcount and Firefox\n\nLicense\n=======\n\nCopyright (c) 2017, 2018 Fink Labs GmbH and others. metrics is released\nunder the MIT License (see MIT_LICENSE).\n\n.. |License| image:: http://img.shields.io/badge/license-MIT-yellowgreen.svg\n :target: MIT_LICENSE\n.. |GitHub issues| image:: https://img.shields.io/github/issues/finklabs/metrics.svg?maxAge=2592000\n :target: https://github.com/finklabs/metrics/issues\n",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/finklabs/metrics/",
"keywords": "",
"license": "MIT",
"maintainer": "",
"maintainer_email": "",
"name": "metrics",
"package_url": "https://pypi.org/project/metrics/",
"platform": "",
"project_url": "https://pypi.org/project/metrics/",
"project_urls": {
"Homepage": "https://github.com/finklabs/metrics/"
},
"release_url": "https://pypi.org/project/metrics/0.3.3/",
"requires_dist": null,
"requires_python": "",
"summary": "metrics for Python, C, C++, Go and Javascript code (plugins for pylint, pytest-cov, and git available)",
"version": "0.3.3"
},
"last_serial": 3816675,
"releases": {
"0.1a2": [
{
"comment_text": "",
"digests": {
"md5": "194a656bf2aa234d57afc3b276ddb7a2",
"sha256": "c043812ab8b99dd5672c9bf55c777771ca0aaa91448f7cf5900573e82907e5d4"
},
"downloads": -1,
"filename": "metrics-0.1a2.tar.gz",
"has_sig": false,
"md5_digest": "194a656bf2aa234d57afc3b276ddb7a2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10742,
"upload_time": "2010-05-13T17:21:23",
"url": "https://files.pythonhosted.org/packages/05/29/2619cb939f70525193a8c0c192ce661e99b2c4b0c8d4772d17af116ae0f9/metrics-0.1a2.tar.gz"
}
],
"0.1a3": [
{
"comment_text": "",
"digests": {
"md5": "898d58cfcabb77480e33bb48ef6a3682",
"sha256": "5747411e01fb82458f57f678555f0bccb44be06ecb8368a31aeb967b7e4b98a8"
},
"downloads": -1,
"filename": "metrics-0.1a3.tar.gz",
"has_sig": false,
"md5_digest": "898d58cfcabb77480e33bb48ef6a3682",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 11750,
"upload_time": "2010-05-16T19:47:15",
"url": "https://files.pythonhosted.org/packages/92/9d/84be2ccdcd2a829ffcfe649ea9f2525e92c5f074cbb2ece13b41b3b8a6c5/metrics-0.1a3.tar.gz"
}
],
"0.2.0": [
{
"comment_text": "",
"digests": {
"md5": "f143f65baf8e91c213f4f90b678301f5",
"sha256": "6d6596d66d5b94a36468b2d0f6ff1b6e0bbf90d3a8bccd0375d37a4e09a3aed2"
},
"downloads": -1,
"filename": "metrics-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "f143f65baf8e91c213f4f90b678301f5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10144,
"upload_time": "2013-08-12T14:28:50",
"url": "https://files.pythonhosted.org/packages/8c/12/d7e2ff2d5eea74fb2bd1b3ab066752e6f29fa95a35bf728129bc940d4d76/metrics-0.2.0.tar.gz"
}
],
"0.2.1": [
{
"comment_text": "",
"digests": {
"md5": "368ee6d365c5f40e049f1c1bc1a8c49c",
"sha256": "46942b077ecded5dde077f3fcc407b73368eba357334a50127dbce5d688e5d96"
},
"downloads": -1,
"filename": "metrics-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "368ee6d365c5f40e049f1c1bc1a8c49c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10172,
"upload_time": "2013-08-12T16:55:08",
"url": "https://files.pythonhosted.org/packages/ac/f9/29d1c81de7a91b524481f9613bc4ec50a202503902e4470d070c74f9b1ae/metrics-0.2.1.tar.gz"
}
],
"0.2.2": [
{
"comment_text": "",
"digests": {
"md5": "aa48cb5eb07a69dab649a3a6aaafb89e",
"sha256": "eede1880f4b1f407f7061871bf3413686cd20ba454073117402bbc178c382e44"
},
"downloads": -1,
"filename": "metrics-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "aa48cb5eb07a69dab649a3a6aaafb89e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 10203,
"upload_time": "2013-08-12T17:06:11",
"url": "https://files.pythonhosted.org/packages/28/a7/f047bf12a06cb613d1d5f105a590529d244152db63f9363201857ae4c920/metrics-0.2.2.tar.gz"
}
],
"0.2.3": [
{
"comment_text": "",
"digests": {
"md5": "e9b528bdc346857b7d13ae501e9846c2",
"sha256": "562a9d04be95d1971e03db4fe5bac3c90d62e58aa6c1dd5f35981ae8bd15cd60"
},
"downloads": -1,
"filename": "metrics-0.2.3.tar.gz",
"has_sig": false,
"md5_digest": "e9b528bdc346857b7d13ae501e9846c2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12345,
"upload_time": "2013-08-12T17:31:40",
"url": "https://files.pythonhosted.org/packages/70/be/5f3df15e1aafbff4b134224c5aea60d37676f34d0d3ce543079584b5a61a/metrics-0.2.3.tar.gz"
}
],
"0.2.4": [
{
"comment_text": "",
"digests": {
"md5": "068768bbad7df95c7d0e50be0e07b1bd",
"sha256": "64f611616f0a604f3394d02fa0d9fd3c7e5e3a9d08a44d1e00d61d2dccdc387d"
},
"downloads": -1,
"filename": "metrics-0.2.4.tar.gz",
"has_sig": false,
"md5_digest": "068768bbad7df95c7d0e50be0e07b1bd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12347,
"upload_time": "2013-08-12T17:37:54",
"url": "https://files.pythonhosted.org/packages/ff/3a/2e214b7087a0e339c6b167cd4f57317fbbfdf3b4a9ab5e6de2dbea9253dd/metrics-0.2.4.tar.gz"
}
],
"0.2.5": [
{
"comment_text": "",
"digests": {
"md5": "e749fbbfb71e9da1df0e8f7eb24a9354",
"sha256": "64be8eb400fe86cb87ff9b2f6fb783232f79c70c21a3aeab8a419d52a977da4e"
},
"downloads": -1,
"filename": "metrics-0.2.5.tar.gz",
"has_sig": false,
"md5_digest": "e749fbbfb71e9da1df0e8f7eb24a9354",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12362,
"upload_time": "2013-08-12T17:49:07",
"url": "https://files.pythonhosted.org/packages/3a/8a/8b696475efbdf8f31d508c647112eba23bde71bea74f259edc93b68d72db/metrics-0.2.5.tar.gz"
}
],
"0.2.6": [
{
"comment_text": "",
"digests": {
"md5": "3b8c419af353e4f8c8fd09e0f03fc233",
"sha256": "116348a3de1bc353d877ed495ddce336a519f134c5a12327e78529ecc97739ca"
},
"downloads": -1,
"filename": "metrics-0.2.6.tar.gz",
"has_sig": false,
"md5_digest": "3b8c419af353e4f8c8fd09e0f03fc233",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12392,
"upload_time": "2013-08-14T13:35:54",
"url": "https://files.pythonhosted.org/packages/2d/ef/1248217be4e4343b4ffbcf6f1d3c1df298072ccdca38df2a412fe84d297b/metrics-0.2.6.tar.gz"
}
],
"0.2.7": [
{
"comment_text": "",
"digests": {
"md5": "023e07098723987eeb963b68456c7e1e",
"sha256": "54c7a0969e3702ec64e99ede9ecfdfdad3ec7754ebe3e89e05918fd6c93ff40d"
},
"downloads": -1,
"filename": "metrics-0.2.7.tar.gz",
"has_sig": false,
"md5_digest": "023e07098723987eeb963b68456c7e1e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12513,
"upload_time": "2017-10-21T08:15:18",
"url": "https://files.pythonhosted.org/packages/41/2b/db5b4fea1d165f78f859837517defd289fcfc81afb6f8a12e592aac515be/metrics-0.2.7.tar.gz"
}
],
"0.2.8": [
{
"comment_text": "",
"digests": {
"md5": "9d511317eaed6850ae2acf19dce06c10",
"sha256": "95c47a7d3074d865f9d9d5a78b50929a25420d4230976b8a37ffdc13f6a6fa51"
},
"downloads": -1,
"filename": "metrics-0.2.8.tar.gz",
"has_sig": false,
"md5_digest": "9d511317eaed6850ae2acf19dce06c10",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12983,
"upload_time": "2017-10-21T08:40:20",
"url": "https://files.pythonhosted.org/packages/d5/41/66eccfa54dd3f88c09472c44d80efdfdb249c0fd89e2e7c199643931d1c9/metrics-0.2.8.tar.gz"
}
],
"0.3.0": [
{
"comment_text": "",
"digests": {
"md5": "22a72bdf6f17e84932a8259d70ea617a",
"sha256": "04f9c698a41303d30d09cd51066997ea18a862be6e1754ce0f5debbe3cc23872"
},
"downloads": -1,
"filename": "metrics-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "22a72bdf6f17e84932a8259d70ea617a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14851,
"upload_time": "2018-04-06T08:26:04",
"url": "https://files.pythonhosted.org/packages/45/51/71eea436e89be7118d083f62bb783071bac4c4889f044c509ec7aaae0c84/metrics-0.3.0.tar.gz"
}
],
"0.3.1": [
{
"comment_text": "",
"digests": {
"md5": "5db26dec94b9c1ba181c56da7649dfa9",
"sha256": "2de5c001c571158bb8d6a82d063583a453c67d89a140b2e8684633354ffca552"
},
"downloads": -1,
"filename": "metrics-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "5db26dec94b9c1ba181c56da7649dfa9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 14912,
"upload_time": "2018-04-28T09:58:09",
"url": "https://files.pythonhosted.org/packages/9f/c4/19a55f67677e6b41e03600fdb44c5c63e718543807c393c94011c73e7501/metrics-0.3.1.tar.gz"
}
],
"0.3.2": [
{
"comment_text": "",
"digests": {
"md5": "fc041901512e5a149ad4ee0269994940",
"sha256": "9ad1cdfab8c6010b59ee88f579f43c3772fd2953f4ef5c6d41413196c99fa2e5"
},
"downloads": -1,
"filename": "metrics-0.3.2.tar.gz",
"has_sig": false,
"md5_digest": "fc041901512e5a149ad4ee0269994940",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18035,
"upload_time": "2018-04-28T10:21:51",
"url": "https://files.pythonhosted.org/packages/bb/a0/b019f3b26a2ad4246d67c5253b668d99f3674d15e10685af8b46922ca8e5/metrics-0.3.2.tar.gz"
}
],
"0.3.3": [
{
"comment_text": "",
"digests": {
"md5": "66e6c3c7cdc4b2959781ca53eab8829c",
"sha256": "60a2bceea8b56f3c408c4ea5d2e9891f5ddb17e4754f7ebc3feb8844faef9ecf"
},
"downloads": -1,
"filename": "metrics-0.3.3.tar.gz",
"has_sig": false,
"md5_digest": "66e6c3c7cdc4b2959781ca53eab8829c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18073,
"upload_time": "2018-04-28T10:58:56",
"url": "https://files.pythonhosted.org/packages/01/ae/3ab18f2f3449f2e7931112c991ade9684eeddf96cea03ea7f662c01f0658/metrics-0.3.3.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "66e6c3c7cdc4b2959781ca53eab8829c",
"sha256": "60a2bceea8b56f3c408c4ea5d2e9891f5ddb17e4754f7ebc3feb8844faef9ecf"
},
"downloads": -1,
"filename": "metrics-0.3.3.tar.gz",
"has_sig": false,
"md5_digest": "66e6c3c7cdc4b2959781ca53eab8829c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18073,
"upload_time": "2018-04-28T10:58:56",
"url": "https://files.pythonhosted.org/packages/01/ae/3ab18f2f3449f2e7931112c991ade9684eeddf96cea03ea7f662c01f0658/metrics-0.3.3.tar.gz"
}
]
}