CTAN Comprehensive TeX Archive Network

CTAN update: expltools

Datum: 1. Oktober 2025 06:27:50 MESZ
Vít Starý Novotný submitted an update to the expltools bundle. Version: 2025-09-29 License: lppl1.3c gpl2+ Summary description: Development tools for expl3 programmers Announcement text:
## expltools 2025-09-29 ### explcheck v0.13.0 #### Fixes This version of explcheck has fixed the following bugs: - Do not deduplicate issues with the same identifier and range but different context. (#132) - Do not report issues E420 (Locally setting a global variable) and E421 (Globally setting a local variable) in top-level code. (21e2023a, 61a40cb7, cfa7847b) - Support message definitions using the deprecated function `\msg_gset:nn...`. (3101d9ff) #### Warnings and errors This version of explcheck has made the following changes to the document titled [_Warnings and errors for the expl3 analysis tool_][warnings-and-errors]: - Plan issue S105 (Needlessly ignored issue). (#130, #132) [warnings-and-errors]: https://github.com/witiko/expltools/releases/download/latest/warnings-and-errors.pdf #### Development This version of explcheck has implemented the following new features: - Support inter-file dependencies. (#129, #131) After this change, you may manually _group files_ from the command-line interface as follows: explcheck first.tex + second.tex , third.tex , fourth.tex The above command would cause the files `first.tex` and `second.tex` to be processed together and allow explcheck to assume that these files will always be used together. As a result, using e.g. a function in the file `first.tex` that is only defined in the file `second.tex` would no longer raise the error E408 (Calling an undefined function). To control how files are grouped by default, you may use the new command-line option `--group-files`. To process a group of files in Lua, you may use the function `process_files()` from the file `explcheck-utils.lua`: ``` lua local utils = require("explcheck-utils") local first_group_results = utils.process_files({"first.tex", "second.tex"}) local second_group_results = utils.process_files({"third.tex"}) local third_group_results = utils.process_files({"fourth.tex"}) ``` - Add a new command-line option `--files-from`. (#131) Use this option to read the list of expl3 files to check from a text file. - Report a warning for needlessly ignored issues. (#130, #132) Needlessly ignored issues produce warning S105 (Needlessly ignored issue). - Update the representation of segments according to [the work-in-progress TUG 2025 paper][expltools-tug25-paper]. (#128, #133) Previously, calls and statements were tied to expl3 parts, similarly to groupings and tokens, and the notion of "nested calls" and "nested statements" was tackled ad-hoc. Following this change, syntactic and semantic analyses no longer operate on expl3 parts but on segments that represent blocks of either top-level or nested code in some expl3 part from some file in the current group of files. This more general notion of a block of code that may carry calls and statements makes it possible to dynamically support new kinds of segments without changing the logic of the code. Furthermore, segments can be easily referenced regardless of their files and expl3 parts of origin, and subdivided into "chunks of well-understood code", which will be the base data type for the flow analysis. Therefore, this change lays the groundwork for the implementation of the flow analysis, where we'll be working with a directed graph with chunks as the nodes. - Recognize `T`- and `F`-type arguments as code segments. (#92, #136) This allows issues to be reported in true- and false-branches of conditional functions, even if these functions are unknown or nested. - Report code coverage in the verbose human-readable output. (#134, #135) The code coverage provides an estimate of how well-understood a piece of code is. Circa 14% of all expl3 code and 2% of all TeX code in current TeX Live is considered well-understood. The cut-off for performing the flow analysis is likely going to be circa 95% well-understood expl3 tokens, so most code will initially only be analyzed using semantic analysis, not flow analysis. #### Continuous integration This version of explcheck has made the following changes to our continuous integration: - Compare code coverage on TeX Live 2024 with a baseline. (#134, #135) This acts as an extra precaution against regressions. In general, changes should only increase the code coverage compared to the baseline.
The package’s Catalogue entry can be viewed at https://ctan.org/pkg/expltools The package’s files themselves can be inspected at https://mirrors.ctan.org/support/expltools/
Thanks for the upload. For the CTAN Team Petra Rübe-Pugliese
CTAN is run entirely by volunteers and supported by TeX user groups. Please join a user group or donate to one, see https://ctan.org/lugs

expltools – Development tools for expl3 programmers

This bundle introduces explcheck, a static analysis tool for developers working with expl3 code. Currently in its initial release, explcheck aims to help developers identify potential issues and improve code quality. In the future, this bundle may expand to include additional development tools for expl3.

Paketexpltools
Version 2025-09-29
Copyright2024–2025 Vít Starý Novotný
BetreuerVít Starý Novotný

Ankündigungen

mehr

Gästebuch Seiten-Struktur Impressum Autor kontaktieren