{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,12]],"date-time":"2026-06-12T10:08:54Z","timestamp":1781258934312,"version":"3.54.1"},"reference-count":38,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2018,3,26]],"date-time":"2018-03-26T00:00:00Z","timestamp":1522022400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Commun. ACM"],"published-print":{"date-parts":[[2018,3,26]]},"abstract":"<jats:p>For a static analysis project to succeed, developers must feel they benefit from and enjoy using it.<\/jats:p>","DOI":"10.1145\/3188720","type":"journal-article","created":{"date-parts":[[2018,3,27]],"date-time":"2018-03-27T12:06:45Z","timestamp":1522152405000},"page":"58-66","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":206,"title":["Lessons from building static analysis tools at Google"],"prefix":"10.1145","volume":"61","author":[{"given":"Caitlin","family":"Sadowski","sequence":"first","affiliation":[{"name":"Google Inc., Mountain View, CA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Edward","family":"Aftandilian","sequence":"additional","affiliation":[{"name":"Google, Inc., Mountain View, CA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Alex","family":"Eagle","sequence":"additional","affiliation":[{"name":"Google Inc., Mountain View, CA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Liam","family":"Miller-Cushon","sequence":"additional","affiliation":[{"name":"Google Inc., Mountain View, CA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Ciera","family":"Jaspan","sequence":"additional","affiliation":[{"name":"Google Inc., Mountain View, CA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2018,3,26]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/SCAM.2012.28"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2008.130"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1831708.1831738"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1218063.1217943"},{"key":"e_1_2_1_5_1","unstructured":"Bazel; http:\/\/www.bazel.io  Bazel; http:\/\/www.bazel.io"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1646353.1646374"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-17524-9_1"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806596.1806638"},{"key":"e_1_2_1_9_1","unstructured":"The Checker Framework; https:\/\/checkerframework.org  The Checker Framework; https:\/\/checkerframework.org"},{"key":"e_1_2_1_10_1","unstructured":"Checkstyle Java Linter; http:\/\/checkstyle.sourceforge.net\/  Checkstyle Java Linter; http:\/\/checkstyle.sourceforge.net\/"},{"key":"e_1_2_1_11_1","unstructured":"Clang Thread Safety Analysis; http:\/\/clang.llvm.org\/docs\/ThreadSafetyAnalysis.html  Clang Thread Safety Analysis; http:\/\/clang.llvm.org\/docs\/ThreadSafetyAnalysis.html"},{"key":"e_1_2_1_12_1","unstructured":"ClangTidy; http:\/\/clang.llvm.org\/extra\/clang-tidy.html  ClangTidy; http:\/\/clang.llvm.org\/extra\/clang-tidy.html"},{"key":"e_1_2_1_13_1","volume-title":"Proceedings of the European Symposium on Programming (Edinburgh, Scotland, Apr. 2--10)","author":"Cousot P.","year":"2005"},{"key":"e_1_2_1_14_1","unstructured":"Dynamic Sanitizer Tools; https:\/\/github.com\/google\/sanitizers  Dynamic Sanitizer Tools; https:\/\/github.com\/google\/sanitizers"},{"key":"e_1_2_1_15_1","unstructured":"Error Prone; http:\/\/errorprone.info  Error Prone; http:\/\/errorprone.info"},{"key":"e_1_2_1_16_1","unstructured":"FindBugs; http:\/\/findbugs.sourceforge.net\/  FindBugs; http:\/\/findbugs.sourceforge.net\/"},{"key":"e_1_2_1_17_1","unstructured":"Go vet; https:\/\/golang.org\/cmd\/vet  Go vet; https:\/\/golang.org\/cmd\/vet"},{"key":"e_1_2_1_18_1","unstructured":"Golint; https:\/\/github.com\/golang\/lint  Golint; https:\/\/github.com\/golang\/lint"},{"key":"e_1_2_1_19_1","unstructured":"Grammatech; https:\/\/resources.grammatech.com\/medical  Grammatech; https:\/\/resources.grammatech.com\/medical"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/11817963_33"},{"key":"e_1_2_1_21_1","unstructured":"Guava: Google Core Libraries for Java 1.6+; https:\/\/code.google.com\/p\/guava-libraries\/  Guava: Google Core Libraries for Java 1.6+; https:\/\/code.google.com\/p\/guava-libraries\/"},{"key":"e_1_2_1_22_1","unstructured":"Gupta P. Ivey M. and Penix J. Testing at the speed and scale of Google. Google Engineering Tools Blog 2011; http:\/\/google-engtools.blogspot.com\/2011\/06\/testing-at-speed-and-scale-of-google.html  Gupta P. Ivey M. and Penix J. Testing at the speed and scale of Google. Google Engineering Tools Blog 2011; http:\/\/google-engtools.blogspot.com\/2011\/06\/testing-at-speed-and-scale-of-google.html"},{"key":"e_1_2_1_23_1","author":"Hacker","year":"2016","journal-title":"News. Twitter outage report"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/1052883.1052895"},{"key":"e_1_2_1_25_1","unstructured":"Infer; http:\/\/fbinfer.com\/  Infer; http:\/\/fbinfer.com\/"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486877"},{"key":"e_1_2_1_27_1","unstructured":"Klein D.V. Betser D.M. and Monroe M.G. Making 'push on green' a reality: Issues and actions involved in maintaining a production service. ;login: 39 5 (2014) 26--32.  Klein D.V. Betser D.M. and Monroe M.G. Making 'push on green' a reality: Issues and actions involved in maintaining a production service. ;login: 39 5 (2014) 26--32."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-21668-3_13"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2004.1293079"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486838"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2398857.2384626"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/2854146"},{"key":"e_1_2_1_33_1","unstructured":"Protocol buffers; http:\/\/code.google.com\/p\/protobuf\/  Protocol buffers; http:\/\/code.google.com\/p\/protobuf\/"},{"key":"e_1_2_1_34_1","unstructured":"Pylint Python Linter; http:\/\/www.pylint.org\/  Pylint Python Linter; http:\/\/www.pylint.org\/"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.5555\/2818754.2818828"},{"key":"e_1_2_1_36_1","volume-title":"Synopsys","author":"Synopsys Editorial Team","year":"2014"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/2541348.2541355"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSM.2013.93"}],"container-title":["Communications of the ACM"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3188720","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3188720","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T21:41:19Z","timestamp":1750282879000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3188720"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,3,26]]},"references-count":38,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2018,3,26]]}},"alternative-id":["10.1145\/3188720"],"URL":"https:\/\/doi.org\/10.1145\/3188720","relation":{},"ISSN":["0001-0782","1557-7317"],"issn-type":[{"value":"0001-0782","type":"print"},{"value":"1557-7317","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,3,26]]},"assertion":[{"value":"2018-03-26","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}