{"id":428172,"date":"2017-09-07T00:00:06","date_gmt":"2017-09-07T07:00:06","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?post_type=msr-research-item&#038;p=428172"},"modified":"2022-01-03T11:27:58","modified_gmt":"2022-01-03T19:27:58","slug":"dynamic-data-collection-diagnostics-improving-javascript-applications","status":"publish","type":"msr-video","link":"https:\/\/www.microsoft.com\/en-us\/research\/video\/dynamic-data-collection-diagnostics-improving-javascript-applications\/","title":{"rendered":"Dynamic Data Collection and Diagnostics for Improving JavaScript Applications"},"content":{"rendered":"<p>JavaScript is becoming one of the most popular languages, yet it is known for its suboptimal design. To effectively use JavaScript despite its design flaws, lightweight static analyses, implemented in &#8220;lint-like&#8221; tools, are widely used to detect potential issues in JavaScript code, but are of limited use because of the language&#8217;s dynamic nature. My work tackles this challenge via dynamic analysis. Specifically, I developed async-track and extended Jalangi, both of which are instrumentation infrastructures used in industry for tracking various kinds of runtime information. In this talk, I will first present our instrumentation frameworks and show how we dynamically pinpoint issues in real-world applications. We detected dozens of bugs in the world&#8217;s most popular websites, found hundreds of security issues in npm packages, and pinpointed JIT-unfriendly code that prevents the runtime to perform profitable optimization in well-known benchmarks. Our generic frameworks also facilitate runtime data collection for other research areas. In the second part of my talk, I will share some of the lessons I learned in mining software repositories and statistical bug localization based on data collected via instrumentation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JavaScript is becoming one of the most popular languages, yet it is known for its suboptimal design. To effectively use JavaScript despite its design flaws, lightweight static analyses, implemented in &#8220;lint-like&#8221; tools, are widely used to detect potential issues in JavaScript code, but are of limited use because of the language&#8217;s dynamic nature. My work [&hellip;]<\/p>\n","protected":false},"featured_media":428493,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr_hide_image_in_river":0,"footnotes":""},"research-area":[13563,13560],"msr-video-type":[],"msr-locale":[268875],"msr-post-option":[],"msr-session-type":[],"msr-impact-theme":[],"msr-pillar":[],"msr-episode":[],"msr-research-theme":[],"class_list":["post-428172","msr-video","type-msr-video","status-publish","has-post-thumbnail","hentry","msr-research-area-data-platform-analytics","msr-research-area-programming-languages-software-engineering","msr-locale-en_us"],"msr_download_urls":"","msr_external_url":"https:\/\/youtu.be\/1P7CMIdjzE4","msr_secondary_video_url":"","msr_video_file":"","_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/428172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-video"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/428172\/revisions"}],"predecessor-version":[{"id":428490,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/428172\/revisions\/428490"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media\/428493"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=428172"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=428172"},{"taxonomy":"msr-video-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video-type?post=428172"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=428172"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=428172"},{"taxonomy":"msr-session-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-session-type?post=428172"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=428172"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=428172"},{"taxonomy":"msr-episode","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-episode?post=428172"},{"taxonomy":"msr-research-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-theme?post=428172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}