Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mdeweerd/logtocheckstyle
Github Annotations from a regular textual log, or convert to CheckStyle xml output
https://github.com/mdeweerd/logtocheckstyle
annotation-processing annotation-tool annotations checkstyle checkstyle-reports github-actions github-annotations logging logs phpunit pre-commit reporting
Last synced: 6 days ago
JSON representation
Github Annotations from a regular textual log, or convert to CheckStyle xml output
- Host: GitHub
- URL: https://github.com/mdeweerd/logtocheckstyle
- Owner: mdeweerd
- License: mit
- Created: 2023-12-19T01:56:33.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-09-05T14:23:30.000Z (2 months ago)
- Last Synced: 2024-10-10T11:43:41.872Z (26 days ago)
- Topics: annotation-processing, annotation-tool, annotations, checkstyle, checkstyle-reports, github-actions, github-annotations, logging, logs, phpunit, pre-commit, reporting
- Language: Python
- Homepage:
- Size: 62.5 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Log2CheckStyle
Convert a log to another format for easy integration with GitHub Actions,
continuous integration pipelines and other purposes.## Features
- Converts messages to Checkstyle XML format.
- Supports specifying input and output files.
- Allows specifying a root directory to remove from file paths.
- Provides options for GitHub Action integration (annotations).
- Handful as a standalone command-line tool (`logToCs.py`).## Usage
### Command Line Interface
```bash
logToCs.py [OPTIONS] [INPUT [OUTPUT]]
```#### OPTIONS
```text
Convert messages to Checkstyle XML format.positional arguments:
input Input file. Use '-' or omit for stdin.
output Output file. Use '-' or omit for stdout.optional arguments:
-h, --help show this help message and exit
-i INPUT_NAMED, --in INPUT_NAMED
Input filename. Overrides positional input.
-o OUTPUT_NAMED, --out OUTPUT_NAMED
Output filename. Overrides positional output.
--root ROOT_PATH Root directory to remove from file paths. Defaults to
working directory.
--github-annotate, --no-github-annotate
Annotate when in Github workflow. (default: False)
--gitlab, --no-gitlab
Generate gitlab report (artefact) when in Gitlab workflow. (default: False)
--name-only, --no-name-only
Report filenames only. (default: False)
```### GitHub Action
#### Using No Extra Resources:
```yaml
- name: Convert Raw Log to Checkstyle format (launch action)
uses: mdeweerd/[email protected]
if: ${{ failure() }}
with:
in: ${{ env.RAW_LOG }}
# Out can be omitted if you do not need the xml output
out: ${{ env.CS_XML }}
```The above extracts the notifications from the `RAW_LOG`, writes a file in
CheckStyle format and applies source code annotations for a Github Pull
Request.For a full example, see
[the precommit github workflow for this project](.github/workflows/pre-commit.yml).#### Using local resources
Convert the output from an action to CheckStyle xml and convert that to
GitHub Annotations using a different action.These examples assume that logToCs.py is available as .github/logToCs.py.
##### Example 1:
Use other action to generate the GitHub annotations.
```yaml
- run: |
pre-commit run -all-files | tee pre-commit.log
.github/logToCs.py pre-commit.log pre-commit.xml
- uses: staabm/annotate-pull-request-from-checkstyle-action@v1
with:
files: pre-commit.xml
notices-as-warnings: true # optional
```##### Example 2 (old):
Use cs2pr commands to generate the GitHub annotations.
```yaml
- run: |
pre-commit run --all-files | tee pre-commit.log
- name: Add results to PR
if: ${{ always() }}
run: |
.github/logToCs.py pre-commit.log | cs2pr
```## Tips
### PHP Codesniffer (AKA php-cs, phpcs)
Use `--report=emacs` (when running with `pre-commit`).
### Edit files that have notices from the CLI.
When running a command on the CLI, it may be helpful to edit only files
with errors.For instance, codespell reports:
```bash
codespell
./ChangeLog:8244: abadword ==> agoodword
```And you want to edit the ChangeLog to make the correction.
With the bash function below it is possible to edit the reported files
using `viErrors codespell`.`logToCs.py` must be in your path.
## Add to .bashrc:
```bash
viErrors() { "$EDITOR" $("$@" |& logToCs.py --name-only) ; }
_viErrors_completion() { COMPREPLY=($(compgen -c -- "${COMP_WORDS[COMP_CWORD]}")); return 0; }
complete -o default -F _viErrors_completion viErrors
```## or, add in completions directory
Execute the following once and everything code will be loaded when you type
`viErrors....````bash
_cdir=${BASH_COMPLETION_USER_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion}/completions
mkdir -p "${_cdir}"
cat > "${_cdir}/viErrors.bash" << 'EOF'
viErrors() { "$EDITOR" $("$@" |& logToCs.py --name-only) ; }
_viErrors_completion() { COMPREPLY=($(compgen -c -- "${COMP_WORDS[COMP_CWORD]}")); return 0; }
complete -o default -F _viErrors_completion viErrors
EOF
```## Extending
In the script, patterns can be added to "PATTERNS" to match more messages.
To allow multiline patterns, the python module 'regex' is required.
## Author(s):
- [mdeweerd]
## License
MIT License
[mdeweerd]: https://github.com/mdeweerd