Expressive Diagnostics library
npm install @dev-build-deploy/diagnose-itLightweight diagnostics logger, based on [LLVMs Expressive Diagnostics specification]:
* Simple to use
* Inspired by the [LLVMs Expressive Diagnostics specification]
* Provide context to your diagnostics messages
``tssteps:
import { DiagnosticsMessage, FixItHint } from '@dev-build-deploy/diagnose-it';
const lines =
- uses: actions/checkout@v2
- neds: [build, test]
- uses: actions/setup-node@v2;
// Example use case
const message = DiagnosticsMessage.createError(
"example.yaml",
{
text: "Invalid keyword 'neds'",
linenumber: 9,
column: 5
}
)
// Add context to the diagnostics message
.setContext(7, lines)
// Add a FixIt Hint
.addFixitHint(FixItHint.createReplacement({ index: 5, length: 4 }, "needs"));
// Convert to string
console.log(message.toString());
// Apply FixIt Hints
console.log("Results after applying FixIt Hints:", message.applyFixitHints());
// Throw as an Error
throw message;
`
You can parse a (compiler output) file to retrieve any Expressive Diagnostic message:
`ts
import * as diagnoseIt from '@dev-build-deploy/diagnose-it';
for await(const message of diagnoseIt.extractFromFile("build.log")) {
if (message.toJSON().type === "error") {
// Oh noes!
}
}
`
> NOTE: Any .sarif or .sarif.json file will be parsed for valid SARIF results content
DiagnoseIt is inspired by the LLVMs Expressive Diagnostics formatting;
However, it does not aim to provide full compatibility.
If you have suggestions for how DiagnoseIt` could be improved, or want to report a bug, open an issue! We'd love all and any contributions.
For more, check out the Contributing Guide.
- MIT © 2023 Kevin de Jong \
[LLVMs Expressive Diagnostics specification]: https://clang.llvm.org/diagnostics.html