List of Software Quality Enhancement Tools and Links
Introduction
Quite a few people, including me, have been lamenting the poor quality of a lot of modern software applications. In order to do something constructive to combat this, I decided to collect links to tools and other resources that can help to enhance the quality of software.
Linters
linters are programs that statically analyse static source code for defects. Autoformatters format code to conform to a certain indentation style.
"Awesome Linters" list on GitHub - a list for linters and autoformatters.
Code autoformatters
Prettier - formats JavaScript, TypeScript, JSON, CSS, SCSS, HTML, YAML, Markdown and other languages.
clang-format - for C, C++, Objective C, JavaScript, Java, and C#.
Perltidy - for Perl.
tidyall - an all-in-one autoformatter and validator - with many backends.
check-all-the-things - a tool to run many individual checking tools. By the Debian project and other contributors.
Profilers
Profilers are programs that report which parts of the code consume a lot of time, memory or other resources, to allow for a more effective optimisation.
Devel::NYTProf - an advanced profiler for Perl 5.
Memory Debuggers
valgrind - an open source (GPLv2) memory debugger for Linux, Solaris, Android and macOS.
AddressSanitizer / ASAN - an open source add-on for GCC and clang. Reportedly runs faster than valgrind, but detects fewer errors.
Dr. Memory - open source.
Fuzzers
List of Fuzzer tools - by the Black Arch Linux distribution.
Checkers for invalid text
Test::TrailingSpace - ascertain there are no text files with trailing whitespace, and optionally no hard tabs, and no DOS-style newlines. (By me).
Test::NoTabs - detect hard tabs (
'\t'
); mostly only for perl code.Test::EOL - test for DOS-style newlines, and trailing whitespace; mostly only for perl code.
File-Find-CaseCollide - find collisions in filenames, differing only in case (for avoiding problems on case-insensitive filesystems such as FAT).
Proof Assistants / Interactive Theorem Provers
Allows one to prove the correctness of code, thus reducing the list of defects.
Automated Refactoring
Links
“You Must Hate Version Control Systems” - a post on the “Perl Hacks” blog about best practices in the software industry.
See Also
The Freenode's ##programming chat-room FAQ - provides answers and links to many questions.
What makes software high-quality? - an essay.
Licence
This document is Copyright by Shlomi Fish, 2020, and is made available under the terms of the Creative Commons Attribution Noncommercial ShareAlike License (CC-by-nc-sa) 3.0 Unported (or at your option any later version).
For securing additional rights, please contact Shlomi Fish and see the explicit requirements that are being spelt from abiding by that licence.