@davisagli Jenkins CI reporting about code analysis
See the full report here: http://jenkins.plone.org/job/package-plone.app.caching/2/violations
```
plone/app/caching/lookup.py:57:1: C901 'ContentItemLookup.__call__' is too complex (12)
plone/app/caching/testing.py:49:9: D001 found xmlconfig.file( replace it with self.loadZCML(
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/browser/controlpanel.py:88:1: C901 'ControlPanel.publishTraverse' is too complex (11)
plone/app/caching/browser/controlpanel.py:170:1: C901 'ControlPanel.processSave' is too complex (33)
plone/app/caching/browser/controlpanel.py:561:1: C901 'Purge.processPurge' is too complex (19)
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:261:15: Q000 Remove bad quotes.
plone/app/caching/browser/edit.py:285:15: Q000 Remove bad quotes.
plone/app/caching/operations/default.py:142:1: C901 'BaseCaching.modifyResponse' is too complex (11)
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:362:1: C901 'isModified' is too complex (14)
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: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: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_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: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:172:35: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:173:41: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:175:13: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:206:60: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:222:60: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:238:60: Q000 Remove bad quotes.
plone/app/caching/tests/test_integration.py:254:60: Q000 Remove bad quotes.
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_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: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_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_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_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:1091:38: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1104:38: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1129:38: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1142:38: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1336:18: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1350:18: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1379:18: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1415:18: Q000 Remove bad quotes.
plone/app/caching/tests/test_operation_utils.py:1448:18: Q000 Remove bad quotes.
```
Follow [these instructions](https://github.com/plone/jenkins.plone.org/blob/master/docs/source/run-qa-on-package.rst) to reproduce it locally.