@esteele Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.discussion/115/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/discussion/events.py:0:1: C101 Coding magic comment not found
plone/app/discussion/events.py:14:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/events.py:31:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/events.py:37:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/events.py:43:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/events.py:49:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/conversation.py:0:1: C101 Coding magic comment not found
plone/app/discussion/conversation.py:23:1: I001 isort found an import in the wrong position
plone/app/discussion/conversation.py:53:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/conversation.py:57:27: Q000 Remove bad quotes.
plone/app/discussion/conversation.py:337:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/conversation.py:338:5: D001 found adapts( replace it with zope.component.adapter
plone/app/discussion/conversation.py:414:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/conversation.py:420:5: D001 found adapts( replace it with zope.component.adapter
plone/app/discussion/conversation.py:427:24: C812 missing trailing comma
plone/app/discussion/conversation.py:431:29: Q000 Remove bad quotes.
plone/app/discussion/testing.py:0:1: C101 Coding magic comment not found
plone/app/discussion/testing.py:1:1: I001 isort found an import in the wrong position
plone/app/discussion/testing.py:14:1: I003 isort expected 1 blank line in imports, found 0
plone/app/discussion/testing.py:17:23: Q000 Remove bad quotes.
plone/app/discussion/testing.py:18:1: B901 blind except: statement
plone/app/discussion/testing.py:19:23: Q000 Remove bad quotes.
plone/app/discussion/testing.py:41:9: D001 found xmlconfig.file( replace it with self.loadZCML(
plone/app/discussion/testing.py:80:14: Q000 Remove bad quotes.
plone/app/discussion/testing.py:94:33: C812 missing trailing comma
plone/app/discussion/testing.py:110:10: Q000 Remove bad quotes.
plone/app/discussion/testing.py:113:10: Q000 Remove bad quotes.
plone/app/discussion/testing.py:117:37: C812 missing trailing comma
plone/app/discussion/testing.py:119:10: Q000 Remove bad quotes.
plone/app/discussion/testing.py:119:36: C812 missing trailing comma
plone/app/discussion/interfaces.py:33:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:39:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:44:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:50:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:51:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:51:35: C812 missing trailing comma
plone/app/discussion/interfaces.py:132:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:133:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:137:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:139:40: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:142:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:145:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:150:47: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:153:43: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:154:44: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:156:37: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:157:45: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:159:42: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:159:65: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:162:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:163:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:163:31: C812 missing trailing comma
plone/app/discussion/interfaces.py:164:10: C812 missing trailing comma
plone/app/discussion/interfaces.py:169:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:169:52: C812 missing trailing comma
plone/app/discussion/interfaces.py:171:23: C812 missing trailing comma
plone/app/discussion/interfaces.py:174:39: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:175:41: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:176:45: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:182:39: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:198:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:199:25: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:201:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:202:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:203:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:204:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:205:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:205:67: C812 missing trailing comma
plone/app/discussion/interfaces.py:212:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:213:25: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:215:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:216:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:217:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:218:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:219:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:219:56: C812 missing trailing comma
plone/app/discussion/interfaces.py:226:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:227:25: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:229:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:230:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:231:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:233:22: C812 missing trailing comma
plone/app/discussion/interfaces.py:238:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:239:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:239:48: C812 missing trailing comma
plone/app/discussion/interfaces.py:242:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:244:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:247:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:248:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:249:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:249:44: C812 missing trailing comma
plone/app/discussion/interfaces.py:256:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:257:25: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:258:23: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:259:31: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:261:23: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:267:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:268:25: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:269:23: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:270:31: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:271:23: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:278:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:279:25: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:281:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:282:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:283:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:286:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:287:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:288:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:295:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:296:25: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:298:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:299:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:300:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:301:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:302:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:303:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:304:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:311:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:312:25: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:314:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:315:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:316:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:322:17: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:323:25: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:325:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:326:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:327:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:328:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:336:47: C812 missing trailing comma
plone/app/discussion/interfaces.py:340:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:341:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:347:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:348:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:348:54: C812 missing trailing comma
plone/app/discussion/interfaces.py:351:13: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:352:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:353:21: Q000 Remove bad quotes.
plone/app/discussion/interfaces.py:355:22: C812 missing trailing comma
plone/app/discussion/subscribers.py:0:1: C101 Coding magic comment not found
plone/app/discussion/contentrules.py:0:1: C101 Coding magic comment not found
plone/app/discussion/contentrules.py:18:5: E731 do not assign a lambda expression, use a def
plone/app/discussion/comment.py:6:1: I001 isort found an import in the wrong position
plone/app/discussion/comment.py:9:1: I001 isort found an import in the wrong position
plone/app/discussion/comment.py:10:1: I001 isort found an import in the wrong position
plone/app/discussion/comment.py:11:1: I001 isort found an import in the wrong position
plone/app/discussion/comment.py:12:1: I001 isort found an import in the wrong position
plone/app/discussion/comment.py:13:1: I001 isort found an import in the wrong position
plone/app/discussion/comment.py:14:1: I001 isort found an import in the wrong position
plone/app/discussion/comment.py:15:1: I001 isort found an import in the wrong position
plone/app/discussion/comment.py:44:5: Q000 Remove bad quotes.
plone/app/discussion/comment.py:45:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:48:5: Q000 Remove bad quotes.
plone/app/discussion/comment.py:50:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:51:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:52:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:53:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:56:5: Q000 Remove bad quotes.
plone/app/discussion/comment.py:58:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:59:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:60:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:61:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:62:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:63:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:65:28: Q000 Remove bad quotes.
plone/app/discussion/comment.py:77:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/comment.py:89:13: Q000 Remove bad quotes.
plone/app/discussion/comment.py:92:12: Q000 Remove bad quotes.
plone/app/discussion/comment.py:118:40: C812 missing trailing comma
plone/app/discussion/comment.py:160:40: Q000 Remove bad quotes.
plone/app/discussion/comment.py:162:17: S001 found module formatter
plone/app/discussion/comment.py:164:35: C812 missing trailing comma
plone/app/discussion/comment.py:166:17: S001 found module formatter
plone/app/discussion/comment.py:166:75: C812 missing trailing comma
plone/app/discussion/comment.py:180:21: Q000 Remove bad quotes.
plone/app/discussion/comment.py:181:29: Q000 Remove bad quotes.
plone/app/discussion/comment.py:181:41: C812 missing trailing comma
plone/app/discussion/comment.py:182:19: C812 missing trailing comma
plone/app/discussion/comment.py:201:14: D001 found declareProtected( replace it with AccessControl.ClassSecurityInfo.protected
plone/app/discussion/comment.py:219:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/discussion/comment.py:291:19: C812 missing trailing comma
plone/app/discussion/comment.py:295:21: Q000 Remove bad quotes.
plone/app/discussion/comment.py:295:38: C812 missing trailing comma
plone/app/discussion/comment.py:349:27: Q000 Remove bad quotes.
plone/app/discussion/comment.py:357:33: C812 missing trailing comma
plone/app/discussion/comment.py:358:14: C812 missing trailing comma
plone/app/discussion/comment.py:360:28: C812 missing trailing comma
plone/app/discussion/comment.py:415:27: Q000 Remove bad quotes.
plone/app/discussion/comment.py:427:14: C812 missing trailing comma
plone/app/discussion/comment.py:429:28: C812 missing trailing comma
plone/app/discussion/patches.py:0:1: C101 Coding magic comment not found
plone/app/discussion/patches.py:6:1: I001 isort found an import in the wrong position
plone/app/discussion/patches.py:25:46: Q000 Remove bad quotes.
plone/app/discussion/catalog.py:0:1: C101 Coding magic comment not found
plone/app/discussion/catalog.py:10:1: I001 isort found an import in the wrong position
plone/app/discussion/catalog.py:11:1: I001 isort found an import in the wrong position
plone/app/discussion/catalog.py:12:1: I001 isort found an import in the wrong position
plone/app/discussion/catalog.py:81:17: Q000 Remove bad quotes.
plone/app/discussion/tool.py:0:1: C101 Coding magic comment not found
plone/app/discussion/tool.py:7:1: I001 isort found an import in the wrong position
plone/app/discussion/tool.py:8:1: I001 isort found an import in the wrong position
plone/app/discussion/tool.py:9:1: I001 isort found an import in the wrong position
plone/app/discussion/tool.py:18:15: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/upgrades.py:0:1: C101 Coding magic comment not found
plone/app/discussion/browser/controlpanel.py:2:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/controlpanel.py:3:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/controlpanel.py:4:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/controlpanel.py:5:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/controlpanel.py:6:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/controlpanel.py:26:10: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:27:15: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:29:9: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:30:17: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:31:17: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:32:17: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:33:17: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:34:17: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:35:17: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:36:17: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:37:17: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:38:17: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:38:48: C812 missing trailing comma
plone/app/discussion/browser/controlpanel.py:68:52: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:69:54: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:70:56: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:72:15: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:74:15: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:83:57: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:84:55: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:85:48: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:89:57: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:90:55: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:91:40: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:91:40: S001 found module formatter
plone/app/discussion/browser/controlpanel.py:107:46: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:113:27: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:120:27: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:122:27: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:125:27: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:128:27: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:132:27: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:138:27: Q000 Remove bad quotes.
plone/app/discussion/browser/controlpanel.py:164:46: Q000 Remove bad quotes.
plone/app/discussion/browser/conversation.py:0:1: C101 Coding magic comment not found
plone/app/discussion/browser/conversation.py:8:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/conversation.py:9:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/conversation.py:11:1: I003 isort expected 1 blank line in imports, found 0
plone/app/discussion/browser/conversation.py:15:1: B901 blind except: statement
plone/app/discussion/browser/conversation.py:27:5: C901 'ConversationView._enabled_for_archetypes' is too complex (14)
plone/app/discussion/browser/conversation.py:133:12: P002 found "hasattr", consider replacing it
plone/app/discussion/browser/conversation.py:133:29: Q000 Remove bad quotes.
plone/app/discussion/browser/captcha.py:15:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/captcha.py:23:15: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/browser/captcha.py:24:5: D001 found adapts( replace it with zope.component.adapter
plone/app/discussion/browser/captcha.py:25:15: Q000 Remove bad quotes.
plone/app/discussion/browser/captcha.py:27:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/discussion/browser/captcha.py:36:5: D001 found adapts( replace it with zope.component.adapter
plone/app/discussion/browser/captcha.py:54:39: Q000 Remove bad quotes.
plone/app/discussion/browser/comment.py:0:1: C101 Coding magic comment not found
plone/app/discussion/browser/comment.py:4:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/comment.py:5:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/comment.py:6:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/comment.py:7:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/comment.py:49:19: Q000 Remove bad quotes.
plone/app/discussion/browser/comment.py:49:19: S001 found module formatter
plone/app/discussion/browser/comment.py:51:40: S001 found module formatter
plone/app/discussion/browser/comment.py:57:10: Q000 Remove bad quotes.
plone/app/discussion/browser/comment.py:74:32: Q000 Remove bad quotes.
plone/app/discussion/browser/comment.py:75:38: Q000 Remove bad quotes.
plone/app/discussion/browser/comment.py:96:52: Q000 Remove bad quotes.
plone/app/discussion/browser/comment.py:99:40: Q000 Remove bad quotes.
plone/app/discussion/browser/comment.py:99:58: Q000 Remove bad quotes.
plone/app/discussion/browser/comment.py:110:1: E305 expected 2 blank lines after class or function definition, found 1
plone/app/discussion/browser/migration.py:0:1: C101 Coding magic comment not found
plone/app/discussion/browser/migration.py:7:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/migration.py:8:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/migration.py:9:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/migration.py:31:5: C901 'View.__call__' is too complex (32)
plone/app/discussion/browser/migration.py:38:19: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:42:16: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:74:26: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:76:31: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:77:21: S001 found module formatter
plone/app/discussion/browser/migration.py:109:43: C812 missing trailing comma
plone/app/discussion/browser/migration.py:141:55: C812 missing trailing comma
plone/app/discussion/browser/migration.py:143:43: C812 missing trailing comma
plone/app/discussion/browser/migration.py:175:25: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:175:25: S001 found module formatter
plone/app/discussion/browser/migration.py:185:13: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:185:13: S001 found module formatter
plone/app/discussion/browser/migration.py:188:58: C812 missing trailing comma
plone/app/discussion/browser/migration.py:191:75: C812 missing trailing comma
plone/app/discussion/browser/migration.py:195:67: C812 missing trailing comma
plone/app/discussion/browser/migration.py:196:14: C812 missing trailing comma
plone/app/discussion/browser/migration.py:199:13: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:199:13: S001 found module formatter
plone/app/discussion/browser/migration.py:200:13: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:200:13: S001 found module formatter
plone/app/discussion/browser/migration.py:201:13: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:201:13: S001 found module formatter
plone/app/discussion/browser/migration.py:203:13: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:204:13: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:222:21: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:223:21: S001 found module formatter
plone/app/discussion/browser/migration.py:231:17: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:232:17: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:233:17: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:233:17: S001 found module formatter
plone/app/discussion/browser/migration.py:235:48: C812 missing trailing comma
plone/app/discussion/browser/migration.py:236:18: C812 missing trailing comma
plone/app/discussion/browser/migration.py:240:17: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:242:13: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:243:13: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:244:13: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:246:13: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:246:13: S001 found module formatter
plone/app/discussion/browser/migration.py:251:17: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:251:17: S001 found module formatter
plone/app/discussion/browser/migration.py:253:18: C812 missing trailing comma
plone/app/discussion/browser/migration.py:255:17: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:256:17: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:260:17: Q000 Remove bad quotes.
plone/app/discussion/browser/migration.py:261:17: Q000 Remove bad quotes.
plone/app/discussion/browser/moderation.py:3:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/moderation.py:10:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/moderation.py:11:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/moderation.py:12:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/moderation.py:104:19: Q000 Remove bad quotes.
plone/app/discussion/browser/moderation.py:105:22: Q000 Remove bad quotes.
plone/app/discussion/browser/moderation.py:182:15: Q000 Remove bad quotes.
plone/app/discussion/browser/moderation.py:183:18: Q000 Remove bad quotes.
plone/app/discussion/browser/traversal.py:0:1: C101 Coding magic comment not found
plone/app/discussion/browser/traversal.py:23:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/browser/traversal.py:24:5: D001 found adapts( replace it with zope.component.adapter
plone/app/discussion/browser/traversal.py:32:20: Q000 Remove bad quotes.
plone/app/discussion/browser/traversal.py:33:20: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:6:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/comments.py:7:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/comments.py:8:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/comments.py:9:1: I001 isort found an import in the wrong position
plone/app/discussion/browser/comments.py:37:5: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:38:13: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:39:13: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:42:5: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:43:13: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:44:13: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:45:13: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:48:5: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:49:13: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:50:13: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:51:13: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:54:5: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:55:13: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:62:15: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:84:39: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:85:53: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:90:35: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:124:41: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:125:41: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:126:42: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:128:5: C901 'CommentForm.handleComment' is too complex (17)
plone/app/discussion/browser/comments.py:128:32: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:128:63: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:135:34: C812 missing trailing comma
plone/app/discussion/browser/comments.py:137:32: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:138:32: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:154:35: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:163:23: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:210:53: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:215:15: T000 Todo note found.
plone/app/discussion/browser/comments.py:219:16: T000 Todo note found.
plone/app/discussion/browser/comments.py:226:17: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:227:17: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:228:47: C812 missing trailing comma
plone/app/discussion/browser/comments.py:253:17: C812 missing trailing comma
plone/app/discussion/browser/comments.py:258:19: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:259:22: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:265:32: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:359:39: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:362:41: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:370:41: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:378:37: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:448:20: Q000 Remove bad quotes.
plone/app/discussion/browser/comments.py:448:20: S001 found module formatter
plone/app/discussion/browser/comments.py:494:16: S001 found module formatter
plone/app/discussion/browser/validator.py:36:5: D001 found implements( replace it with zope.interface.implementer
plone/app/discussion/browser/validator.py:37:5: D001 found adapts( replace it with zope.component.adapter
plone/app/discussion/tests/test_comments_viewlet.py:5:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_comments_viewlet.py:6:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_comments_viewlet.py:52:45: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:83:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:83:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:91:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:91:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:97:65: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:105:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:105:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:111:65: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:118:44: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:119:47: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:120:64: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:147:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:147:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:154:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:154:38: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:163:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:163:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:169:65: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:177:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:177:38: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:183:59: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:185:14: D001 found assertEquals( replace it with assertEqual
plone/app/discussion/tests/test_comments_viewlet.py:185:41: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:192:44: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:193:47: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:195:64: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:222:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:222:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:231:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:231:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:237:65: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:244:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:244:44: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:251:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:251:40: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:280:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:280:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:289:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:289:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:295:65: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:302:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:302:39: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:310:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:310:35: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:341:29: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:346:40: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:351:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:351:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:357:65: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:364:44: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:388:29: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:394:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:394:33: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:406:27: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:427:29: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:432:44: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:441:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:441:18: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:457:40: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:522:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:523:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:528:35: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:533:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:534:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:535:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:535:36: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:546:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:547:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:548:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comments_viewlet.py:588:14: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:593:41: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:600:22: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:604:13: S001 found module formatter
plone/app/discussion/tests/test_comments_viewlet.py:605:61: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:616:51: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:629:21: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:633:18: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:637:20: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:655:66: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:664:14: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:691:54: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:692:14: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:725:71: C812 missing trailing comma
plone/app/discussion/tests/test_comments_viewlet.py:739:67: C815 missing trailing comma in Python 3.5+
plone/app/discussion/tests/test_conversation.py:0:1: C101 Coding magic comment not found
plone/app/discussion/tests/test_conversation.py:3:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_conversation.py:27:1: B901 blind except: statement
plone/app/discussion/tests/test_conversation.py:70:34: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:78:33: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:85:35: Q000 Remove bad quotes.
plone/app/discussion/tests/test_conversation.py:87:35: Q000 Remove bad quotes.
plone/app/discussion/tests/test_conversation.py:90:27: Q000 Remove bad quotes.
plone/app/discussion/tests/test_conversation.py:276:34: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:324:34: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:394:11: T000 Todo note found.
plone/app/discussion/tests/test_conversation.py:437:36: Q000 Remove bad quotes.
plone/app/discussion/tests/test_conversation.py:442:36: Q000 Remove bad quotes.
plone/app/discussion/tests/test_conversation.py:447:36: Q000 Remove bad quotes.
plone/app/discussion/tests/test_conversation.py:452:36: Q000 Remove bad quotes.
plone/app/discussion/tests/test_conversation.py:510:56: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:514:61: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:524:64: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:528:41: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:538:64: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:542:41: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:616:11: T000 Todo note found.
plone/app/discussion/tests/test_conversation.py:624:38: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:630:43: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:634:40: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:642:54: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:666:43: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:679:40: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:685:38: C812 missing trailing comma
plone/app/discussion/tests/test_conversation.py:842:13: S001 found module formatter
plone/app/discussion/tests/test_conversation.py:846:13: S001 found module formatter
plone/app/discussion/tests/test_conversation.py:851:13: S001 found module formatter
plone/app/discussion/tests/test_moderation_view.py:2:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_moderation_view.py:78:13: S001 found module formatter
plone/app/discussion/tests/test_moderation_view.py:78:52: C812 missing trailing comma
plone/app/discussion/tests/test_moderation_view.py:86:13: S001 found module formatter
plone/app/discussion/tests/test_moderation_view.py:86:52: C812 missing trailing comma
plone/app/discussion/tests/test_moderation_view.py:94:13: S001 found module formatter
plone/app/discussion/tests/test_moderation_view.py:94:52: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:0:1: C101 Coding magic comment not found
plone/app/discussion/tests/test_indexers.py:4:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_indexers.py:42:28: Q000 Remove bad quotes.
plone/app/discussion/tests/test_indexers.py:43:36: Q000 Remove bad quotes.
plone/app/discussion/tests/test_indexers.py:50:28: Q000 Remove bad quotes.
plone/app/discussion/tests/test_indexers.py:51:36: Q000 Remove bad quotes.
plone/app/discussion/tests/test_indexers.py:58:28: Q000 Remove bad quotes.
plone/app/discussion/tests/test_indexers.py:59:36: Q000 Remove bad quotes.
plone/app/discussion/tests/test_indexers.py:69:37: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:81:37: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:85:46: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:90:46: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:121:27: Q000 Remove bad quotes.
plone/app/discussion/tests/test_indexers.py:122:31: Q000 Remove bad quotes.
plone/app/discussion/tests/test_indexers.py:137:42: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:152:35: Q000 Remove bad quotes.
plone/app/discussion/tests/test_indexers.py:152:41: Q000 Remove bad quotes.
plone/app/discussion/tests/test_indexers.py:152:45: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:159:53: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:163:53: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:167:52: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:174:44: C812 missing trailing comma
plone/app/discussion/tests/test_indexers.py:178:37: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:32:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_controlpanel.py:32:43: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:39:56: Q000 Remove bad quotes.
plone/app/discussion/tests/test_controlpanel.py:44:14: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:55:18: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:66:18: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:77:18: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:103:25: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:114:23: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:125:17: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:131:68: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:138:18: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:170:34: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:171:14: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:182:34: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:183:14: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:190:34: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:191:14: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:205:41: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:214:36: C812 missing trailing comma
plone/app/discussion/tests/test_controlpanel.py:221:35: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:5:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_workflow.py:6:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_workflow.py:49:34: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:50:14: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:63:28: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:65:24: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:90:27: Q000 Remove bad quotes.
plone/app/discussion/tests/test_workflow.py:129:13: S001 found module formatter
plone/app/discussion/tests/test_workflow.py:129:47: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:195:13: S001 found module formatter
plone/app/discussion/tests/test_workflow.py:236:31: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:237:14: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:245:31: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:246:14: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:256:31: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:257:14: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:262:41: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:268:31: C812 missing trailing comma
plone/app/discussion/tests/test_workflow.py:269:14: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:0:1: C101 Coding magic comment not found
plone/app/discussion/tests/test_catalog.py:3:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_catalog.py:26:49: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:30:49: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:34:48: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:38:48: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:75:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:77:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:77:35: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:95:13: S001 found module formatter
plone/app/discussion/tests/test_catalog.py:100:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:102:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:102:35: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:111:46: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:123:13: S001 found module formatter
plone/app/discussion/tests/test_catalog.py:128:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:130:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:130:35: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:135:46: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:144:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:146:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:146:35: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:151:46: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:159:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:161:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:161:35: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:179:13: S001 found module formatter
plone/app/discussion/tests/test_catalog.py:185:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:187:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:187:35: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:198:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:200:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:200:35: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:210:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:212:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:212:35: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:221:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:223:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:223:42: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:231:41: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:236:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:238:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:238:35: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:265:13: S001 found module formatter
plone/app/discussion/tests/test_catalog.py:269:57: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:270:14: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:284:13: S001 found module formatter
plone/app/discussion/tests/test_catalog.py:288:52: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:289:14: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:292:47: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:321:57: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:322:14: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:332:40: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:341:31: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:346:31: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:351:33: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:365:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:366:76: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:371:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:373:73: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:374:14: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:380:28: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:400:55: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:414:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:415:57: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:421:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:422:57: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:428:28: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:435:41: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:435:49: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:443:33: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:461:33: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:536:61: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:538:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_catalog.py:538:35: C812 missing trailing comma
plone/app/discussion/tests/test_catalog.py:551:43: C812 missing trailing comma
plone/app/discussion/tests/test_notifications.py:6:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_notifications.py:8:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_notifications.py:9:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_notifications.py:10:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_notifications.py:35:44: Q000 Remove bad quotes.
plone/app/discussion/tests/test_notifications.py:59:32: Q000 Remove bad quotes.
plone/app/discussion/tests/test_notifications.py:81:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_notifications.py:81:13: S001 found module formatter
plone/app/discussion/tests/test_notifications.py:97:32: Q000 Remove bad quotes.
plone/app/discussion/tests/test_notifications.py:127:32: Q000 Remove bad quotes.
plone/app/discussion/tests/test_notifications.py:142:32: Q000 Remove bad quotes.
plone/app/discussion/tests/test_notifications.py:147:32: Q000 Remove bad quotes.
plone/app/discussion/tests/test_notifications.py:174:44: Q000 Remove bad quotes.
plone/app/discussion/tests/test_notifications.py:180:41: C812 missing trailing comma
plone/app/discussion/tests/test_notifications.py:222:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_notifications.py:222:13: S001 found module formatter
plone/app/discussion/tests/test_notifications.py:228:13: S001 found module formatter
plone/app/discussion/tests/test_notifications.py:232:13: S001 found module formatter
plone/app/discussion/tests/test_comment.py:2:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_comment.py:44:28: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:45:28: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:46:28: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:68:42: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:79:42: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:88:42: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:95:32: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:97:26: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:103:26: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:109:33: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:113:32: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:115:26: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:121:33: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:125:32: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:127:26: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:131:28: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:132:26: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:136:32: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:137:26: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:159:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:159:73: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:167:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:167:50: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:175:67: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:180:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:183:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:183:48: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:188:25: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:193:54: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:202:65: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:232:13: S001 found module formatter
plone/app/discussion/tests/test_comment.py:238:37: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:240:38: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:244:57: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:255:30: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:263:13: S001 found module formatter
plone/app/discussion/tests/test_comment.py:268:23: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:290:69: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:294:77: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:298:76: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:305:13: Q000 Remove bad quotes.
plone/app/discussion/tests/test_comment.py:306:49: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:330:13: S001 found module formatter
plone/app/discussion/tests/test_comment.py:367:13: S001 found module formatter
plone/app/discussion/tests/test_comment.py:403:13: S001 found module formatter
plone/app/discussion/tests/test_comment.py:438:13: S001 found module formatter
plone/app/discussion/tests/test_comment.py:446:13: S001 found module formatter
plone/app/discussion/tests/test_comment.py:446:53: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:455:13: S001 found module formatter
plone/app/discussion/tests/test_comment.py:455:56: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:464:13: S001 found module formatter
plone/app/discussion/tests/test_comment.py:468:38: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:472:48: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:476:41: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:481:38: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:486:34: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:488:44: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:493:41: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:498:37: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:500:47: C812 missing trailing comma
plone/app/discussion/tests/test_comment.py:505:44: C812 missing trailing comma
plone/app/discussion/tests/test_functional.py:31:46: C812 missing trailing comma
plone/app/discussion/tests/test_events.py:2:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_events.py:89:26: Q000 Remove bad quotes.
plone/app/discussion/tests/test_events.py:142:26: Q000 Remove bad quotes.
plone/app/discussion/tests/test_events.py:155:13: S001 found module formatter
plone/app/discussion/tests/test_events.py:175:13: S001 found module formatter
plone/app/discussion/tests/test_contentrules.py:4:1: I001 isort found an import in the wrong position
plone/app/discussion/tests/test_contentrules.py:32:44: C812 missing trailing comma
plone/app/discussion/tests/test_contentrules.py:40:24: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:41:35: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:42:31: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:43:32: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:55:38: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:60:40: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:61:42: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:65:43: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:66:45: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:70:49: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:71:51: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:75:46: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:76:48: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:98:13: S001 found module formatter
plone/app/discussion/tests/test_contentrules.py:102:38: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:103:34: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:104:35: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:113:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:113:31: C812 missing trailing comma
plone/app/discussion/tests/test_contentrules.py:121:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:121:33: C812 missing trailing comma
plone/app/discussion/tests/test_contentrules.py:123:40: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:129:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:129:36: C812 missing trailing comma
plone/app/discussion/tests/test_contentrules.py:131:43: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:137:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:137:42: C812 missing trailing comma
plone/app/discussion/tests/test_contentrules.py:139:49: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:145:18: Q000 Remove bad quotes.
plone/app/discussion/tests/test_contentrules.py:145:39: C812 missing trailing comma
plone/app/discussion/tests/test_contentrules.py:147:46: Q000 Remove bad quotes.
plone/app/discussion/tests/test_robot.py:0:1: C101 Coding magic comment not found
plone/app/discussion/tests/test_robot.py:25:57: 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.


What is the scope of `HibernateDatabaseGrantProvider` ? Is it a singleton?  If so, you should make your session cache a static ThreadLocal<> field, or use Guava's cache to ensure thread-safety