@b4oshany Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.caching/64/violations
```
plone/app/caching/interfaces.py:41:17: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:42:23: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:43:43: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:44:46: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:48:17: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:49:23: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:50:43: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:51:46: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:55:17: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:57:13: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:58:45: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:63:17: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:65:13: Q000 Remove bad quotes.
plone/app/caching/interfaces.py:66:45: Q000 Remove bad quotes.
plone/app/caching/lookup.py:57:5: C901 'ContentItemLookup.__call__' is too complex (12)
plone/app/caching/lookup.py:105:21: C812 missing trailing comma
plone/app/caching/purge.py:180: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/testing.py:70:39: C812 missing trailing comma
plone/app/caching/testing.py:74:38: C812 missing trailing comma
plone/app/caching/utils.py:63:11: T000 Todo note found.
plone/app/caching/browser/controlpanel.py:38:12: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:89:5: C901 'ControlPanel.publishTraverse' is too complex (11)
plone/app/caching/browser/controlpanel.py:130:30: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:167:52: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:168:22: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:171:5: C901 'ControlPanel.processSave' is too complex (33)
plone/app/caching/browser/controlpanel.py:230:43: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:236:48: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:239:44: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:241:78: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:242:26: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:265:40: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:271:72: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:272:26: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:286:44: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:297:54: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:306:54: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:313:43: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:318:54: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:343:36: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:348:19: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:372:73: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:383:14: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:394:14: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:443:48: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:533:42: C812 missing trailing comma
plone/app/caching/browser/controlpanel.py:562:5: C901 'Purge.processPurge' is too complex (19)
plone/app/caching/browser/edit.py:69:21: C812 missing trailing comma
plone/app/caching/browser/edit.py:208:11: T000 Todo note found.
plone/app/caching/browser/edit.py:229:22: Q000 Remove bad quotes.
plone/app/caching/browser/edit.py:233:22: Q000 Remove bad quotes.
plone/app/caching/browser/edit.py:253:44: C812 missing trailing comma
plone/app/caching/browser/edit.py:254:14: C812 missing trailing comma
plone/app/caching/browser/edit.py:261:15: Q000 Remove bad quotes.
plone/app/caching/browser/edit.py:264:44: C812 missing trailing comma
plone/app/caching/browser/edit.py:265:14: C812 missing trailing comma
plone/app/caching/browser/edit.py:271:21: C812 missing trailing comma
plone/app/caching/browser/edit.py:285:15: Q000 Remove bad quotes.
plone/app/caching/browser/edit.py:288:44: C812 missing trailing comma
plone/app/caching/browser/edit.py:289:14: C812 missing trailing comma
plone/app/caching/operations/default.py:76:59: C812 missing trailing comma
plone/app/caching/operations/default.py:120:42: C812 missing trailing comma
plone/app/caching/operations/default.py:137:32: C815 missing trailing comma in Python 3.5+
plone/app/caching/operations/default.py:142:5: C901 'BaseCaching.modifyResponse' is too complex (11)
plone/app/caching/operations/default.py:173:30: C812 missing trailing comma
plone/app/caching/operations/default.py:175:15: T000 Todo note found.
plone/app/caching/operations/default.py:195:51: C812 missing trailing comma
plone/app/caching/operations/default.py:212:22: C812 missing trailing comma
plone/app/caching/operations/default.py:234:51: C812 missing trailing comma
plone/app/caching/operations/default.py:287:58: C812 missing trailing comma
plone/app/caching/operations/default.py:313:21: C812 missing trailing comma
plone/app/caching/operations/default.py:339:15: Q000 Remove bad quotes.
plone/app/caching/operations/default.py:340:21: Q000 Remove bad quotes.
plone/app/caching/operations/default.py:341:21: Q000 Remove bad quotes.
plone/app/caching/operations/utils.py:59:14: C812 missing trailing comma
plone/app/caching/operations/utils.py:79:22: C812 missing trailing comma
plone/app/caching/operations/utils.py:90:22: C812 missing trailing comma
plone/app/caching/operations/utils.py:99:38: C812 missing trailing comma
plone/app/caching/operations/utils.py:153:14: C812 missing trailing comma
plone/app/caching/operations/utils.py:166:41: C812 missing trailing comma
plone/app/caching/operations/utils.py:192:14: C812 missing trailing comma
plone/app/caching/operations/utils.py:225:63: C812 missing trailing comma
plone/app/caching/operations/utils.py:235:45: C812 missing trailing comma
plone/app/caching/operations/utils.py:272:15: 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/operations/utils.py:751:45: C812 missing trailing comma
plone/app/caching/operations/utils.py:802:17: C812 missing trailing comma
plone/app/caching/tests/test_etags.py:54:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_etags.py:83:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_etags.py:112:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_etags.py:144:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_etags.py:198:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_etags.py:293:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_etags.py:319:48: Q000 Remove bad quotes.
plone/app/caching/tests/test_etags.py:343:48: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:88:35: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:89:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:97:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:98:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:100:13: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:102:24: C812 missing trailing comma
plone/app/caching/tests/test_integration.py:112:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:113:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:120:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:121:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:130:35: C812 missing trailing comma
plone/app/caching/tests/test_integration.py:173:35: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:174:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:176:13: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:178:24: C812 missing trailing comma
plone/app/caching/tests/test_integration.py:191:37: C812 missing trailing comma
plone/app/caching/tests/test_integration.py:207:60: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:223:60: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:239:60: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:255:60: Q000 Remove bad quotes.
plone/app/caching/tests/test_lookup.py:259:51: C812 missing trailing comma
plone/app/caching/tests/test_lookup.py:260:14: C812 missing trailing comma
plone/app/caching/tests/test_operation_default.py:46:35: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_default.py:47:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_default.py:65:46: C812 missing trailing comma
plone/app/caching/tests/test_operation_parameters.py:43:35: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_parameters.py:44:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_parameters.py:49:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_parameters.py:50:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_parameters.py:55:24: C812 missing trailing comma
plone/app/caching/tests/test_operation_utils.py:84:76: C812 missing trailing comma
plone/app/caching/tests/test_operation_utils.py:290:22: C812 missing trailing comma
plone/app/caching/tests/test_operation_utils.py:304:56: C812 missing trailing comma
plone/app/caching/tests/test_operation_utils.py:309:56: C812 missing trailing comma
plone/app/caching/tests/test_operation_utils.py:412:55: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:414:26: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:445:45: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:447:26: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:480:45: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:482:26: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:505:26: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:524:26: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:740:43: E127 continuation line over-indented for visual indent
plone/app/caching/tests/test_operation_utils.py:989:39: C812 missing trailing comma
plone/app/caching/tests/test_operation_utils.py:1004:66: C812 missing trailing comma
plone/app/caching/tests/test_operation_utils.py:1012:39: C812 missing trailing comma
plone/app/caching/tests/test_operation_utils.py:1090:38: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1103:38: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1128:38: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1141:38: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1154:41: C812 missing trailing comma
plone/app/caching/tests/test_operation_utils.py:1155:14: C812 missing trailing comma
plone/app/caching/tests/test_operation_utils.py:1335:18: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1349:18: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1378:18: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1414:18: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1447:18: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1527:43: C812 missing trailing comma
plone/app/caching/tests/test_profile_with_caching_proxy.py:43:26: C812 missing trailing comma
plone/app/caching/tests/test_profile_with_caching_proxy.py:103:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_with_caching_proxy.py:108:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_with_caching_proxy.py:109:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_with_caching_proxy.py:114:24: C812 missing trailing comma
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:229:26: S001 found module formatter
plone/app/caching/tests/test_profile_with_caching_proxy.py:246:26: S001 found module formatter
plone/app/caching/tests/test_profile_with_caching_proxy.py:266:26: S001 found module formatter
plone/app/caching/tests/test_profile_with_caching_proxy.py:290:24: C812 missing trailing comma
plone/app/caching/tests/test_profile_with_caching_proxy.py:418:35: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_with_caching_proxy.py:419:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_with_caching_proxy.py:424:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_with_caching_proxy.py:425:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_without_caching_proxy.py:40:26: C812 missing trailing comma
plone/app/caching/tests/test_profile_without_caching_proxy.py:94:35: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_without_caching_proxy.py:95:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_without_caching_proxy.py:100:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_without_caching_proxy.py:101:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_without_caching_proxy.py:106:24: C812 missing trailing comma
plone/app/caching/tests/test_profile_without_caching_proxy.py:291:24: C812 missing trailing comma
plone/app/caching/tests/test_profile_without_caching_proxy.py:379:14: C812 missing trailing comma
plone/app/caching/tests/test_profile_without_caching_proxy.py:399:14: C812 missing trailing comma
plone/app/caching/tests/test_profile_without_caching_proxy.py:413:35: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_without_caching_proxy.py:414:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_without_caching_proxy.py:419:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_profile_without_caching_proxy.py:420:47: Q000 Remove bad quotes.
plone/app/caching/tests/test_purge.py:200:44: C812 missing trailing comma
plone/app/caching/tests/test_purge.py:214:28: C812 missing trailing comma
plone/app/caching/tests/test_purge.py:216:44: C812 missing trailing comma
plone/app/caching/tests/test_purge.py:365:29: C812 missing trailing comma
plone/app/caching/tests/test_purge.py:367:44: C812 missing trailing comma
plone/app/caching/tests/test_purge.py:399:37: C812 missing trailing comma
plone/app/caching/tests/test_purge.py:401:44: C812 missing trailing comma
plone/app/caching/tests/test_purge.py:451:75: 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.


@skurfer Jenkins CI reporting about code analysis
See the full report here: https://jenkins.plone.org/job/package-plone.app.caching/65/violations
```
plone/app/caching/lookup.py:57:5: C901 'ContentItemLookup.__call__' is too complex (12)
plone/app/caching/purge.py:184: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 (33)
plone/app/caching/browser/controlpanel.py:433:45: E231 missing whitespace after ':'
plone/app/caching/browser/controlpanel.py:433:80: E501 line too long (85 > 79 characters)
plone/app/caching/browser/controlpanel.py:562: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:76:59: C812 missing trailing comma
plone/app/caching/operations/default.py:137:32: C815 missing trailing comma in Python 3.5+
plone/app/caching/operations/default.py:142:5: C901 'BaseCaching.modifyResponse' is too complex (11)
plone/app/caching/operations/default.py:175:15: T000 Todo note found.
plone/app/caching/operations/default.py:234:51: C812 missing trailing comma
plone/app/caching/operations/default.py:287: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_purge.py:44: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.