@tisto Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.linkintegrity/80/violations
```
plone/__init__.py:0:1: C101 Coding magic comment not found
plone/app/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/exceptions.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/exceptions.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/exceptions.py:8:5: D001 found implements( replace it with zope.interface.implementer
plone/app/linkintegrity/references.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/references.py:9:1: E265 block comment should start with '# '
plone/app/linkintegrity/references.py:15:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/references.py:17:1: F401 'Products.Archetypes.config' imported but unused
plone/app/linkintegrity/references.py:17:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/references.py:18:1: F401 'Products.Archetypes.interfaces.IReferenceable' imported but unused
plone/app/linkintegrity/references.py:18:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/references.py:19:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/references.py:27:35: E231 missing whitespace after ','
plone/app/linkintegrity/references.py:44:48: P002 found "hasattr", consider replacing it
plone/app/linkintegrity/references.py:55:5: B901 blind except: statement
plone/app/linkintegrity/references.py:57:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/handlers.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/handlers.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:3:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/handlers.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:17:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:18:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:19:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/handlers.py:20:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:21:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:22:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:23:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:24:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:44:5: F401 'plone.directives.form.Schema' imported but unused
plone/app/linkintegrity/handlers.py:46:1: B901 blind except: statement
plone/app/linkintegrity/handlers.py:63:1: C901 'findObject' is too complex (12)
plone/app/linkintegrity/handlers.py:121:21: B901 blind except: statement
plone/app/linkintegrity/handlers.py:170:5: F841 local variable 'fields' is assigned to but never used
plone/app/linkintegrity/handlers.py:207:47: P002 found "hasattr", consider replacing it
plone/app/linkintegrity/handlers.py:210:47: P002 found "hasattr", consider replacing it
plone/app/linkintegrity/interfaces.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/info.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/info.py:2:1: F401 'Products.CMFCore.interfaces.IPropertiesTool' imported but unused
plone/app/linkintegrity/info.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/info.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/info.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/info.py:7:1: F401 'zope.component.queryUtility' imported but unused
plone/app/linkintegrity/info.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/info.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/info.py:11:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/info.py:18:12: P002 found "hasattr", consider replacing it
plone/app/linkintegrity/info.py:33:1: E303 too many blank lines (4)
plone/app/linkintegrity/info.py:36:5: D001 found implements( replace it with zope.interface.implementer
plone/app/linkintegrity/info.py:130:16: Q000 Remove bad quotes.
plone/app/linkintegrity/utils.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/utils.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/utils.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/utils.py:21:19: S001 found module formatter
plone/app/linkintegrity/parser.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/parser.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/monkey.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:21:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/monkey.py:27:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/monkey.py:53:1: E302 expected 2 blank lines, found 1
plone/app/linkintegrity/monkey.py:75:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/monkey.py:75:1: E402 module level import not at top of file
plone/app/linkintegrity/monkey.py:75:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/confirmation.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/confirmation.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:7:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/confirmation.py:52:9: E731 do not assign a lambda expression, use a def
plone/app/linkintegrity/browser/confirmation.py:52:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/browser/confirmation.py:73:56: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/confirmation.py:79:57: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/remove.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/remove.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/remove.py:9:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/remove.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:39:39: S001 found module formatter
plone/app/linkintegrity/browser/remove.py:40:45: S001 found module formatter
plone/app/linkintegrity/browser/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/update.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/update.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/update.py:19:17: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/browser/update.py:19:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/browser/update.py:20:17: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_info.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/test_info.py:9:17: S001 found module formatter
plone/app/linkintegrity/tests/test_dexterity_doctests.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/test_dexterity_doctests.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:12:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:15:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_dexterity_doctests.py:26:5: F401 'plone.app.textfield.value.RichTextValue' imported but unused
plone/app/linkintegrity/tests/test_dexterity_doctests.py:27:5: E301 expected 1 blank line, found 0
plone/app/linkintegrity/tests/test_dexterity_doctests.py:32:1: E402 module level import not at top of file
plone/app/linkintegrity/tests/test_dexterity_doctests.py:32:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:35:1: E402 module level import not at top of file
plone/app/linkintegrity/tests/test_dexterity_doctests.py:35:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:56:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity_doctests.py:57:80: E501 line too long (89 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity_doctests.py:59:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity_doctests.py:61:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity_doctests.py:67:30: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:68:30: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:70:30: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:71:30: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:72:1: W293 blank line contains whitespace
plone/app/linkintegrity/tests/test_dexterity_doctests.py:82:22: S001 found module formatter
plone/app/linkintegrity/tests/test_dexterity_doctests.py:103:80: E501 line too long (103 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity_doctests.py:117:22: W291 trailing whitespace
plone/app/linkintegrity/tests/test_dexterity_doctests.py:122:20: E713 test for membership should be 'not in'
plone/app/linkintegrity/tests/test_dexterity_doctests.py:124:25: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:125:25: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:126:25: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/__init__.py:6:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/__init__.py:6:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/__init__.py:6:25: Q000 Remove bad quotes.
plone/app/linkintegrity/tests/__init__.py:6:35: Q000 Remove bad quotes.
plone/app/linkintegrity/tests/test_references.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/test_references.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_references.py:17:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_references.py:34:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_references.py:45:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:50:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:53:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_references.py:53:18: S001 found module formatter
plone/app/linkintegrity/tests/test_references.py:54:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/utils.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/utils.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/utils.py:12:44: S001 found module formatter
plone/app/linkintegrity/tests/test_doctests.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:18:1: E402 module level import not at top of file
plone/app/linkintegrity/tests/test_doctests.py:18:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:21:1: E402 module level import not at top of file
plone/app/linkintegrity/tests/test_doctests.py:21:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:27:8: Q001 Remove bad quotes from multiline string.
plone/app/linkintegrity/tests/test_doctests.py:55:22: S001 found module formatter
plone/app/linkintegrity/tests/test_doctests.py:99:16: E713 test for membership should be 'not in'
plone/app/linkintegrity/tests/test_doctests.py:101:21: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_doctests.py:102:21: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_doctests.py:103:21: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity.py:3:1: F401 'unittest' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:6:1: F401 'zExceptions.BadRequest' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:7:1: F401 'Acquisition.aq_base' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:8:1: F401 'zope.interface.alsoProvides' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:10:1: F401 'plone.uuid.interfaces.IMutableUUID' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:11:1: F401 'plone.uuid.interfaces.IUUIDGenerator' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:12:1: F401 'zope.component.getUtility' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:13:1: F401 'OFS.CopySupport.CopyError' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:13:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:14:1: F401 'plone.app.linkintegrity.tests.utils' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:14:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:15:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_dexterity.py:28:5: E301 expected 1 blank line, found 0
plone/app/linkintegrity/tests/test_dexterity.py:47:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:48:80: E501 line too long (89 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:50:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:52:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:53:1: W293 blank line contains whitespace
plone/app/linkintegrity/tests/test_dexterity.py:64:80: E501 line too long (106 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:67:80: E501 line too long (122 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:69:80: E501 line too long (96 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:71:80: E501 line too long (122 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:83:80: E501 line too long (123 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:84:80: E501 line too long (90 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:85:80: E501 line too long (87 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:86:80: E501 line too long (107 > 79 characters)
plone/app/linkintegrity/tests/test_can_paste.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/test_can_paste.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/layer.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:25:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:27:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:28:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/layer.py:29:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/layer.py:30:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/layer.py:33:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/layer.py:34:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:35:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/layer.py:36:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:37:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/layer.py:38:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/dexterity_docs/__init__.py:0:1: C101 Coding magic comment not found
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@keul Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.linkintegrity/82/violations
```
plone/__init__.py:0:1: C101 Coding magic comment not found
plone/app/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/exceptions.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/exceptions.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/exceptions.py:8:5: D001 found implements( replace it with zope.interface.implementer
plone/app/linkintegrity/handlers.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/handlers.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/handlers.py:12:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:13:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:14:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:15:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:16:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:34:1: E302 expected 2 blank lines, found 1
plone/app/linkintegrity/handlers.py:85:80: E501 line too long (87 > 79 characters)
plone/app/linkintegrity/handlers.py:89:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/handlers.py:94:1: C901 'modifiedArchetype' is too complex (15)
plone/app/linkintegrity/handlers.py:96:15: T000 Todo note found.
plone/app/linkintegrity/handlers.py:124:80: E501 line too long (89 > 79 characters)
plone/app/linkintegrity/handlers.py:130:13: B901 blind except: statement
plone/app/linkintegrity/handlers.py:132:21: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/handlers.py:149:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/info.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/info.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/info.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/info.py:10:5: D001 found implements( replace it with zope.interface.implementer
plone/app/linkintegrity/info.py:24:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/info.py:41:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/info.py:45:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/info.py:93:16: Q000 Remove bad quotes.
plone/app/linkintegrity/interfaces.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/monkey.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/monkey.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:21:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/monkey.py:27:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/monkey.py:71:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/monkey.py:71:1: E402 module level import not at top of file
plone/app/linkintegrity/monkey.py:71:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/parser.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/parser.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/utils.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/utils.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/utils.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/utils.py:9:19: S001 found module formatter
plone/app/linkintegrity/browser/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/confirmation.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/confirmation.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/confirmation.py:38:9: E731 do not assign a lambda expression, use a def
plone/app/linkintegrity/browser/confirmation.py:58:56: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/confirmation.py:64:57: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/remove.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/remove.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/remove.py:9:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/remove.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:39:39: S001 found module formatter
plone/app/linkintegrity/browser/remove.py:40:45: S001 found module formatter
plone/app/linkintegrity/browser/update.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/update.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/update.py:19:17: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/browser/update.py:19:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/browser/update.py:20:17: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/__init__.py:6:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/__init__.py:6:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/__init__.py:6:25: Q000 Remove bad quotes.
plone/app/linkintegrity/tests/__init__.py:6:35: Q000 Remove bad quotes.
plone/app/linkintegrity/tests/layer.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/layer.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:25:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:27:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:28:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/layer.py:29:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/layer.py:30:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/layer.py:33:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/layer.py:34:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:35:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/layer.py:36:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:37:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/layer.py:38:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/testDocTests.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/testDocTests.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/testDocTests.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/testDocTests.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/testDocTests.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/testDocTests.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/testDocTests.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/testDocTests.py:18:1: E402 module level import not at top of file
plone/app/linkintegrity/tests/testDocTests.py:18:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/testDocTests.py:21:1: E402 module level import not at top of file
plone/app/linkintegrity/tests/testDocTests.py:21:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/testDocTests.py:46:48: S001 found module formatter
plone/app/linkintegrity/tests/testDocTests.py:54:22: S001 found module formatter
plone/app/linkintegrity/tests/testDocTests.py:75:80: E501 line too long (103 > 79 characters)
plone/app/linkintegrity/tests/testDocTests.py:93:16: E713 test for membership should be 'not in'
plone/app/linkintegrity/tests/testDocTests.py:95:21: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/testDocTests.py:96:21: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/testDocTests.py:97:21: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_info.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/test_info.py:5:1: W293 blank line contains whitespace
plone/app/linkintegrity/tests/test_info.py:9:17: S001 found module formatter
plone/app/linkintegrity/tests/test_info.py:10:9: E306 expected 1 blank line before a nested definition, found 0
plone/app/linkintegrity/tests/test_info.py:12:1: W293 blank line contains whitespace
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@tomgross Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.linkintegrity/83/violations
```
plone/app/linkintegrity/compat.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/exceptions.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:15:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:21:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:22:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/handlers.py:23:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/handlers.py:28:1: C901 'findObject' is too complex (12)
plone/app/linkintegrity/handlers.py:114:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/handlers.py:117:1: E302 expected 2 blank lines, found 1
plone/app/linkintegrity/handlers.py:122:5: T000 Todo note found.
plone/app/linkintegrity/interfaces.py:3:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/interfaces.py:4:1: E302 expected 2 blank lines, found 1
plone/app/linkintegrity/parser.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:13:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:14:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:15:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:8:45: C812 missing trailing comma
plone/app/linkintegrity/testing.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:12:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:13:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:14:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:15:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:16:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:17:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:18:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:19:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:21:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/testing.py:59:9: D001 found xmlconfig.file( replace it with self.loadZCML(
plone/app/linkintegrity/testing.py:87:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/testing.py:108:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/testing.py:140:50: C812 missing trailing comma
plone/app/linkintegrity/testing.py:145:50: C812 missing trailing comma
plone/app/linkintegrity/testing.py:150:49: C812 missing trailing comma
plone/app/linkintegrity/testing.py:154:49: C812 missing trailing comma
plone/app/linkintegrity/upgrades.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:31:5: T000 Todo note found.
plone/app/linkintegrity/upgrades.py:36:76: C812 missing trailing comma
plone/app/linkintegrity/utils.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/info.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/info.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/info.py:12:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/info.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/info.py:42:5: C901 'DeleteConfirmationInfo.get_breaches' is too complex (16)
plone/app/linkintegrity/browser/info.py:63:21: F841 local variable 'obj_to_delete' is assigned to but never used
plone/app/linkintegrity/browser/info.py:65:80: E501 line too long (89 > 79 characters)
plone/app/linkintegrity/browser/info.py:81:80: E501 line too long (86 > 79 characters)
plone/app/linkintegrity/browser/info.py:82:80: E501 line too long (95 > 79 characters)
plone/app/linkintegrity/browser/info.py:84:48: E225 missing whitespace around operator
plone/app/linkintegrity/browser/info.py:84:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/browser/info.py:101:5: E303 too many blank lines (2)
plone/app/linkintegrity/browser/info.py:181:1: W391 blank line at end of file
plone/app/linkintegrity/browser/update.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:53:19: P101 format string does contain unindexed parameters
plone/app/linkintegrity/browser/update.py:74:23: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/update.py:74:23: P103 other string does contain unindexed parameters
plone/app/linkintegrity/browser/update.py:81:23: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/update.py:81:23: P103 other string does contain unindexed parameters
plone/app/linkintegrity/browser/update.py:83:16: S001 found module formatter
plone/app/linkintegrity/tests/__init__.py:7:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/__init__.py:7:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/__init__.py:7:25: Q000 Remove bad quotes.
plone/app/linkintegrity/tests/__init__.py:7:35: Q000 Remove bad quotes.
plone/app/linkintegrity/tests/test_circular.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_circular.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:3:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/tests/test_functional.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:10:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/tests/test_functional.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:12:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:16:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:61:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_functional.py:149:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:210:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:256:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:257:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:284:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:291:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:295:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:321:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:326:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:357:9: F841 local variable 'doc1' is assigned to but never used
plone/app/linkintegrity/tests/test_functional.py:358:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_handlers.py:9:1: W293 blank line contains whitespace
plone/app/linkintegrity/tests/test_handlers.py:16:80: E501 line too long (90 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:22:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:23:80: E501 line too long (146 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:28:52: E231 missing whitespace after ','
plone/app/linkintegrity/tests/test_handlers.py:31:1: E302 expected 2 blank lines, found 1
plone/app/linkintegrity/tests/test_imagescales.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_imagescales.py:21:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_imagescales.py:24:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_imagescales.py:33:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_imagescales.py:34:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/test_imagescales.py:43:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_imagescales.py:44:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_references.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_references.py:59:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_references.py:82:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:96:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:130:80: E501 line too long (85 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:168:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:172:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_upgrade.py:2:1: I001 isort found an import in the wrong position
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@frapell Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.linkintegrity/84/violations
```
plone/app/linkintegrity/compat.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/exceptions.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:17:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:23:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:24:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/handlers.py:25:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/handlers.py:30:1: C901 'findObject' is too complex (12)
plone/app/linkintegrity/handlers.py:118:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/handlers.py:121:1: E302 expected 2 blank lines, found 1
plone/app/linkintegrity/handlers.py:126:5: T000 Todo note found.
plone/app/linkintegrity/handlers.py:162:1: E302 expected 2 blank lines, found 1
plone/app/linkintegrity/handlers.py:164:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/handlers.py:166:1: W391 blank line at end of file
plone/app/linkintegrity/interfaces.py:3:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/interfaces.py:4:1: E302 expected 2 blank lines, found 1
plone/app/linkintegrity/parser.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:13:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:14:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/retriever.py:15:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:8:45: C812 missing trailing comma
plone/app/linkintegrity/testing.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:12:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:13:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:14:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:15:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:16:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:17:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:18:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/testing.py:20:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/testing.py:58:9: D001 found xmlconfig.file( replace it with self.loadZCML(
plone/app/linkintegrity/testing.py:87:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/testing.py:102:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/testing.py:129:50: C812 missing trailing comma
plone/app/linkintegrity/testing.py:134:50: C812 missing trailing comma
plone/app/linkintegrity/testing.py:139:49: C812 missing trailing comma
plone/app/linkintegrity/testing.py:143:49: C812 missing trailing comma
plone/app/linkintegrity/upgrades.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:16:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/utils.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/info.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/info.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/info.py:12:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/info.py:38:5: C901 'DeleteConfirmationInfo.get_breaches' is too complex (14)
plone/app/linkintegrity/browser/info.py:58:17: F841 local variable 'obj_to_delete' is assigned to but never used
plone/app/linkintegrity/browser/info.py:73:80: E501 line too long (86 > 79 characters)
plone/app/linkintegrity/browser/info.py:74:80: E501 line too long (95 > 79 characters)
plone/app/linkintegrity/browser/info.py:76:48: E225 missing whitespace around operator
plone/app/linkintegrity/browser/info.py:76:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/browser/info.py:93:5: E303 too many blank lines (2)
plone/app/linkintegrity/browser/info.py:170:1: W391 blank line at end of file
plone/app/linkintegrity/browser/update.py:12:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:53:19: P101 format string does contain unindexed parameters
plone/app/linkintegrity/browser/update.py:74:23: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/update.py:74:23: P103 other string does contain unindexed parameters
plone/app/linkintegrity/browser/update.py:81:23: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/update.py:81:23: P103 other string does contain unindexed parameters
plone/app/linkintegrity/browser/update.py:83:16: S001 found module formatter
plone/app/linkintegrity/tests/__init__.py:7:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/__init__.py:7:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/__init__.py:7:25: Q000 Remove bad quotes.
plone/app/linkintegrity/tests/__init__.py:7:35: Q000 Remove bad quotes.
plone/app/linkintegrity/tests/test_circular.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_circular.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:3:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/tests/test_functional.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:10:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/tests/test_functional.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:12:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:16:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_functional.py:61:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_functional.py:149:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:210:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:256:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:257:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:284:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:291:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:295:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:321:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:326:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:357:9: F841 local variable 'doc1' is assigned to but never used
plone/app/linkintegrity/tests/test_functional.py:358:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_handlers.py:9:1: W293 blank line contains whitespace
plone/app/linkintegrity/tests/test_handlers.py:16:80: E501 line too long (90 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:22:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:23:80: E501 line too long (146 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:28:52: E231 missing whitespace after ','
plone/app/linkintegrity/tests/test_handlers.py:31:1: E302 expected 2 blank lines, found 1
plone/app/linkintegrity/tests/test_imagescales.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_imagescales.py:21:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_imagescales.py:24:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_imagescales.py:33:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_imagescales.py:34:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/test_imagescales.py:43:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_imagescales.py:44:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_references.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_references.py:59:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_references.py:82:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:96:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:130:80: E501 line too long (85 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:168:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:172:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/tests/test_upgrade.py:2:1: I001 isort found an import in the wrong position
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@pbauer Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.linkintegrity/85/violations
```
plone/app/linkintegrity/handlers.py:32:1: C901 'findObject' is too complex (12)
plone/app/linkintegrity/handlers.py:128:5: T000 Todo note found.
plone/app/linkintegrity/testing.py:59:9: D001 found xmlconfig.file( replace it with self.loadZCML(
plone/app/linkintegrity/testing.py:144:50: C812 missing trailing comma
plone/app/linkintegrity/testing.py:149:50: C812 missing trailing comma
plone/app/linkintegrity/testing.py:154:49: C812 missing trailing comma
plone/app/linkintegrity/testing.py:158:49: C812 missing trailing comma
plone/app/linkintegrity/upgrades.py:4:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/upgrades.py:4:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/upgrades.py:4:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/upgrades.py:7:25: Q000 Remove bad quotes.
plone/app/linkintegrity/upgrades.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:42:5: T000 Todo note found.
plone/app/linkintegrity/upgrades.py:47:76: C812 missing trailing comma
plone/app/linkintegrity/utils.py:13:42: C812 missing trailing comma
plone/app/linkintegrity/utils.py:40:42: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:43:5: C901 'DeleteConfirmationInfo.get_breaches' is too complex (16)
plone/app/linkintegrity/browser/info.py:83:45: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:87:38: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:91:45: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:97:37: C812 missing trailing comma
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:66:16: S001 found module formatter
plone/app/linkintegrity/tests/test_functional.py:59:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_functional.py:149:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:150:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:213:59: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:214:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:296:59: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:297:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:304:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:308:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:336:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:337:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:342:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:375:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:376:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:64:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_references.py:87:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:101:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_upgrade.py:6:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:6:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:6:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:11:1: I001 isort found an import in the wrong position
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@daggelpop Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.linkintegrity/86/violations
```
plone/__init__.py:0:1: C101 Coding magic comment not found
plone/app/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/exceptions.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/exceptions.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/exceptions.py:8:5: D001 found implements( replace it with zope.interface.implementer
plone/app/linkintegrity/references.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/references.py:9:1: E265 block comment should start with '# '
plone/app/linkintegrity/references.py:15:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/references.py:17:1: F401 'Products.Archetypes.config' imported but unused
plone/app/linkintegrity/references.py:17:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/references.py:18:1: F401 'Products.Archetypes.interfaces.IReferenceable' imported but unused
plone/app/linkintegrity/references.py:18:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/references.py:19:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/references.py:27:35: E231 missing whitespace after ','
plone/app/linkintegrity/references.py:44:48: P002 found "hasattr", consider replacing it
plone/app/linkintegrity/references.py:55:5: B901 blind except: statement
plone/app/linkintegrity/references.py:57:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/handlers.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/handlers.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:3:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/handlers.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:17:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:18:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:19:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/handlers.py:20:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:21:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:22:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:23:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:24:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/handlers.py:45:1: B901 blind except: statement
plone/app/linkintegrity/handlers.py:62:1: C901 'findObject' is too complex (12)
plone/app/linkintegrity/handlers.py:122:21: B901 blind except: statement
plone/app/linkintegrity/handlers.py:207:47: P002 found "hasattr", consider replacing it
plone/app/linkintegrity/handlers.py:210:47: P002 found "hasattr", consider replacing it
plone/app/linkintegrity/interfaces.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/info.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/info.py:3:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/info.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/info.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/info.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/info.py:13:12: P002 found "hasattr", consider replacing it
plone/app/linkintegrity/info.py:22:5: D001 found implements( replace it with zope.interface.implementer
plone/app/linkintegrity/info.py:36:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/info.py:120:16: Q000 Remove bad quotes.
plone/app/linkintegrity/utils.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/utils.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/utils.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/utils.py:21:19: S001 found module formatter
plone/app/linkintegrity/parser.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/parser.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/monkey.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/monkey.py:21:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/monkey.py:27:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/monkey.py:53:1: E302 expected 2 blank lines, found 1
plone/app/linkintegrity/monkey.py:75:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/monkey.py:75:1: E402 module level import not at top of file
plone/app/linkintegrity/monkey.py:75:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/confirmation.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:2:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/confirmation.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/confirmation.py:7:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/confirmation.py:52:9: E731 do not assign a lambda expression, use a def
plone/app/linkintegrity/browser/confirmation.py:52:80: E501 line too long (82 > 79 characters)
plone/app/linkintegrity/browser/confirmation.py:73:56: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/confirmation.py:79:57: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/remove.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/remove.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:5:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/remove.py:9:1: I004 isort found an unexpected blank line in imports
plone/app/linkintegrity/browser/remove.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/remove.py:39:39: S001 found module formatter
plone/app/linkintegrity/browser/remove.py:40:45: S001 found module formatter
plone/app/linkintegrity/browser/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/browser/update.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/update.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/update.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/update.py:12:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:42:13: F401 'plone.app.multilingual.upgrades.migration_pam_1_to_2' imported but unused
plone/app/linkintegrity/browser/update.py:68:80: E501 line too long (81 > 79 characters)
plone/app/linkintegrity/browser/update.py:78:5: C901 'UpdateView.update' is too complex (12)
plone/app/linkintegrity/browser/update.py:82:80: E501 line too long (85 > 79 characters)
plone/app/linkintegrity/browser/update.py:92:23: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/update.py:92:23: P103 other string does contain unindexed parameters
plone/app/linkintegrity/browser/update.py:110:27: Q000 Remove bad quotes.
plone/app/linkintegrity/browser/update.py:110:27: P103 other string does contain unindexed parameters
plone/app/linkintegrity/tests/test_handlers.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/test_handlers.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_handlers.py:3:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_handlers.py:9:1: W293 blank line contains whitespace
plone/app/linkintegrity/tests/test_handlers.py:22:80: E501 line too long (90 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:28:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:29:80: E501 line too long (146 > 79 characters)
plone/app/linkintegrity/tests/test_handlers.py:34:52: E231 missing whitespace after ','
plone/app/linkintegrity/tests/test_handlers.py:36:1: W391 blank line at end of file
plone/app/linkintegrity/tests/test_info.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/test_info.py:9:17: S001 found module formatter
plone/app/linkintegrity/tests/test_dexterity_doctests.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/test_dexterity_doctests.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:12:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:15:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_dexterity_doctests.py:26:5: F401 'plone.app.textfield.value.RichTextValue' imported but unused
plone/app/linkintegrity/tests/test_dexterity_doctests.py:27:5: E301 expected 1 blank line, found 0
plone/app/linkintegrity/tests/test_dexterity_doctests.py:32:1: E402 module level import not at top of file
plone/app/linkintegrity/tests/test_dexterity_doctests.py:32:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:35:1: E402 module level import not at top of file
plone/app/linkintegrity/tests/test_dexterity_doctests.py:35:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity_doctests.py:56:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity_doctests.py:57:80: E501 line too long (89 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity_doctests.py:59:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity_doctests.py:61:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity_doctests.py:67:30: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:68:30: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:70:30: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:71:30: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:72:1: W293 blank line contains whitespace
plone/app/linkintegrity/tests/test_dexterity_doctests.py:82:22: S001 found module formatter
plone/app/linkintegrity/tests/test_dexterity_doctests.py:103:80: E501 line too long (103 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity_doctests.py:117:22: W291 trailing whitespace
plone/app/linkintegrity/tests/test_dexterity_doctests.py:122:20: E713 test for membership should be 'not in'
plone/app/linkintegrity/tests/test_dexterity_doctests.py:124:25: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:125:25: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity_doctests.py:126:25: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/__init__.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/__init__.py:6:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/__init__.py:6:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/__init__.py:6:25: Q000 Remove bad quotes.
plone/app/linkintegrity/tests/__init__.py:6:35: Q000 Remove bad quotes.
plone/app/linkintegrity/tests/test_references.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/test_references.py:1:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_references.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_references.py:10:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_references.py:17:24: W291 trailing whitespace
plone/app/linkintegrity/tests/test_references.py:21:16: P002 found "hasattr", consider replacing it
plone/app/linkintegrity/tests/test_references.py:28:1: W293 blank line contains whitespace
plone/app/linkintegrity/tests/test_references.py:35:18: E131 continuation line unaligned for hanging indent
plone/app/linkintegrity/tests/test_references.py:36:33: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:46:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_references.py:63:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_references.py:74:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:79:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:82:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_references.py:82:18: S001 found module formatter
plone/app/linkintegrity/tests/test_references.py:83:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_references.py:90:80: E501 line too long (98 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:91:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:97:80: E501 line too long (98 > 79 characters)
plone/app/linkintegrity/tests/test_references.py:98:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/utils.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/utils.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/utils.py:12:44: S001 found module formatter
plone/app/linkintegrity/tests/test_doctests.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:10:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:11:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:18:1: E402 module level import not at top of file
plone/app/linkintegrity/tests/test_doctests.py:18:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:21:1: E402 module level import not at top of file
plone/app/linkintegrity/tests/test_doctests.py:21:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_doctests.py:27:8: Q001 Remove bad quotes from multiline string.
plone/app/linkintegrity/tests/test_doctests.py:55:22: S001 found module formatter
plone/app/linkintegrity/tests/test_doctests.py:99:16: E713 test for membership should be 'not in'
plone/app/linkintegrity/tests/test_doctests.py:101:21: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_doctests.py:102:21: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_doctests.py:103:21: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/test_dexterity.py:3:1: F401 'unittest' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:6:1: F401 'zExceptions.BadRequest' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:7:1: F401 'Acquisition.aq_base' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:8:1: F401 'zope.interface.alsoProvides' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:9:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:10:1: F401 'plone.uuid.interfaces.IMutableUUID' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:11:1: F401 'plone.uuid.interfaces.IUUIDGenerator' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:12:1: F401 'zope.component.getUtility' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:13:1: F401 'OFS.CopySupport.CopyError' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:13:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:14:1: F401 'plone.app.linkintegrity.tests.utils' imported but unused
plone/app/linkintegrity/tests/test_dexterity.py:14:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:15:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/test_dexterity.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_dexterity.py:28:5: E301 expected 1 blank line, found 0
plone/app/linkintegrity/tests/test_dexterity.py:47:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:48:80: E501 line too long (89 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:50:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:52:80: E501 line too long (84 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:53:1: W293 blank line contains whitespace
plone/app/linkintegrity/tests/test_dexterity.py:64:80: E501 line too long (106 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:67:80: E501 line too long (122 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:69:80: E501 line too long (96 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:71:80: E501 line too long (122 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:83:80: E501 line too long (123 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:84:80: E501 line too long (90 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:85:80: E501 line too long (87 > 79 characters)
plone/app/linkintegrity/tests/test_dexterity.py:86:80: E501 line too long (107 > 79 characters)
plone/app/linkintegrity/tests/test_can_paste.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/test_can_paste.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:0:1: C101 Coding magic comment not found
plone/app/linkintegrity/tests/layer.py:2:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:3:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:4:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/tests/layer.py:25:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:27:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:28:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/layer.py:29:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/layer.py:30:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/layer.py:33:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/layer.py:34:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:35:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/layer.py:36:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/layer.py:37:80: E501 line too long (80 > 79 characters)
plone/app/linkintegrity/tests/layer.py:38:13: E128 continuation line under-indented for visual indent
plone/app/linkintegrity/tests/dexterity_docs/__init__.py:0:1: C101 Coding magic comment not found
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


@mauritsvanrees Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.linkintegrity/87/violations
```
plone/app/linkintegrity/handlers.py:28:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/handlers.py:32:1: C901 'findObject' is too complex (12)
plone/app/linkintegrity/handlers.py:123:5: T000 Todo note found.
plone/app/linkintegrity/parser.py:3:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/testing.py:61:9: D001 found xmlconfig.file( replace it with self.loadZCML(
plone/app/linkintegrity/testing.py:146:50: C812 missing trailing comma
plone/app/linkintegrity/testing.py:151:49: C812 missing trailing comma
plone/app/linkintegrity/testing.py:157:54: C812 missing trailing comma
plone/app/linkintegrity/testing.py:162:53: C812 missing trailing comma
plone/app/linkintegrity/upgrades.py:5:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:6:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:7:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:8:1: I001 isort found an import in the wrong position
plone/app/linkintegrity/upgrades.py:8:25: Q000 Remove bad quotes.
plone/app/linkintegrity/upgrades.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/upgrades.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/upgrades.py:16:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/utils.py:8:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/utils.py:15:42: C812 missing trailing comma
plone/app/linkintegrity/utils.py:42:42: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:15:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/info.py:43:5: C901 'DeleteConfirmationInfo.get_breaches' is too complex (16)
plone/app/linkintegrity/browser/info.py:83:45: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:87:38: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:91:45: C812 missing trailing comma
plone/app/linkintegrity/browser/info.py:97:37: C812 missing trailing comma
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/browser/update.py:65:16: S001 found module formatter
plone/app/linkintegrity/tests/test_circular.py:90:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_circular.py:92:5: E301 expected 1 blank line, found 0
plone/app/linkintegrity/tests/test_circular.py:92:80: E501 line too long (83 > 79 characters)
plone/app/linkintegrity/tests/test_functional.py:59:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_functional.py:149:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:150:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:213:59: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:214:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:296:59: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:297:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:304:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:308:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:336:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:337:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:342:34: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:375:65: C812 missing trailing comma
plone/app/linkintegrity/tests/test_functional.py:376:14: C812 missing trailing comma
plone/app/linkintegrity/tests/test_handlers.py:38:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_imagescales.py:69:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_references.py:65:11: T000 Todo note found.
plone/app/linkintegrity/tests/test_references.py:88:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:102:23: C812 missing trailing comma
plone/app/linkintegrity/tests/test_references.py:207:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/linkintegrity/tests/test_upgrade.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:5:1: I003 isort expected 1 blank line in imports, found 0
plone/app/linkintegrity/tests/test_upgrade.py:11:1: I001 isort found an import in the wrong position
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


Please update the version only of the API. a snapshot versions of the current API is published in the repository so a deployment build should work fine (merge to develop branch)


I've submitted:
https://github.com/OpenViX/enigma2/pull/378
Might be an idea to continue the "next steps" discussion there?


test commit


# Änderungen
- Projekt "Paint" abgeschlossen


在以后review中可去除count


@jensens Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.caching/69/violations
```
plone/app/caching/lookup.py:57:5: C901 'ContentItemLookup.__call__' is too complex (12)
plone/app/caching/purge.py:182:5: C901 'ScalesPurgePaths.getRelativePaths' is too complex (12)
plone/app/caching/testing.py:49:9: D001 found xmlconfig.file( replace it with self.loadZCML(
plone/app/caching/utils.py:63:11: T000 Todo note found.
plone/app/caching/browser/controlpanel.py:31:1: I001 isort found an import in the wrong position
plone/app/caching/browser/controlpanel.py:39:12: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:90:5: C901 'ControlPanel.publishTraverse' is too complex (11)
plone/app/caching/browser/controlpanel.py:172:5: C901 'ControlPanel.processSave' is too complex (34)
plone/app/caching/browser/controlpanel.py:439:45: E231 missing whitespace after ':'
plone/app/caching/browser/controlpanel.py:439:80: E501 line too long (85 > 79 characters)
plone/app/caching/browser/controlpanel.py:568:5: C901 'Purge.processPurge' is too complex (19)
plone/app/caching/browser/edit.py:208:11: T000 Todo note found.
plone/app/caching/browser/edit.py:271:21: C812 missing trailing comma
plone/app/caching/operations/default.py:68:59: C812 missing trailing comma
plone/app/caching/operations/default.py:129:32: C815 missing trailing comma in Python 3.5+
plone/app/caching/operations/default.py:134:5: C901 'BaseCaching.modifyResponse' is too complex (11)
plone/app/caching/operations/default.py:167:15: T000 Todo note found.
plone/app/caching/operations/default.py:226:51: C812 missing trailing comma
plone/app/caching/operations/default.py:279:58: C812 missing trailing comma
plone/app/caching/operations/utils.py:362:1: C901 'isModified' is too complex (14)
plone/app/caching/operations/utils.py:434:7: T000 Todo note found.
plone/app/caching/tests/test_profile_with_caching_proxy.py:150:26: S001 found module formatter
plone/app/caching/tests/test_profile_with_caching_proxy.py:165:26: S001 found module formatter
plone/app/caching/tests/test_profile_with_caching_proxy.py:184:26: S001 found module formatter
plone/app/caching/tests/test_profile_with_caching_proxy.py:230:26: S001 found module formatter
plone/app/caching/tests/test_profile_with_caching_proxy.py:247:26: S001 found module formatter
plone/app/caching/tests/test_profile_with_caching_proxy.py:267:26: S001 found module formatter
plone/app/caching/tests/test_profile_without_caching_proxy.py:15:1: F401 'Products.CMFCore.FSFile.FSFile' imported but unused
plone/app/caching/tests/test_purge.py:43:1: I003 isort expected 1 blank line in imports, found 0
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


Why this specify dirty hack in a general script such as pw_schedule_run.py? If there something that is not working as expected, a more general solution should be found.


In the config file, calling the crust2 id selector would be these lines:

  store_id_selector: !grond.Crust2StoreIDSelector
    template: 'crust2_%s'


hacked by donut gang


Short link to MVDKeepOutVolumes_TechnicalDrawing "https://git.io/fh9wp"


`RESPONSE` dude!


Thanks! Fixed in https://github.com/StylishThemes/GitHub-Dark/commit/620a7e82bad3a182b527fb9d5bd4f0086678359e.


> When will autochange happen?
> I suppose that "editablestep 0" is that the cursor moves 1 step by up/down keys but does not move when data is entered.

i dont need move cursor when i enter notes.
hard to say in english, i record video https://youtu.be/zX5ECiWGtWM
in this video editable step autochanging from 0 to 1


That's right - it assumes to be so all the time. If it's not, then something when wrong and that's wrong most of times about parser logic.


Does this mean all arrays other than matrices are considered as tables by default?


`* [![Nokia 8](https://img.shields.io/badge/Nokia-8-blue.svg)](https://www.nokia.com/phones/en_int/nokia-8-2017)
`
Try this :)


Should be in OPENSSL_CTX


@mauritsvanrees Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.relationfield/36/violations
```
plone/app/relationfield/behavior.py:23:56: C812 missing trailing comma
plone/app/relationfield/behavior.py:25:23: C812 missing trailing comma
plone/app/relationfield/behavior.py:33:10: C812 missing trailing comma
plone/app/relationfield/behavior.py:39:32: C812 missing trailing comma
plone/app/relationfield/demo.py:16:56: C812 missing trailing comma
plone/app/relationfield/demo.py:17:10: C812 missing trailing comma
plone/app/relationfield/demo.py:22:52: C812 missing trailing comma
plone/app/relationfield/event.py:9:1: C901 'extract_relations' is too complex (13)
plone/app/relationfield/schemaeditor.py:36:23: C812 missing trailing comma
plone/app/relationfield/schemaeditor.py:105:6: C812 missing trailing comma
plone/app/relationfield/source.py:30:24: C812 missing trailing comma
plone/app/relationfield/source.py:40:26: C812 missing trailing comma
plone/app/relationfield/supermodel.py:17:31: C812 missing trailing comma
plone/app/relationfield/supermodel.py:59:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/relationfield/testing.py:71:46: C812 missing trailing comma
plone/app/relationfield/testing.py:102:58: C812 missing trailing comma
plone/app/relationfield/testing.py:132:58: C812 missing trailing comma
plone/app/relationfield/widget.py:31:19: T000 Todo note found.
plone/app/relationfield/widget.py:71:19: T000 Todo note found.
plone/app/relationfield/widget.py:129:19: T000 Todo note found.
plone/app/relationfield/widget.py:166:19: T000 Todo note found.
plone/app/relationfield/tests/test_marshall.py:12:42: C812 missing trailing comma
plone/app/relationfield/tests/test_marshall.py:25:28: C812 missing trailing comma
plone/app/relationfield/tests/test_schemaeditor.py:20:44: C812 missing trailing comma
plone/app/relationfield/tests/test_supermodel.py:32:46: C812 missing trailing comma
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.


так не будет работать, нужен post


@mauritsvanrees Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.vocabularies/57/violations
```
plone/app/vocabularies/__init__.py:3:1: I001 isort found an import in the wrong position
plone/app/vocabularies/__init__.py:9:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/__init__.py:11:1: E731 do not assign a lambda expression, use a def
plone/app/vocabularies/__init__.py:28:13: D001 found directlyProvides( replace it with zope.interface.provider
plone/app/vocabularies/__init__.py:67:1: W391 blank line at end of file
plone/app/vocabularies/actions.py:24:71: C812 missing trailing comma
plone/app/vocabularies/actions.py:50:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/catalog.py:510:14: C812 missing trailing comma
plone/app/vocabularies/catalog.py:650:32: C812 missing trailing comma
plone/app/vocabularies/datetimerelated.py:54:25: C812 missing trailing comma
plone/app/vocabularies/editors.py:25:24: C812 missing trailing comma
plone/app/vocabularies/editors.py:33:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/groups.py:71:11: T000 Todo note found.
plone/app/vocabularies/interfaces.py:58:1: W391 blank line at end of file
plone/app/vocabularies/language.py:112:64: C812 missing trailing comma
plone/app/vocabularies/security.py:73:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:132:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/security.py:146:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/skins.py:65:41: C812 missing trailing comma
plone/app/vocabularies/skins.py:66:22: C812 missing trailing comma
plone/app/vocabularies/skins.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:13:1: I003 isort expected 1 blank line in imports, found 0
plone/app/vocabularies/syndication.py:15:7: T000 Todo note found.
plone/app/vocabularies/syndication.py:44:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/syndication.py:57:33: C812 missing trailing comma
plone/app/vocabularies/syndication.py:72:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/terms.py:59:24: C812 missing trailing comma
plone/app/vocabularies/terms.py:90:36: C812 missing trailing comma
plone/app/vocabularies/testing.py:15:41: C812 missing trailing comma
plone/app/vocabularies/testing.py:18:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:99:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:150:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:190:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:241:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/types.py:315:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/users.py:167:9: Q001 Remove bad quotes from multiline string.
plone/app/vocabularies/workflow.py:76:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:124:11: T000 Todo note found.
plone/app/vocabularies/workflow.py:136:14: C812 missing trailing comma
plone/app/vocabularies/workflow.py:145:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/workflow.py:244:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/vocabularies/tests/test_editors.py:24:54: C812 missing trailing comma
plone/app/vocabularies/tests/test_imagesvocabularies.py:18:50: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:43:33: C812 missing trailing comma
plone/app/vocabularies/tests/test_subjects_under_context.py:51:33: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:19:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:28:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:46:53: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:50:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:63:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_timezonevocabularies.py:74:56: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:43:47: C812 missing trailing comma
plone/app/vocabularies/tests/test_vocabularies.py:108:10: C812 missing trailing comma
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.