{"id":27060,"date":"2015-03-30T17:07:28","date_gmt":"2015-03-30T16:07:28","guid":{"rendered":"https:\/\/artigianodelsoftware.wordpress.com\/?p=27060"},"modified":"2015-03-30T17:07:28","modified_gmt":"2015-03-30T16:07:28","slug":"fisheye-crucible-esempio-di-una-code-review","status":"publish","type":"post","link":"https:\/\/artigianodelsoftware.it\/blog\/2015\/03\/30\/fisheye-crucible-esempio-di-una-code-review\/","title":{"rendered":"FishEye &#038; Crucible &#8211; Esempio di una Code Review"},"content":{"rendered":"<div class=\"pdfprnt-buttons pdfprnt-buttons-post pdfprnt-top-right\"><a href=\"javascript: imageToPdf()\" class=\"pdfprnt-button pdfprnt-button-pdf\" target=\"_self\"><img src=\"https:\/\/artigianodelsoftware.it\/blog\/wp-content\/plugins\/pdf-print\/images\/pdf.png\" alt=\"image_pdf\" title=\"Visualizza PDF\" \/><\/a><a href=\"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/27060?print=print\" class=\"pdfprnt-button pdfprnt-button-print\" target=\"_blank\"><\/a><\/div><blockquote>\n<h1>Code Review<\/h1>\n<\/blockquote>\n<p>In questo post, vedremo un esempio di utilizzo di FishEye e di Crucible, per realizzare una Code Review.<\/p>\n<p><a href=\"https:\/\/ersanjeevyadav.files.wordpress.com\/2012\/12\/peer-review-resized-600_jpg.png?w=300&amp;h=182\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/ersanjeevyadav.files.wordpress.com\/2012\/12\/peer-review-resized-600_jpg.png?w=300&amp;h=182\" alt=\"\" width=\"300\" height=\"183\" \/><\/a><\/p>\n<blockquote>\n<h1>Definizioni<\/h1>\n<\/blockquote>\n<p>Partiamo, come sempre, dalle definizioni. La prima definizione che segnalo \u00e8 quella di <a href=\"http:\/\/en.wikipedia.org\/wiki\/Code_review\" target=\"_blank\">wikipedia<\/a>, che ritengo abbastanza completa (in inglese). \u00a0Una Code Review fondamentalmente \u00e8 una analisi critica del codice, il cui obbiettivo \u00e8 quello di determinare eventuali problemi o errori o possibili punti in cui si pu\u00f2 migliorare il codice.<img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"http:\/\/www.semplifica.com\/testdilogica.it\/wp-content\/uploads\/2011\/02\/deduzione-e-induzione.jpg\" alt=\"\" width=\"332\" height=\"235\" \/><\/p>\n<p>Mi permetto di evidenziare la parola\u00a0<em><strong>eventuali<\/strong><\/em> , in quanto non \u00e8 detto che quanto rilevato in una Code Review sia effettivamente un errore. Infatti (faccio appello alla mia esperienza), la soluzione adottata potrebbe essere dovuta alla situazione del momento o ad un particolare workaround adottato per poter risolvere il problema in una determinata emergenza. L&#8217;analisi deve essere critica ma deve essere fatta con giudizio e sopratutto con la &#8230;. testa :-D.<\/p>\n<p>&nbsp;<\/p>\n<blockquote>\n<h1>\u00a0Iniziamo<\/h1>\n<\/blockquote>\n<p>Gi\u00e0 nei precedenti post dedicati a <a href=\"https:\/\/artigianodelsoftware.wordpress.com\/category\/atlassian\/fisheye\/\" target=\"_blank\">FishEye<\/a>, abbiamo visto come \u00e8 possibile poter navigare il codice direttamente da interfaccia Web.<\/p>\n<p><a href=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/0\/imageBinary\/crucible-code-review-comments.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/0\/imageBinary\/crucible-code-review-comments.png\" alt=\"\" width=\"654\" height=\"523\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>I primi passi per poter iniziare una code Review sono i seguenti. Primo passo in assoluto \u00e8 quello di creare un progetto all&#8217;interno di <strong><em>Crucible<\/em><\/strong>. Premessa: Occorre disporre dei privilegi di amministratore \ud83d\ude42<\/p>\n<p>Dal <em>Cog\u00a0<\/em>men\u00f9, come indicato in figura:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"  wp-image-73137 aligncenter\" src=\"https:\/\/artigianodelsoftware.files.wordpress.com\/2015\/03\/cog.png\" alt=\"Cog\" width=\"51\" height=\"49\" \/><\/p>\n<p>selezionare\u00a0<em>Administration<\/em>. Quindi, nella sezione\u00a0<em>Project Settings<\/em>, selezionare\u00a0<em>Projects<\/em>. Quindi Dare <em>New Project.<\/em><\/p>\n<p><a href=\"https:\/\/confluence.atlassian.com\/download\/attachments\/298977308\/crucible-addproject.png?version=1&amp;modificationDate=1285568371581&amp;api=v2\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" style=\"border:1px solid #000000;\" src=\"https:\/\/confluence.atlassian.com\/download\/attachments\/298977308\/crucible-addproject.png?version=1&amp;modificationDate=1285568371581&amp;api=v2\" alt=\"\" width=\"640\" height=\"782\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Se si conosce come definire i progetti sotto\u00a0<strong><em>JIRA<\/em><\/strong>, allora risulter\u00e0 molto semplice gestire i progetti sotto <strong><em>Crucible<\/em><\/strong>. La logica \u00e8 la medesima. Si definisce una <em>KEY<\/em>, utilizzata per numerare le segnalazioni di Code Review.<\/p>\n<p>Una volta definito il progetto, possiamo andare ad iniziare la Code Review. Come? Semplicemente andando a spulciarci il codice e andando a controllarlo.<\/p>\n<p><a href=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/00\/imageBinary\/crucible-code-review-create.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/00\/imageBinary\/crucible-code-review-create.png\" alt=\"\" width=\"603\" height=\"483\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Semplicemente andiamo alla riga di codice che &#8230; attira la nostra curiosit\u00e0 \ud83d\ude42 e con un semplice click del mouse, andiamo ad inserire il nostro commento. Il codice non sar\u00e0 modificato: tutte queste informazioni saranno inserite nel db di <strong><em>FishEye<\/em><\/strong>. In questo modo possiamo iniziare una discussione che pu\u00f2 terminare con una richiesta di intervento, esattamente come viene fatto per <em><strong>JIRA<\/strong><\/em>.<\/p>\n<p><a href=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/04\/imageBinary\/crucible-formal-code-review.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/04\/imageBinary\/crucible-formal-code-review.png\" alt=\"\" width=\"613\" height=\"490\" \/><\/a><\/p>\n<p>Da queste richieste \u00e8 possibile andare a generare la richiesta di intervento sotto JIRA. Se abbiamo eseguito le operazioni di\u00a0<em>Application Link<\/em> tra <strong><em>JIRA<\/em> <\/strong>e <em><strong>FishEye<\/strong><\/em>, allora possiamo anche eseguire questa operazione, assegnando la modifica del codice.<\/p>\n<p><a href=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/07\/imageBinary\/jira-crucible-issues-code-review.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/07\/imageBinary\/jira-crucible-issues-code-review.png\" alt=\"\" width=\"699\" height=\"559\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Tutte le attivit\u00e0 sotto\u00a0<em><strong>Crucible<\/strong><\/em> sono comunque tracciate:<\/p>\n<p><a href=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/05\/imageBinary\/crucible-create-review-activity.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/05\/imageBinary\/crucible-create-review-activity.png\" alt=\"\" width=\"683\" height=\"546\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Ogni singolo commento viene tracciato e, in caso di necessit\u00e0, \u00e8 possibile risalire all&#8217;iter che ha portato alla modifica oppure alla mancata modifica del sorgente.<\/p>\n<p><a href=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/06\/imageBinary\/crucible-inbox.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"https:\/\/www.atlassian.com\/en\/wac\/software\/crucible\/overview\/screenshot-tour\/featureItems\/0\/featureItems\/06\/imageBinary\/crucible-inbox.png\" alt=\"\" width=\"740\" height=\"592\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Tramite apposite Dashboard, abbiamo la possibilit\u00e0 di avere sempre la situazione completa delle Reviews in corso, quali chiuse, quali sono sfociate in segnalazioni <em><strong>JIRA<\/strong><\/em>, etc. \ud83d\ude42<\/p>\n<blockquote>\n<h1>Conclusioni<\/h1>\n<\/blockquote>\n<p>Abbiamo visto come lavorare sotto <em>Crucible<\/em>, come gestire una Code Review e come poter sfruttare al meglio\u00a0<em>FishEye<\/em> e come intergrarlo con i vari applicativi della\u00a0<em>Atlassian<\/em>. Nei prossimi post andremo a visionare altre funzionalit\u00e0.<\/p>\n<blockquote>\n<h1>Riferimenti<\/h1>\n<\/blockquote>\n<p>Manualistica:<\/p>\n<ul>\n<li><a href=\"https:\/\/confluence.atlassian.com\/display\/CRUCIBLE\/Crucible+Documentation+Home\" target=\"_blank\">Crucible Home Documentation<\/a><\/li>\n<li><a href=\"https:\/\/www.atlassian.com\/software\/crucible\/overview\" target=\"_blank\">Crucible overview<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<div class=\"clearfix\"><span class='ldc-ul_cont' onclick=\"alter_ul_post_values(this,'27060','like')\" >Likes<img src=\"https:\/\/artigianodelsoftware.it\/blog\/wp-content\/plugins\/like-dislike-counter-for-posts-pages-and-comments\/images\/up.png\" \/>(<span>0<\/span>)<\/span><span class='ldc-ul_cont' onclick=\"alter_ul_post_values(this,'27060','dislike')\" >Dislikes<img src=\"https:\/\/artigianodelsoftware.it\/blog\/wp-content\/plugins\/like-dislike-counter-for-posts-pages-and-comments\/images\/down.png\" \/>(<span>0<\/span>)<\/span><\/div>","protected":false},"excerpt":{"rendered":"<p>Code Review In questo post, vedremo un esempio di utilizzo di FishEye e di Crucible, per realizzare una Code Review. Definizioni Partiamo, come sempre, dalle definizioni. La prima definizione che segnalo \u00e8 quella di wikipedia, che ritengo abbastanza completa (in<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[3,4,13,14],"tags":[34,35,70,82],"_links":{"self":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/27060"}],"collection":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/comments?post=27060"}],"version-history":[{"count":0,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/27060\/revisions"}],"wp:attachment":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/media?parent=27060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/categories?post=27060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/tags?post=27060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}