Library reporting tsc output in checkstyle format
npm install @bartekbp/typescript-checkstyletypescript compiler output in checkstyle format. It was created to improve pull request decoration with compiler errors.
npm i --save-dev @bartekbp/typescript-checkstyle
`
Usage
Typescript-checkstyle can be used from command line and javascript.
$3
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
`
$3
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 or 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. 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
$3
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.