This is a collection of work to do in Lintian that isn't a bug fix or a simple requested new check. Use the BTS for those since they're more public and so that other people know things have already been requested. This is intended for more internal use to track code restructurings, infrastructure work, needed cleanups, or larger tasks. Tasks here are sorted roughly by the directory structure of Lintian where that makes sense so that we don't just have one long list. Patches for any of this is welcome, but please discuss on the mailing list first before you do lots of work since the maintainers may have specific ways they want it to be done. If someone is actively working on something, note their name in square brackets at the beginning. If someone is noted, coordinate with them before working on this. checks: - Move all static keyword lists into files in data. - Separate doc-base checks out of checks/menus (or, probably easier, rename checks/menus to checks/doc-base and separate out the few bits that are actually about menus). - Go through all tags and make sure that any that should have Policy references have them, and more generally that appropriate references are present. (Need some way to track this sort of regular tag maintenance.) - Check current tag certainties and severities against the results from lintian.d.o and adjust. If something has legitimate overrides, it's not severity: certain, for instance. collection: - Collect desktop files so that checks/menu-format doesn't have to walk the file index and so that we can do interesting checks on desktop files from inside the Lintian lab. - Switch from objdump to readelf in objdump-info. readelf provides the data we want in a sometimes-nicer format and is more reliable with broken binaries and non-native architectures. We already use readelf and hack its output where we have to; replace all of that with always using readelf and modify lib/Lintian/Collect/Binary.pm to understand the readelf output syntax instead. This is #614034. doc: - Either update doc/CREDITS based on the changelog file or archive it somewhere and say that it's not going to be updated. - Update the Lintian manual: + document severity/certainty + document other output formats + document the reporting framework + developer documentation of the test suite, submitting patches, etc. frontend: - Nearly everything in frontend/lintian that isn't command-line parsing is really begging to be a module. Move code out of here and into modules as part of rewriting the non-namespace modules in lib, such as Lab.pm which should acquire more the laboratory handling from frontend/lintian, and Checker.pm, which should acquire most of the smarts of the main frontend/lintian checking loop. lib: - Finish documentation of Lintian::Collect::Binary and ::Source. - Finish documentation of Lintian::Output*. - Add collect function to return the sort of symlink information that's currently gathered by checks/menus; we'll find other uses for it. - Provide a utility function to check a command as currently done in checks/menu-format, after which we could split desktop checking and menu checking into two separate check scripts. - Move the remaining libraries in lib into real modules in the Lintian namespace. In some cases, this correctly involves significantly rewriting how that part of Lintian is handled to make it more object-oriented. Add specific to-do tasks for particular files if you've thought through how to do this. private: - Provide a general framework for updating metadata about the archive and modify all of the private/refresh-* scripts to use it. Also set up something in debian/rules that will run all of them and update data accordingly which can be done routinely before every release. reporting: - Turn the bulk of the reporting framework into a module and move report generation into frontend as a lintian-report program (or something like that) which we can install as a first-class executable. The html_reports script is relatively okay but could stand some cleanup and conversion to a module. The harness script needs serious de-yucking. t: - Move all remaining test cases from testset into t/tests as a separate legacy class of test cases. Requires fix to private/update-coverage to keep those tags separated out since we still want to do the next thing. - Write new-style test cases for everything tested by the old test suite and retire the old test suite. - Go through testset/libbaz/debian/rules and make sure all TODO's are lintian-detected. - t/runtests has a lot of duplicate code and could stand some restructuring and factoring of common code. - udebs are generally undertested right now and could use some general tests, particularly for things that we don't care about with udebs but do care about with regular packages. General: - Write a real parser for shell scripts that can at least tokenize them half-way decently, do some basic analysis of whether code is conditional or not, and provide reasonable answers to questions like "is this command called in the script" without heinous regex matches. Replace all the ugly, ad hoc script parsing code elsewhere in Lintian with that parser. This is #629247. External: - Set up system for automatically filing bugs based on specific lintian tags (the most reliable ones), with usertags to ensure the bugs aren't repeatedly filed.