{"id":7232,"library":"flake8-fixme","title":"Flake8 FIXME/TODO Checker","description":"flake8-fixme is a plugin for the Flake8 Python code checker that identifies temporary developer notes like FIXME, TODO, and XXX within source code. It helps enforce code quality by flagging these comments, ensuring they are addressed. The current version is 1.1.1, released in May 2019. As a Flake8 plugin, its release cadence is tied to its own maintenance and compatibility with Flake8 updates.","status":"active","version":"1.1.1","language":"en","source_language":"en","source_url":"https://github.com/tommilligan/flake8-fixme","tags":["flake8","plugin","linter","code quality","fixme","todo","xxx","comments"],"install":[{"cmd":"pip install flake8-fixme","lang":"bash","label":"Install with pip"}],"dependencies":[{"reason":"flake8-fixme is a plugin for flake8 and requires it to run.","package":"flake8","optional":false},{"reason":"Officially supports Python >= 3.6.","package":"python","optional":false}],"imports":[],"quickstart":{"code":"# my_module.py\ndef some_function():\n    # FIXME: This needs to be refactored later.\n    print('Hello, world!') # TODO: Add proper logging\n\n# In your terminal:\n# pip install flake8 flake8-fixme\n# flake8 my_module.py","lang":"python","description":"Install flake8-fixme alongside flake8. Flake8 will automatically discover the plugin. Running flake8 on your code will then report any FIXME, TODO, or XXX comments."},"warnings":[{"fix":"Update your `.flake8` or `setup.cfg` configurations to reflect the new error codes (T100, T101, T102) if you were explicitly ignoring or selecting them. Be aware that a single line with multiple temporary notes will now generate multiple reports.","message":"When upgrading from `flake8-todo` to `flake8-fixme` (version 1.0.0 and above), error codes for different temporary notes have changed. T100 is now for FIXME, T101 for TODO, and T102 for XXX. Additionally, a single line containing multiple keywords (e.g., '# FIXME TODO') will now raise a separate error for each keyword, rather than a single combined error. Python 2.7 support was also dropped.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Ensure both `flake8` and `flake8-fixme` are installed within the same virtual environment. You can verify plugin discovery by running `flake8 --version` and checking the output for `flake8-fixme`.","message":"flake8-fixme, like all flake8 plugins, must be installed in the same Python environment as `flake8` itself for it to be discovered and used. If `flake8 --version` does not list `flake8-fixme` as an installed plugin, it means flake8 cannot find it.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Use a code formatter like Black, Yapf, or a custom script if you need to automatically remove or modify these comments. flake8-fixme's purpose is to *report* their presence, not to eliminate them programmatically.","message":"`flake8-fixme` is a linter, meaning it identifies and reports issues, but it does not automatically fix or modify your code. For automatic code formatting or removal of comments, you would need a separate tool.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-16T00:00:00.000Z","next_check":"2026-07-15T00:00:00.000Z","problems":[{"fix":"Ensure you have activated the correct virtual environment (if any) and run `pip install flake8 flake8-fixme`. Then, re-run `flake8 --version` to confirm `flake8-fixme` is listed.","cause":"The flake8-fixme plugin is not installed in the same Python environment as the flake8 executable being run, or it's not installed at all.","error":"flake8 --version output does not list 'flake8-fixme'"},{"fix":"Address the 'FIXME' comment in your code. If you intend to temporarily allow 'FIXME's, you can configure flake8 to ignore the T100 error code in your `.flake8` or `setup.cfg` file (e.g., `ignore = T100`).","cause":"This is not an error but the expected output from flake8-fixme indicating a 'FIXME' comment. This is the new error code introduced in version 1.0.0.","error":"./my_file.py:1:8: T100 Fixme found (FIXME)."},{"fix":"This is the intended behavior. If you want to consolidate these, you must manually rewrite the comment to contain only one keyword per line, or adjust your workflow to handle multiple reports for such lines. Alternatively, you can selectively ignore specific error codes if you only care about certain types of notes.","cause":"Starting from flake8-fixme 1.0.0, the plugin reports a separate error for each recognized temporary note (FIXME, TODO, XXX) found on a single line.","error":"A line like '# FIXME TODO' reports both 'T100' and 'T101' errors."}]}