From d0511548cf07af7121b093ed8455f71481224db2 Mon Sep 17 00:00:00 2001 From: Andrii Kucherenko Date: Fri, 14 Dec 2018 15:10:47 +0200 Subject: [PATCH] feat(html reporter): add graph to report add charts to html report --- .jscpd.json | 2 +- assets/jscpd-badge.svg | 2 +- html/layout.pug | 76 +++++++++++++++-- html/report.pug | 6 ++ package-lock.json | 80 +++++++++--------- package.json | 4 +- src/__tests__/__snapshots__/index.spec.js.md | 10 +-- .../__snapshots__/index.spec.js.snap | Bin 2318 -> 2323 bytes src/__tests__/index.spec.ts | 2 +- src/reporters/html.ts | 6 ++ 10 files changed, 133 insertions(+), 55 deletions(-) diff --git a/.jscpd.json b/.jscpd.json index 8e65774d..ef41ad04 100644 --- a/.jscpd.json +++ b/.jscpd.json @@ -1,5 +1,5 @@ { - "threshold": 0.1, + "threshold": 0, "reporters": ["console", "badge"], "ignore": ["**/__snapshots__/**"], "tokensToSkip": ["comment", "empty", "new_line", "ignore"] diff --git a/assets/jscpd-badge.svg b/assets/jscpd-badge.svg index 59f1edef..f58724d4 100644 --- a/assets/jscpd-badge.svg +++ b/assets/jscpd-badge.svg @@ -1,7 +1,7 @@ - + Copy/Paste diff --git a/html/layout.pug b/html/layout.pug index 24f4b3d7..f9c52674 100644 --- a/html/layout.pug +++ b/html/layout.pug @@ -5,11 +5,11 @@ html(lang='en') meta(http-equiv='x-ua-compatible', content='ie=edge') meta(name='viewport', content='width=device-width, initial-scale=1') title jscpd, Copy/Paste Detector - link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/themes/prism.min.css') link(rel='stylesheet', href='https://unpkg.com/purecss@1.0.0/build/pure-min.css', integrity="sha384-nn4HPE8lTHyVtfCBi5yW9d20FjT8BJwUXyWZT9InLYax14RDjBj46LmSztkmNP9w", crossorigin="anonymous") + link(rel='stylesheet', href='https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/themes/prism.min.css') script(src='https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/prism.min.js') script(src='https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/plugins/autoloader/prism-autoloader.min.js') - + script(src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.1.0/echarts.js", integrity="sha256-5oGDDQdB95LVt6XQcCR1rIRWUIoDC9vtM/TmZFmmvHc=", crossorigin="anonymous") script. Prism.plugins.autoloader.languages_path = 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/components/'; @@ -28,6 +28,63 @@ html(lang='en') } window.onload = function() { + echarts.init(document.getElementById('totalChart')).setOption({ + title: { + text: 'Copy/paste report', + x: 'center' + }, + tooltip: { + trigger: 'item', + formatter: "{a}
{b} : {c} lines" + }, + series: [ + { + name: 'Copy/Paste report', + type: 'pie', + data: [ + { value: #{total.lines}, name: 'Total' }, + { value: #{total.duplicatedLines}, name: 'Copy/Pasted' }, + ] + } + ] + }); + + echarts.init(document.getElementById('formatsChart')).setOption({ + title: { + text: 'Formats analyzed', + x: 'center' + }, + tooltip: { + trigger: 'item', + formatter: "{a}
{b} : {c} lines" + }, + label: { + normal: { + show: false, + position: 'center' + }, + emphasis: { + show: true, + textStyle: { + fontSize: '30', + fontWeight: 'bold' + } + } + }, + labelLine: { + normal: { + show: false + } + }, + series: [ + { + name: 'Formats analyzed', + type: 'pie', + data: !{JSON.stringify(formatsReports)} + } + ] + }); + document.querySelectorAll('.clone').forEach(function(cloneElement) { cloneElement.addEventListener('click', expandCollapse) }); @@ -111,6 +168,10 @@ html(lang='en') padding: 2em 1em 0; } + a.top { + padding-left: 1em; + } + .clone { padding-bottom: 2em; @@ -278,6 +339,11 @@ html(lang='en') .footer p © 2013-2018 jscpd, copy/paste detector - - - + script(async='', src='https://www.googletagmanager.com/gtag/js?id=UA-730549-17') + script. + window.dataLayer = window.dataLayer || []; + function gtag() { + dataLayer.push(arguments); + } + gtag('js', new Date()); + gtag('config', 'UA-730549-17'); diff --git a/html/report.pug b/html/report.pug index 0bca29ff..22e4e75c 100644 --- a/html/report.pug +++ b/html/report.pug @@ -2,6 +2,11 @@ extends layout block content + a(name="top") + .pure-g + .pure-u-1-2.pure-u-md-1#totalChart(style="min-height:20em;") + .pure-u-1-2.pure-u-md-1#formatsChart(style="min-height:20em;") + .controls .pure-u button.pure-button(onclick="collapseExpandAll()") Collapse/Expand All @@ -34,6 +39,7 @@ mixin mode(name, mode) p span.mode-rate= mode.total.percentage + '%' = " Total files: " + mode.total.sources + ", total lines of code: " + mode.total.lines + ", duplicated lines: " + mode.total.duplicatedLines + a.top(href="#top")= "[Top ↑↑↑]" each clone in clones if clone.format === name diff --git a/package-lock.json b/package-lock.json index 1a57eab0..365519f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -469,30 +469,24 @@ } }, "@sinonjs/formatio": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.0.0.tgz", - "integrity": "sha512-vdjoYLDptCgvtJs57ULshak3iJe4NW3sJ3g36xVDGff5AE8P30S6A093EIEPjdi2noGhfuNOEkbxt3J3awFW1w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.1.0.tgz", + "integrity": "sha512-ZAR2bPHOl4Xg6eklUGpsdiIJ4+J1SNag1DHHrG/73Uz/nVwXqjgUtRPLoS+aVyieN9cSbc0E4LsU984tWcDyNg==", "dev": true, "requires": { - "@sinonjs/samsam": "2.1.0" - }, - "dependencies": { - "@sinonjs/samsam": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.0.tgz", - "integrity": "sha512-5x2kFgJYupaF1ns/RmharQ90lQkd2ELS8A9X0ymkAAdemYHGtI2KiUHG8nX2WU0T1qgnOU5YMqnBM2V7NUanNw==", - "dev": true, - "requires": { - "array-from": "^2.1.1" - } - } + "@sinonjs/samsam": "^2 || ^3" } }, "@sinonjs/samsam": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.2.tgz", - "integrity": "sha512-ZwTHAlC9akprWDinwEPD4kOuwaYZlyMwVJIANsKNC3QVp0AHB04m7RnB4eqeWfgmxw8MGTzS9uMaw93Z3QcZbw==", - "dev": true + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.0.2.tgz", + "integrity": "sha512-m08g4CS3J6lwRQk1pj1EO+KEVWbrbXsmi9Pw0ySmrIbcVxVaedoFgLvFsV8wHLwh01EpROVz3KvVcD1Jmks9FQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.0.2", + "array-from": "^2.1.1", + "lodash.get": "^4.4.2" + } }, "@types/babel-types": { "version": "7.0.4", @@ -622,9 +616,9 @@ } }, "@types/sinon": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-5.0.2.tgz", - "integrity": "sha512-ifYuFq3GWyvRbqebGB4ZKLqezMGLXzhHv1Uefhg+uARYs/iO+v6Gu/BkpxTxsyM9NI++N/RCf5sWl3X9wBVLaw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.0.0.tgz", + "integrity": "sha512-kcYoPw0uKioFVC/oOqafk2yizSceIQXCYnkYts9vJIwQklFRsMubTObTDrjQamUyBRd47332s85074cd/hCwxg==", "dev": true }, "JSONStream": { @@ -5196,9 +5190,9 @@ } }, "lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-3.0.0.tgz", + "integrity": "sha512-hcnW80h3j2lbUfFdMArd5UPA/vxZJ+G8vobd+wg3nVEQA0EigStbYcrG030FJxL6xiDDPEkoMatV9xIh5OecQQ==", "dev": true }, "longest": { @@ -5550,16 +5544,24 @@ "dev": true }, "nise": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.6.tgz", - "integrity": "sha512-1GedetLKzmqmgwabuMSqPsT7oumdR77SBpDfNNJhADRIeA3LN/2RVqR4fFqwvzhAqcTef6PPCzQwITE/YQ8S8A==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.7.tgz", + "integrity": "sha512-5cxvo/pEAEHBX5s0zl+zd96BvHHuua/zttIHeQuTWSDjGrWsEHamty8xbZNfocC+fx7NMrle7XHvvxtFxobIZQ==", "dev": true, "requires": { - "@sinonjs/formatio": "3.0.0", + "@sinonjs/formatio": "^3.1.0", "just-extend": "^3.0.0", "lolex": "^2.3.2", "path-to-regexp": "^1.7.0", "text-encoding": "^0.6.4" + }, + "dependencies": { + "lolex": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", + "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", + "dev": true + } } }, "node-status-codes": { @@ -8185,20 +8187,18 @@ "dev": true }, "sinon": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.3.5.tgz", - "integrity": "sha512-xgoZ2gKjyVRcF08RrIQc+srnSyY1JDJtxu3Nsz07j1ffjgXoY6uPLf/qja6nDBZgzYYEovVkFryw2+KiZz11xQ==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.2.tgz", + "integrity": "sha512-WLagdMHiEsrRmee3jr6IIDntOF4kbI6N2pfbi8wkv50qaUQcBglkzkjtoOEbeJ2vf1EsrHhLI+5Ny8//WHdMoA==", "dev": true, "requires": { - "@sinonjs/commons": "^1.0.2", - "@sinonjs/formatio": "^3.0.0", - "@sinonjs/samsam": "^2.1.2", + "@sinonjs/commons": "^1.2.0", + "@sinonjs/formatio": "^3.1.0", + "@sinonjs/samsam": "^3.0.2", "diff": "^3.5.0", - "lodash.get": "^4.4.2", - "lolex": "^2.7.5", - "nise": "^1.4.5", - "supports-color": "^5.5.0", - "type-detect": "^4.0.8" + "lolex": "^3.0.0", + "nise": "^1.4.7", + "supports-color": "^5.5.0" }, "dependencies": { "supports-color": { diff --git a/package.json b/package.json index beff6a46..36c47ae0 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@types/prismjs": "^1.9.0", "@types/proxyquire": "^1.3.28", "@types/pug": "^2.0.4", - "@types/sinon": "^5.0.2", + "@types/sinon": "^7.0.0", "ava": "^1.0.0-beta.8", "codecov": "^3.1.0", "cz-conventional-changelog": "^2.1.0", @@ -86,7 +86,7 @@ "opn-cli": "^3.1.0", "prettier": "^1.14.3", "proxyquire": "^2.1.0", - "sinon": "^6.3.5", + "sinon": "^7.2.2", "standard-version": "^4.4.0", "trash-cli": "^1.4.0", "ts-node": "^7.0.1", diff --git a/src/__tests__/__snapshots__/index.spec.js.md b/src/__tests__/__snapshots__/index.spec.js.md index f5425752..138f11cc 100644 --- a/src/__tests__/__snapshots__/index.spec.js.md +++ b/src/__tests__/__snapshots__/index.spec.js.md @@ -92,7 +92,7 @@ Generated by [AVA](https://ava.li). }, }, format: 'javascript', - foundDate: 'date', + foundDate: 123123, }, { duplicationA: { @@ -182,7 +182,7 @@ Generated by [AVA](https://ava.li). }, }, format: 'javascript', - foundDate: 'date', + foundDate: 123123, }, { duplicationA: { @@ -272,7 +272,7 @@ Generated by [AVA](https://ava.li). }, }, format: 'javascript', - foundDate: 'date', + foundDate: 123123, }, { duplicationA: { @@ -410,7 +410,7 @@ Generated by [AVA](https://ava.li). }, }, format: 'javascript', - foundDate: 'date', + foundDate: 123123, }, { duplicationA: { @@ -500,6 +500,6 @@ Generated by [AVA](https://ava.li). }, }, format: 'javascript', - foundDate: 'date', + foundDate: 123123, }, ] diff --git a/src/__tests__/__snapshots__/index.spec.js.snap b/src/__tests__/__snapshots__/index.spec.js.snap index 9dfe0a6882e48c0239ecb6287490bfcd2d6e05f3..24018d5ce9bfd55d659bd68f96eaa16b9719ae57 100644 GIT binary patch literal 2323 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 literal 2318 zcmV+p3GwzpRzVjT8R`OQkx_#dpc-6>Fg!9 z`Kr_Oxy`-kRPwvcDW}=w^ci>n&Cdc~2c842N`?NKPt4xK61Ly-5wFO%SQ+W z4gu4^{XQ;gizw=Gu$}~-2VMuZ`?;taMNtRAItqLkxEHv@N9`6x{TQqlfH#1SCPGG< zxTtroh-!Do4)rVKPdXz{vpbKB|T5~F6E~s|# zuI~EB;TXjtazp=iGvD5KdWh|J#ftp9b2VK&(O!Ny`dk}G<5aa z8&aBU8A`8mwf=@Mtvrg(z6x9hp93xd9qokl0MqSUWQ!=$ z0&59)5co(3A)f@E>fj>VMUhv)`W5gO;Ds(iUIXYhE^@0Vaz9w(z+J%bc0%p|KE9oc z>=s3S0jw_p-v%!3B;*^wZ+CK$J4KOif+g+3R0ecYLc+i-MBAwpV#n}Emr2zdthM;{j{izdc^o3uyfgrXrTLi>Hy_&6y<;mLnas|aM!|>o zz}oU|{*71UU%*t2ImTz8mC2b2HkmA*=q}HgqmJW<Y?1t}7N^p_n`nj>JL= zUYaJoZ{t)r8I*jL$q|7F6YOpf(kwhgonnq}Brc87UsODVG8Ql^EMq<3vLYjD;vZV@%e5u8Bi~W}{cYHDSe0biQ zcOBo(_?IRcXTzhTqZJR>c>=50^PaNDsOX|xB$hx+kPc$WB2ldDWDFfG?9ZRaWAiQ+ zo?b!Dxx2Bp{Fs~f$HR48NS4AiD(q6D!WtD;^u38H>`Hwq%v-~xNR0}MMj92?s4%+e zDr_cF$2IJMS{3%)Mujyhtmu0aRoLbFRG7Dh{k~R({dt`g_EMlUMmak*a)uesPg5#8 z|6DkeRBe?OhbtPT6YfQess^2$IuRKe89oq+75)uD?F_y9BDA%6O@%m@KQSsKDs7Ic-Ge z!og`HSa@DeZsA^RcFsmbFgWI=9IBMcZu#Tvz!-K1%W_^p;ADS4KU*X!yG^83^EQmZ z5hO~ey1Ek3i^WIy>?%6xAE#69Kq)CRvv6BMM^02GnO9g^N`}}Wi0u#2o*qv*J}@*A zTBo+7a){m!2Hpn_6M=e=rh@J8JRx&^n!zZbNKnLpM`7Clv~} zpoQ9PTlv4U#_H2pecpDf&t9dD?{||*jn!vSX{eVM-pVi0v z?ekcz)#sP%Tz%#xOwLTln&M2=@gdB5@fbZ!gLh~j4dO0?lk?1(zuVj=meF(0=qzf6 z!AzWWvPzpXG>5~_)^Wh{v~Th|seyBMe@5=>{NYO@M< zR!hvg&WH9p&$4uQAYOGC8!W1L_fEZAb!D=c?rd2z&}qV!gU6TLse@`34Px!J)0(BY zc^dL^ArP(On@B8LBNxs@8@ce-&V|p^Cl|bV;roJIXp#J{;`HmlmI3b5q$a^fP5xf6 zBEZ3c>Mvyj{Fk!e-U-f0z~q&iMamC?^$_qao_(E&{S&Z$4!pwoXchSQ8#r$QJ7b)3 zn@D*WtTEsNJo|bPI|tS>a3NOh;|76`N5FX$_#v;{AyR%3td{{2=h&Sh_8zc;z+k-E zN0-3I1UT;lG+ud|Ncn!SJ_S6+v$u=b&w}+F@FM5q9ReSJ0_Q5wHOMLNSfSiOq)s&b`1RymG(jBT66tb#KC1I1KmDzv60>j<@Z?wcYM_ z{$Olz7~Y)eCxt^v@{WCzzBP0s)#ygrpv@g?vU%)U*!0(k-?Jv0PyfGd?ibng_4#?D ze+X>Q=$;K49T6IR#>X4|#72$ot>=i;x}%{rWynh#y&p-`4e0fLz)fq2@2?R*B^>u} ot{C@SYcYCz?M&K`(LSNkeG+f { log = console.log; diff --git a/src/reporters/html.ts b/src/reporters/html.ts index 9e8122f7..61e4465c 100644 --- a/src/reporters/html.ts +++ b/src/reporters/html.ts @@ -13,8 +13,14 @@ export class HtmlReporter implements IReporter { public report(clones: IClone[], statistic: IStatistic): void { const reportFunction = compileFile(__dirname + '/../../html/report.pug'); + + const formatsReports: any[] = Object.keys(statistic.formats).map(format => { + return { value: statistic.formats[format].total.lines, name: format }; + }); + const html = reportFunction({ ...statistic, + formatsReports, clones, getPath, getSourceLocation,