Compilation of different programming
projects I amuse myself with.
Monday, 20 February 2023
Running eclint locally in development environment
If you have come accross eclint in Azure Devops or in other scenarios, you might want to run this in local development instead to get your linting return an error, possible crashing the build pipeline in Azure Devops.
Eclints checks the .editorconfig file of your VS solution and reports if your code is badly formatted according to this file code style rules.
Here is a typical eclint setup written with YAML
# Runs ECLINT CHECK. This verfies that code conforms to editor config file.parameters:lintingResultArtifactName:'LINTING'# Name of published artifact with results.steps:-task:Bash@3displayName:'Template steps-linting'inputs:targetType:'inline'script:'echo Template steps linting'-task:Bash@3displayName:'Install ECLINT'inputs:targetType:'inline'script:|
sudo npm install -g eclint
failOnStderr:false-task:Bash@3displayName:'ECLINT check'inputs:targetType:'inline'script:|
eclint check $(git ls-files -- . ':!:*.sln' . ':!:*.sln.DotSettings') > $(Build.ArtifactStagingDirectory)/eclint.txt 2>&1
file=$(Build.ArtifactStagingDirectory)/eclint.txt
if [ -s "$file" ]
then
echo " ECLint reported errors - build failed 😔" 1>&2
cat $file
exit 1
else
echo " No errors found. You did good 👍 "
exit 0
fi
failOnStderr:false-task:PublishBuildArtifacts@1displayName:'Publish artifact'condition:succeededOrFailed()inputs:PathtoPublish:'$(Build.ArtifactStagingDirectory)'ArtifactName:${{parameters.lintingResultArtifactName}}publishLocation:'Container'
The following shell script can be run with Git Bash in for example Windows environments to run eclint locally.
#!/bin/bash
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m'# No Colorexists() {
command -v "$1" > /dev/null 2>&1
}
runEcLint(){
echo -e "Starting up eclint linting the files of the solution! ${GREEN}[SUCCESS]${NC} Current folder:"pwd
eclint check $(git ls-files -- . ':!:*.sln' . ':!:*.sln.DotSettings') > eclint.txt 2>&1
file=eclint.txt
if [ -s "$file" ]
thenecho" ECLint reported errors - build failed 😔" 1>&2
cat$fileecho -e "ECLint command reported a ${RED}[FAIL]${NC}. Correct the errors."rm eclint.txt
exit 1
elseecho" No errors found. You did good 👍 "echo -e "ECLint command reported a ${GREEN}][SUCCESS]${NC}"rm eclint.txt
exit 0
fi
}
echo"Running eclint locally to check the solution. Checking LOCALDEV environment.."echo"Checking that npm is installed globally.. "if ! [[ "exists npm" ]]; thenecho -e "Npm is not installed globally. ${RED} [FAIL]${NC}"echo"Install npm globally first before running this script! See: https://nodejs.org/en/download/"echo"Recommended next step: Install LTS of jnodejs together with npm"exit 1
elseecho -e "You have already installed npm (globally). ${GREEN} [SUCCESS]${NC}"fiecho"Checking that eclint is installed globally.. "if ! [[ "exists eclint" ]]; thenecho -e "eclint is not installed globally. ${RED} [FAIL]${NC}"echo"Make sure you run this script with sufficient access : Attempting to install eclint globally next."echo"Trying to run this command to install eclint: npm install eclint -g"
npm install -g eclint
echo -e "\neclint should now be installed. Continuing! ${GREEN} [SUCCESS]${NC}"elseecho -e "You have already installed eclint (globally). ${GREEN} [SUCCESS]${NC}"fiecho"Switching up a folder to run at root folder of the source.."pushd ..
echo -e "Switched to parent folder ${GREEN}[SUCCESS]${NC}"
runEcLint
popd#back to the eclint folder
In case you are running WSL, chances are that you must check if a command is available like this:
if ! [ -x "$(command -v npm)" ]; then
Also, you might need to add 'sudo' before the npm install -g command.
The following launch.json file shows how you can debug inside VsCode Bash scripts, using extension Bash Debug for VsCode.
{
// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0",
"configurations": [
{
"type": "bashdb",
"request": "launch",
"name": "Bash-Debug",
"cwd": "${workspaceFolder}",
"program": "${file}",
"args": []
}
]
}
I tested the script against a solution at work and it spotted the intended eclint warnings for multiple files, as a proof of concept.
This makes it easier to fix up eclint errors before pushing them to Azure Devops !
No comments:
Post a Comment