https://github.com/bartekbp/typescript-checkstyle
Command line tool to convert tsc output to checkstyle format
https://github.com/bartekbp/typescript-checkstyle
checkstyle javascript jenkins tsc typescript
Last synced: about 1 year ago
JSON representation
Command line tool to convert tsc output to checkstyle format
- Host: GitHub
- URL: https://github.com/bartekbp/typescript-checkstyle
- Owner: bartekbp
- License: mit
- Created: 2021-01-23T13:06:46.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-07-16T20:16:05.000Z (almost 5 years ago)
- Last Synced: 2025-03-24T19:22:24.766Z (about 1 year ago)
- Topics: checkstyle, javascript, jenkins, tsc, typescript
- Language: TypeScript
- Homepage:
- Size: 221 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Typescript-checkstyle
Typescript-checkstyle is a tool for reporting `typescript compiler` output in `checkstyle` format. It was created to improve pull request decoration with compiler errors.
## Prerequisites
Project requires:
- nodejs 10
- npm
## Installation
All arifacts are published to npm. To use the latest version, you can install it using:
```
npm i --save-dev @bartekbp/typescript-checkstyle
```
## Usage
Typescript-checkstyle can be used from command line and javascript.
### Command line
Library reads `tsc` output from standard input. You may want to run both of them together. The following command typechecks your project and shows compilation errors in `checkstyle` format:
```
> npx tsc --noEmit | npx @bartekbp/typescript-checkstyle
```
If you already have `npm scripts` configured and want to use output from one of them to typescript-checkstyle, you need to invoke `npm` with **--silent** to suppress npm prologue:
```
> npm --silent run lint:tsc | npx @bartekbp/typescript-checkstyle
```
### Pull request decoration with typescript errors
If you want to automate adding comments to your pull request based on complier output, typescript-checkstyle will help you achieve it. To configure it, I will use `jenkins`, but the solution applies to other continuous integration systems as well.
#### Jenkins pipleline
You need to setup a `jenkins pipeline` that will be triggered with [bitbucket branch source plugin](https://plugins.jenkins.io/cloudbees-bitbucket-branch-source/) or [github branch source plugin](https://github.com/jenkinsci/github-branch-source-plugin). In the pipeline you need to run typescript-checkstyle with `tsc` and redirect output to a file:
```
stage('tsc') {
steps {
sh 'npx tsc --noEmit | npx @bartekbp/typescript-checkstyle > tsc-checkstyle.xml'
}
}
```
Depending on your code review system, **tomasbjerre** created different plugins for pull request decoration. You can find the full list of them at the bottom of [violations-lib readme](https://github.com/tomasbjerre/violations-lib). I'll focus on the configuration for `bitbucket cloud`.
You need to update pipeline with additional stage for pr decoration:
stage('Decorate pr') {
steps {
withCredentials([usernamePassword(credentialsId: 'jenkins-pr-writes', passwordVariable: 'JENKINS_VIOLATION_PASSWORD', usernameVariable: 'JENKINS_VIOLATION_USER')]) {
sh 'npx violation-comments-to-bitbucket-cloud-command-line -u "$JENKINS_VIOLATION_USER" -p "$JENKINS_VIOLATION_PASSWORD" -ws workspace -rs repoName -prid "$CHANGE_ID" -v "CHECKSTYLE" "." ".*tsc-checkstyle.xml$" "tsc" || true'
}
}
}
The bold parts in the stage needs to updated to reflect your project:
- **jenkins-pr-writes** with credentials to bitbucket user
- **workspace** with bitbucket workspace
- **repoName** with repository that has an opened pull request
### Javascript
Typescript-checkstyle exposes one function `format`:
```
/**
* Converts tsc errors to checkstyle format
*
* @param {string} input - errors from tsc
* @return {string} errors in checkstyle format
function format(input) {}
*/
```
You can use it as follows:
```
import format from '@bartekbp/typescript-checkstyle';
const input = `src/test.component.ts(3, 12): error TS2564: Property 'name' has no initializer`;
const errorsInCheckstyleFormat = format(input);
console.log(errorsInCheckstyleFormat);
```
This code prints out errors from `input` in checkstyle format.
## License
Distributed under the MIT License. See LICENSE for more information.
## Acknowledgements
Great thanks to:
- [tomasbjerre](https://github.com/tomasbjerre) for his tools enabling pull request decoration
- [aivenkimmob](https://github.com/aivenkimmob) for tsc output parser
- [jimf](https://github.com/jimf) for tool to convert json to xml checkstyle format