Check a list of Arduino libraries for common problems
This script is used to find bugs in an automatically generated list of thousands of Arduino library repositories on Github.
One of the best things about Arduino is the huge number of libraries available for practically anything you could want to do. Unfortunately, most of these libraries were written either by novices or experienced programmers who don't use the Arduino IDE and so many of them have bugs. Often these are minor bugs that don't bother the experienced user but can cause a beginner to have a bad time. This script is part of a project intended to improve the overall quality of Arduino libraries by fixing some easily detectable bugs.
This code was written for my own use for a very specific purpose and so not much effort was put toward making it generally useful to others. Other components of the project more likely to be generally useful were separated into inoliblist and arduino-ci-script. I'm publishing this in the spirit of open source but without much expectation it will be useful to anyone else.
Several techniques are used to find bugs:
- Analyzing the metadata information contained in inoliblist.
check_library_structurefunction of arduino-ci-script.
check_library_propertiesfunction of arduino-ci-script.
check_keywords_txtfunction of arduino-ci-script.
check_library_manager_compliancefunction of arduino-ci-script.
- Detect common misspellings using codespell.
The list is generated by a Python script: inolibbuglist.py.
The data folder contains .csv lists of repositories and repository owners that are blacklisted. These exclude from processing repositories that are on inoliblist but are not libraries, abandoned, or owned by people whose past bad behavior shows it's not worth the effort of trying to contribute to their projects.
The script can be configured to skip processing of libraries in which the user configured via the
--github_login command line argument already has an open pull request, which might indicate an attempt has already been made to fix the bug.
The list is output as a tab separated .csv file that's an extended version of inoliblist. Scripts are also created to open each repository where a given bug was found in browser tabs to facilitate the pull request creation process.
Script command line options
--help: Display available command line options for the script.
--github_login: GitHub user name.
--ghtoken: GitHub Personal Access Token. The GitHub API does less strict rate limiting for authenticated requests. You can create a token by at this GitHub settings page: https://github.com/settings/tokens
--git_command: Command used to run Git on your system. This may be needed on Windows systems that don't have
git in their path and so need to specify the full path to it. Default value is
--bash_command: Command used to run bash on your system. This may be needed on Windows system that don't have
bash in their path and so need to specify the full path to it. Default value is
--browser_command: Command used to run your preferred web browser on your system. This is used to generate the browser tab scripts.
--arduino_ci_script_application_folder: Folder to install the Arduino IDE under (or use existing IDE installation). The Arduino IDE must be installed for arduino-ci-script's
check_keywords_txt function to verify reference links in keywords.txt.
--arduino_ci_script_arduino_ide_version: Arduino IDE version to use for the check_keywords_txt() reference link checks. If not found already installed at the location set via
--arduino_ci_script_application_folder, the Arduino IDE will be installed.
--verbose: Enable verbose output, for debugging.
Pull requests or issue reports are welcome! Please see the contribution rules for instructions.