From a1c2f524cf2aac74a004566e36b0a63bc0b2ba9d Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Wed, 15 Jun 2022 12:19:29 -0700 Subject: [PATCH] Migrate documentation to GitHub (#69) --- CHANGELOG.md | 203 +++++++++++++++++++++++ README.md | 316 +++++++++++++++++++++++++++++++++++- docs/images/cloc_config.png | Bin 0 -> 32216 bytes docs/images/cloc_trend.png | Bin 0 -> 17471 bytes 4 files changed, 515 insertions(+), 4 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 docs/images/cloc_config.png create mode 100644 docs/images/cloc_trend.png diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a93fe60 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,203 @@ +# Change Log + +### Version 1.24 (Dec 22, 2017) + +- Fixed: Concurrent builds are serialized when publishing + ([JENKINS-43658](https://issues.jenkins-ci.org/browse/JENKINS-43658)) + +### Version 1.23 (Nov 26, 2017) + +- Fixed: Lines and comments value are inversed in folders tab + ([JENKINS-37056](https://issues.jenkins-ci.org/browse/JENKINS-37056)) + +### Version 1.22 (Nov 12, 2017) + +- Implemented: Support the new workflow/pipeline model + ([JENKINS-35234](https://issues.jenkins-ci.org/browse/JENKINS-35234)) + +### Version 1.21 (Nov 3, 2015) + +- Implemented: Get total comment count in SloccountReportStatistics + ([JENKINS-31221](https://issues.jenkins-ci.org/browse/JENKINS-31221)). + - Only in cloc based reports, pull request by Jim SERRA. + +### Version 1.20 (Sep 6, 2014) + +- Implemented: Native support for cloc tool + ([JENKINS-24602](https://issues.jenkins-ci.org/browse/JENKINS-24602)). +- Implemented: Folding help in configuration + ([JENKINS-24094](https://issues.jenkins-ci.org/browse/JENKINS-24094)). +- Implemented: Clean jelly code + ([JENKINS-24093](https://issues.jenkins-ci.org/browse/JENKINS-24093)). +- Implemented: Show statistics from last build on main job page + ([JENKINS-24021](https://issues.jenkins-ci.org/browse/JENKINS-24021)). + +### Version 1.19 (Apr 15, 2014) + +- Fixed: Error 404 when trying to access language details for "C/C++ + Header" + ([JENKINS-22597](https://issues.jenkins-ci.org/browse/JENKINS-22597)). + +### Version 1.18 (Apr 5, 2014) + +- Implemented: Should have option to not care about build failure + status + ([JENKINS-22303](https://issues.jenkins-ci.org/browse/JENKINS-22303)). + +### Version 1.17 (Apr 2, 2014) + +- Unsuccessful. + +### Version 1.16 (Mar 14, 2014) + +- Fixed: Lazy loaded report details are never released + ([JENKINS-21921](https://issues.jenkins-ci.org/browse/JENKINS-21921)). +- Fixed: Fix findings from FindBugs static analysis + ([JENKINS-22160](https://issues.jenkins-ci.org/browse/JENKINS-22160)). +- Implemented: Remote access API (REST API) + ([JENKINS-21922](https://issues.jenkins-ci.org/browse/JENKINS-21922)). + +### Version 1.15 (Feb 8, 2014) + +- Fixed: Possibly too wide table on summary page + ([JENKINS-21557](https://issues.jenkins-ci.org/browse/JENKINS-21557)). +- Fixed: Sorting using Distribution column/graph doesn't work + ([JENKINS-21700](https://issues.jenkins-ci.org/browse/JENKINS-21700)). +- Implemented: Configurable Graph + ([JENKINS-21552](https://issues.jenkins-ci.org/browse/JENKINS-21552)). +- Implemented: New Modules panel on report page + ([JENKINS-21697](https://issues.jenkins-ci.org/browse/JENKINS-21697)). + +### Version 1.14 (Jan 26, 2014) + +- Implemented: sloccount report formatting on build summary + ([JENKINS-13235](https://issues.jenkins-ci.org/browse/JENKINS-13235)). +- Implemented: Create a dash-board view portlet that shows the SLOC of + the selected projectes + ([JENKINS-6876](https://issues.jenkins-ci.org/browse/JENKINS-6876)). +- Implemented: add a sloccount portlet to dashboard + ([JENKINS-12166](https://issues.jenkins-ci.org/browse/JENKINS-12166)). +- Rejected: Support multimodule sloccount report + ([JENKINS-13382](https://issues.jenkins-ci.org/browse/JENKINS-13382)). + +### Version 1.13 (Jan 24, 2014) + +- Fixed: Unable to copy the sloccount summary when the job has been + executed on a slave with a different OS + ([JENKINS-21467](https://issues.jenkins-ci.org/browse/JENKINS-21467)). +- Fixed: Link to workspace root directory is not accessible in results + ([JENKINS-21500](https://issues.jenkins-ci.org/browse/JENKINS-21500)). +- Implemented: Can this plugin support CLOC for even more languages + and better Windows support + ([JENKINS-10274](https://issues.jenkins-ci.org/browse/JENKINS-10274)). + - Existing information in the task tested, a howto about + [cloc](http://cloc.sourceforge.net/) support written and added + to wiki. + +### Version 1.12 (Jan 18, 2014) + +- Fixed: Can't open sloccount table portlet + ([JENKINS-21419](https://issues.jenkins-ci.org/browse/JENKINS-21419)). + - Release for MS Windows, all long-term issues with Windows + backslashes '\\' in paths should be fixed now. +- Outdated information about plugin version \<= 1.6 removed from wiki + to clean it up. + +### Version 1.11 (Jan 15, 2014) + +- Fixed: Memory consumption is huge + ([JENKINS-4769](https://issues.jenkins-ci.org/browse/JENKINS-4769)). + - Changes in data storage that heavily reduces memory consumption + and increases performance during a common Jenkins use. + - Stored data now contains statistics per language (just several + numbers), full report is lazy-loaded only while it is needed in + the results page. Compare with parsing of giant XML that + contains information about each source file present in your + sandbox multiplied by number of builds just to show a simple + trend graph. + - Data format is very different but the code should satisfy a + backward compatibility, migration tested with plugin versions + 1.8 and 1.10. + - The plugin update will have full impact after builds from a + previous version will completely role out and only new data are + present. +- Fixed: NoClassDefFoundError exception on job configuration page + ([JENKINS-19629](https://issues.jenkins-ci.org/browse/JENKINS-19629)). +- Fixed: Support for matrix projects + ([JENKINS-12816](https://issues.jenkins-ci.org/browse/JENKINS-12816)) + and IVY projects + ([JENKINS-17024](https://issues.jenkins-ci.org/browse/JENKINS-17024)). + - All project types should be supported now. + - Unnecessary dependencies to Maven and FindBugs removed. +- Fixed: Summary is missing for the first build + ([JENKINS-20646](https://issues.jenkins-ci.org/browse/JENKINS-20646)). +- Fixed: Broken link in menu on the job page before the first build + ([JENKINS-21174](https://issues.jenkins-ci.org/browse/JENKINS-21174)). +- Fixed: Broken differences in build summary for failed builds + ([JENKINS-21223](https://issues.jenkins-ci.org/browse/JENKINS-21223)). +- Fixed: Possible resource leak in parser + ([JENKINS-21229](https://issues.jenkins-ci.org/browse/JENKINS-21229)). +- Fixed: Broken HTML code on results page + ([JENKINS-21230](https://issues.jenkins-ci.org/browse/JENKINS-21230)). +- Fixed: Graphical artifacts in the trend graphs + ([JENKINS-21258](https://issues.jenkins-ci.org/browse/JENKINS-21258)). +- Implemented: SLOCCount churn graph + ([JENKINS-14504](https://issues.jenkins-ci.org/browse/JENKINS-14504)). + - New trend graph with differences in lines count between current + and previous build. +- Wiki updates - information, screenshots. + +### Version 1.10 (Apr 16, 2013) + +- fixed java.io.InvalidClassException + ([JENKINS-14255](https://issues.jenkins-ci.org/browse/JENKINS-14255)). +- Made the plugin applicable for Job Generator jobs. + +### Version 1.8 (Jun 16, 2012) + +- sloccount trend report only works up to last failed build + ([JENKINS-9309](https://issues.jenkins-ci.org/browse/JENKINS-9309)). +- SLOCCount plugin fails with Windows/Cygwin SLOCCount execution + ([JENKINS-4836](https://issues.jenkins-ci.org/browse/JENKINS-4836)). + +### Version 1.7 (May 19, 2012) + +- String index out of range + ([JENKINS-13775](https://issues.jenkins-ci.org/browse/JENKINS-13775)). +- added Japanese localization. +- use commas in numbers for readability + ([JENKINS-13235](https://issues.jenkins-ci.org/browse/JENKINS-13235)). +- sort lines and files numerically. +- fixed breadcrumb move down. + +### Version 1.6 (Oct 19, 2011) + +- Allow Maven support + +### Version 1.5 (Feb 14, 2011) + +- Update link in help +- Translation updates (French, Dutch) + +### Version 1.4 (Feb 10, 2010) + +- Update code for more recent Hudson + +### Version 1.3 (Jul 7, 2009) + +- Made to work with distributed builds + ([patch](http://www.nabble.com/sloccount-plugin-and-distributed-builds--%3E-exception-td22791316.html)) + +### Version 1.2 (Feb 28, 2009) + +- Clicking on the SLOCCount icon in the left sidebar will now take you + directly to the last build's detailed sloccount report instead of + that build's general main page + +### Version 1.1 (Feb 24, 2009) + +- Added breadcrumbs to help in the navigation of the result report + +### Version 1.0 (Feb 20, 2009) + +- Initial release diff --git a/README.md b/README.md index 3766a88..b745344 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,314 @@ -SLOCCount Plugin -================ +# SLOCCount Plugin -This [Jenkins CI](http://jenkins-ci.org/) plug-in generates the trend report for [SLOCCount](http://www.dwheeler.com/sloccount/), an open source program which counts the number of lines of codes in over 25 different languages, including C/C++, Ada, COBOL, Fortran, SQL, Ruby, Python, etc... +This plug-in generates trend report for [SLOCCount](http://www.dwheeler.com/sloccount/) and [cloc](http://cloc.sourceforge.net/) open source tools, that count number of code lines written in many programming languages. -For more information, visit the wiki page . +## Description + +The SLOCCount plug-in scans for [SLOCCount](http://www.dwheeler.com/sloccount/) or [cloc](http://cloc.sourceforge.net/) report files in the build workspace directory and reports the number of lines they found. + +The following features are provided by this plug-in: + +- Parsing of reports generated by [SLOCCount](http://www.dwheeler.com/sloccount/) tool. +- Parsing of reports generated by [cloc](http://cloc.sourceforge.net/) tool. +- Configuration of the files to scan after a build. +- Trend reports showing the number of lines per language. +- Trend reports showing the number of added or deleted lines per language. +- Overview of the lines per file, folder or language. +- [Dashboard View](https://wiki.jenkins.io/display/JENKINS/Dashboard+View) portlet showing number of lines, files and languages per job. +- Remote access API ([REST API](https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API)). +- Works with any project/job type. + +This plug-in is developed and maintained by Nicolas Piguet. Please use +the [Mailing Lists](https://wiki.jenkins.io/display/JENKINS/Mailing+Lists) +or [issue tracker](http://issues.jenkins-ci.org/) to ask questions, +create feature request or bug reports, since I don't read the comment +section on this page regularly. + +## Usage + +If you are not sure which type of report files to use, prefer **cloc**. +It is able to detect more programming languages than SLOCCount (Scala, +Ant, CSS, ...) and is able to count also lines with comments that often +contain Javadoc or Doxygen documentation. Cloc is also better portable, +SLOCCount requires [cygwin](https://www.cygwin.com/) or similar +environment under MS Windows. + +**Never switch between SLOCCount and cloc inside one job.** You would +end up with messy trend graph because they name programming languages +differently. Delete all affected builds and rebuild the job in such case +to fix the issue. + +### Linux + +- Install [SLOCCount](http://www.dwheeler.com/sloccount/) or [cloc](http://cloc.sourceforge.net/) on the build slave machine. Note they may be present in package repository of your distribution. + - Debian, Ubuntu, ... + - `apt-get install sloccount` + - `apt-get install cloc` + - Red Hat, CentOS, Fedora, ... + - `yum install sloccount` + - `yum install cloc` +- For each job configuration page: + - Add a **execute shell** build step to generate the report files, or create them in your build scripts (Ant, Maven, Make, ...). + - `sloccount --duplicates --wide --details [source-folder] > [output-folder]/sloccount.sc` + - `cloc --by-file --xml --out=[output-folder]/cloc.xml [source-folder]` + - Activate the checkbox **Publish SLOCCount analysis results** and provide the path to the generated report files. + +### Windows + +#### cloc + +- Download and install [cloc](http://cloc.sourceforge.net/) ([cloc.exe](http://sourceforge.net/projects/cloc/files/cloc/)) on the build slave machine. Optionally if you have Perl installed, you can run cloc as a standalone Perl Script. +- For each job configuration page: + - Generate the report files + - `cloc.exe --by-file --xml --out=[output-folder]/cloc.xml [source-folder]` + - `perl cloc.pl --by-file --xml --out=[output-folder]/cloc.xml [source-folder]` + - Activate the checkbox **Publish SLOCCount analysis results** and provide the path to the generated cloc report. + +#### SLOCCount + +Since SLOCCount does not run on a native Windows machine the setup for +Windows requires additional steps. Most of the setup is explained in +detail in the [SLOCCount +documentation](http://www.dwheeler.com/sloccount/sloccount.html). + +- Install [Cygwin](https://www.cygwin.com/) on the build slave. +- Compile and install SLOCCount within the Cygwin environment. +- For each job configuration page: + - Add a build step to run Cygwin and SLOCCount. See the ANT example below to learn how to start Cygwin and run SLOCCount from an ANT script. + - `/usr/bin/sloccount --duplicates --wide --details [source-folder] >[output-folder]/sloccount.sc` You must convert Windows paths that are passed as parameters to SLOCCount utility to Linux/Cygwin style (C:\\ becomes /cygdrive/c/). + - Convert the SLOCCount results in sloccount.sc back to windows paths. + - Activate the checkbox **Publish SLOCCount analysis results** and provide the path to the generated SLOCCount report. + +If you uses sloccount for multiple jobs sometimes two jobs end at the +same time and sloccount is executed simultaneously. This will fail since +SLOCCount (by default) uses one temp data folder in $HOME/.slocdata. + +Either change sloccount to not use a temp data directory or change the +setup explanation so novice users (like me) are explained to use the +--datadir option in order to get a datadir per hudson job. + +This seems to work: +\[ -d slocdata \] \|\| mkdir slocdata +sloccount --datadir slocdata --details "your source path" \> +sloccount.sc + +##### ANT example for Windows build + +The target converts Windows paths to Linux style cygdrive paths (C:\\ +becomes /cygdrive/c/) before SLOCCount runs. The converted paths are +passed as environment variables to Cygwin. After SLOCCount has been +executed, the results in sloccount.sc are converted back to windows +paths. + +##### ANT target + +Add this target to your Jenkins build: + +**build.xml** + +```xml + + + + + + + + + + + + +``` + +You may have to adjust the paths used in the snippet, if your Jenkins +workspace is on another drive than C. + +##### Shell script + +This shell script is called by Cygwin / ANT. + +**cygwin\_sloccount.sh** + +``` +sloccount --duplicates --wide --details "$SLOCCOUNT_SOURCE_DIR" > "$SLOCCOUNT_OUTPUT_DIR/sloccount.sc" +``` + +## Remote access API ([REST API](https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API)) + +Use the URLs below to access the SLOCCount specific data. + +Description of possibilities + +- [http://SERVER/job/JOB\_NAME/BUILD\_NUMBER/sloccountResult/api](http://server/job/JOB_NAME/BUILD_NUMBER/sloccountResult/api) + +Data + +- [http://SERVER/job/JOB\_NAME/BUILD\_NUMBER/sloccountResult/api/xml](http://server/job/JOB_NAME/BUILD_NUMBER/sloccountResult/api/xml) +- [http://SERVER/job/JOB\_NAME/BUILD\_NUMBER/sloccountResult/api/xml?depth=1](http://server/job/JOB_NAME/BUILD_NUMBER/sloccountResult/api/xml?depth=1) +- [http://SERVER/job/JOB\_NAME/BUILD\_NUMBER/sloccountResult/api/json](http://server/job/JOB_NAME/BUILD_NUMBER/sloccountResult/api/json) +- [http://SERVER/job/JOB\_NAME/BUILD\_NUMBER/sloccountResult/api/json?depth=1](http://server/job/JOB_NAME/BUILD_NUMBER/sloccountResult/api/json?depth=1) +- etc. + +Example of XML data: + +```xml + + + 7 + 513 + xml + + + 116 + 8174 + java + + 123 + 2 + 8687 + +``` + +Example of JSON data: + +```json +{ + "languages": + [ + {"files":7,"lines":513,"name":"xml"}, + {"files":116,"lines":8174,"name":"java"}, + ], + "totalFiles":123, + "totalLanguages":2, + "totalLines":8687 +} +``` + +## Support for cloc tool + +Parsing of cloc XML reports is supported natively in the plugin from +version 1.20. + +[Cloc](http://cloc.sourceforge.net/) (Count Lines of Code) is a tool +similar to SLOCCount. It provides output to a XML file that can be +simply transformed to the SLOCCount format and used in this plugin. Cloc +is written in Perl and should be better portable than SLOCCount. + +This howto was created and tested on Debian GNU/Linux, Jenkins 1.447, +SLOCCount plugin 1.12, cloc 1.60 and xsltproc 1.1.28. + +#### Install cloc and xsltproc + +Download cloc from and install it. You +need also a whatever tool for XML transformations (xsltproc used) or you +can try [clokins](https://gitorious.org/clokins) tool (not tested at +all). You can install the packages present in your GNU/Linux +distribution. + +``` +# Debian/Ubuntu specific +apt-get install cloc xsltproc +``` + +#### Script for XSLT transformation + +Copy-paste the script below and store it to cloc2sloccount.xsl file +accessible by your Jenkins server. If you are using master and slave +machines, store the script to all slaves where the jobs are executed. + +**cloc2sloccount.xsl** + +```xml + + + + + + + + + + + + + + + + + + + + + +For more details see: + + + +This report has been generated by cloc . + + + + + + + + + + + + + + + + + + +``` + +### Execute cloc + +Change configuration of your job to execute the following shell script. +Update the path to the directory where your source files are stored and +optionally pass [additional +parameters](http://cloc.sourceforge.net/#Options) to cloc. Then execute +XSLT transformation on cloc output to get a SLOCCount compatible report. + +``` +cloc --by-file --xml -out=cloc.xml DIRECTORY +xsltproc PATH/TO/cloc2sloccount.xsl cloc.xml > sloccount.sc +``` + +Enable SLOCCount publisher, enter path to the generated SLOCCount report +and that's all. + +![](docs/images/cloc_config.png) +![](docs/images/cloc_trend.png) + +#### Using the plugin within a Jenkins pipeline + +Configure your pipeline in a similar way to this example: + +**Jenkinsfile** + +```groovy +node('master') { + stage ("Analyse") { + sh 'sloccount --duplicates --wide --details path-to-code/ > sloccount.sc' + } + stage ("Publish reports") { + sloccountPublish encoding: '', pattern: '' + } +} +``` diff --git a/docs/images/cloc_config.png b/docs/images/cloc_config.png new file mode 100644 index 0000000000000000000000000000000000000000..65a848ca67f0131c764c01ccd1904d818cab3c76 GIT binary patch literal 32216 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 literal 0 HcmV?d00001