{"id":35,"date":"2008-10-06T16:17:00","date_gmt":"2008-10-06T22:17:00","guid":{"rendered":"http:\/\/userharmony.com\/blog\/?p=35"},"modified":"2008-10-06T16:17:00","modified_gmt":"2008-10-06T22:17:00","slug":"let-your-code-automatically-open-defects","status":"publish","type":"post","link":"https:\/\/userharmony.com\/blog\/2008\/10\/06\/let-your-code-automatically-open-defects\/","title":{"rendered":"Let your code automatically open defects"},"content":{"rendered":"<p>Opening defects is time consuming. So why not let the code automatically enter defects in your bug tracking system. Of course, this means your bug tracking software should provide ability to open defects via APIs, via Emails, or any other programmatic means. <\/p>\n<p>Second, all untrapped exceptions must be logged as defects automatically by the exception handling code. Now how do you determine if the same defect is already logged and prevent a flood of the such defects?<\/p>\n<p>One easy way to uniquely identify a defect is Line Number of the Code. Every time an exception occurs it originates at a certain line of code in a certain class. Thats the unique identification. <\/p>\n<p>Before opening a new defect, the bug tracker should check if a defect exists with same class and same line number. If it does exist, then the new event gets appended to the existing defect instead of creating a new one. <\/p>\n<p>Want a bug tracking\/project tracking software that already does all of the above? Try <a href=\"http:\/\/www.fogcreek.com\/FogBugz\/\" rel=\"nofollow\">FogBugz.<\/a> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Opening defects is time consuming. So why not let the code automatically enter defects in your bug tracking system. Of course, this means your bug tracking software should provide ability to open defects via APIs, via Emails, or any other programmatic means. Second, all untrapped exceptions must be logged as defects automatically by the exception [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-35","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/userharmony.com\/blog\/wp-json\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/userharmony.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/userharmony.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/userharmony.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/userharmony.com\/blog\/wp-json\/wp\/v2\/comments?post=35"}],"version-history":[{"count":0,"href":"https:\/\/userharmony.com\/blog\/wp-json\/wp\/v2\/posts\/35\/revisions"}],"wp:attachment":[{"href":"https:\/\/userharmony.com\/blog\/wp-json\/wp\/v2\/media?parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/userharmony.com\/blog\/wp-json\/wp\/v2\/categories?post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/userharmony.com\/blog\/wp-json\/wp\/v2\/tags?post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}