{"id":1595,"date":"2017-09-15T22:04:22","date_gmt":"2017-09-15T19:04:22","guid":{"rendered":"https:\/\/gokhan-gokalp.com\/?p=1595"},"modified":"2017-11-18T16:38:34","modified_gmt":"2017-11-18T14:38:34","slug":"ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak","status":"publish","type":"post","link":"https:\/\/gokhan-gokalp.com\/tr\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/","title":{"rendered":"NDepend ile .NET Uygulamalar\u0131n\u0131n Kod Kalitesini Artt\u0131rmak"},"content":{"rendered":"<p>Merhaba arkada\u015flar.<\/p>\n<p>A\u00e7\u0131kcas\u0131 uzun zamand\u0131r projelerimizin kod kalitesini art\u0131rabilmek i\u00e7in olan,\u00a0<strong>kod analiz tool&#8217;lar\u0131\u00a0<\/strong>\u00fczerine bir blog post yazmay\u0131 planl\u0131yordum. Fakat bir t\u00fcrl\u00fc uygun zaman\u0131 bulamad\u0131m. Ge\u00e7ti\u011fimiz g\u00fcnlerde, <strong>.NET<\/strong> uygulamalar\u0131m\u0131z\u0131n kod kalitesini geni\u015f bir yelpazede ele alarak, s\u00fcrekli artt\u0131rabilmemize yard\u0131mc\u0131 olan <a href=\"http:\/\/www.ndepend.com\/\" target=\"_blank\" rel=\"noopener\"><em>NDepend<\/em> <\/a>tool&#8217;unun lisans&#8217;\u0131n\u0131, free bir \u015fekilde elde edebilme \u015fans\u0131n\u0131 yakalad\u0131m.<\/p>\n<blockquote><p>Bunun i\u00e7in <em>NDepend<\/em>&#8216;den\u00a0Patrick&#8217;e, ayr\u0131ca te\u015fekk\u00fcr ederim. :)<\/p><\/blockquote>\n<p>Bu sebeple, bu makale i\u00e7erisinde <em>NDepend<\/em> \u00fczerinden ilerleyerek, kod kalitemizi artt\u0131rabilmemiz i\u00e7in bizlere neler sundu\u011funu incelemek ve sizlerle payla\u015fmak istedim.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2017\/06\/better-code-quality.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1599 lazyload\" data-src=\"\/wp-content\/uploads\/2017\/06\/better-code-quality.png\" alt=\"\" width=\"440\" height=\"452\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/06\/better-code-quality.png 440w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/06\/better-code-quality-292x300.png 292w\" data-sizes=\"(max-width: 440px) 100vw, 440px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 440px; --smush-placeholder-aspect-ratio: 440\/452;\" \/><\/a><\/p>\n<h5>\u00d6ncelikle, Nedir Bu Kod Kalitesi?<\/h5>\n<p>Ka\u00e7\u0131n\u0131lmazd\u0131r ki bir \u00e7ok ortamda biz yaz\u0131l\u0131mc\u0131lar genelde, mevcut bir projenin <strong>devaml\u0131l\u0131\u011f\u0131n\u0131 s\u00fcrd\u00fcrebilmek<\/strong> ve <strong>yeni \u00f6zellikler<\/strong> ekleyebilmek ile u\u011fra\u015f\u0131r\u0131z. Bu nedenle mevcut projenin ba\u015f\u0131na ge\u00e7ti\u011fimiz zaman, genelde vaktiminizin bir \u00e7o\u011funu ise mevcut kodu anlamayabilmek i\u00e7in harcar\u0131z.\u00a0Kaliteli kod dedi\u011fimizde ise benim akl\u0131ma, di\u011fer yaz\u0131l\u0131mc\u0131lar taraf\u0131ndan <strong>anla\u015f\u0131lmas\u0131 kolay<\/strong> olan, <strong>mod\u00fcler<\/strong> bir \u015fekilde geli\u015ftirilmi\u015f, kolayl\u0131kla yeni \u00f6zellikler eklenebilen ve <strong>de\u011fi\u015ftirilebilen<\/strong> kod gelmektedir.<\/p>\n<p>A\u00e7\u0131kcas\u0131 kaliteli kodun tek bir sebebi oldu\u011funu s\u00f6ylemek, do\u011fru olmayacakt\u0131r. Yaz\u0131l\u0131mda kod kalitesini do\u011frudan veya dolayl\u0131 olarak etkileyen bir \u00e7ok fakt\u00f6r vard\u0131r. \u00d6rne\u011fin yaz\u0131l\u0131mc\u0131 g\u00f6z\u00fcnden bakarsak olaya, bir yaz\u0131l\u0131m geli\u015ftirirken <strong>hard-coded<\/strong> olarak ilerlemek yerine <strong>clean kod<\/strong> yazarak,\u00a0<strong>mod\u00fcler<\/strong> ve do\u011fru tasar\u0131m\u00a0<strong>prensipleri<\/strong> se\u00e7enerek uygun \u00e7\u00f6z\u00fcm\u00fc ger\u00e7ekle\u015ftirebilmek, kod kalitesini do\u011frudan etkileyebilmektedir. Bir ba\u015fka bak\u0131\u015f a\u00e7\u0131s\u0131 olan y\u00f6netici g\u00f6z\u00fcnden bakmak gerekirse de e\u011fer, bir yaz\u0131l\u0131m\u0131 geli\u015ftirirken izledi\u011fimiz <strong>yaz\u0131l\u0131m geli\u015ftirme metedolojisi<\/strong> de dolayl\u0131 olarak kod kalitesini etkileyebilen bir di\u011fer fakt\u00f6rlerden de birisidir. Bunlara ek olarak yaz\u0131l\u0131m\u0131n testlerinin yaz\u0131lmas\u0131, dok\u00fcmantasyonunun yap\u0131lmas\u0131 da bir di\u011fer \u00f6nemli unsurlar aras\u0131nda yer almaktad\u0131r.<\/p>\n<h5>Static Kod Analizi<\/h5>\n<p><a href=\"\/wp-content\/uploads\/2017\/06\/code-quality.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1597 lazyload\" data-src=\"\/wp-content\/uploads\/2017\/06\/code-quality.png\" alt=\"\" width=\"624\" height=\"183\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/06\/code-quality.png 624w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/06\/code-quality-300x88.png 300w\" data-sizes=\"(max-width: 624px) 100vw, 624px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 624px; --smush-placeholder-aspect-ratio: 624\/183;\" \/><\/a><\/p>\n<p>Kod kalitesini artt\u0131rabilmenin tek bir yolunun olmad\u0131\u011f\u0131n\u0131 s\u00f6ylemi\u015ftik. Evet, biz yaz\u0131l\u0131mc\u0131lar genelde kod yazma konusunda kendimize olduk\u00e7a \u00e7ok g\u00fcveniriz ve iyi de kod yazar\u0131z. :) Fakat, baz\u0131 durumlar kar\u015f\u0131s\u0131nda g\u00f6z\u00fcm\u00fczden ka\u00e7an baz\u0131\u00a0<strong>pain point<\/strong>&#8216;ler olabilir. Bu paint point&#8217;lere engel olabilmek ve kodumuzda belli bir \u00f6l\u00e7\u00fcde kaliteyi sa\u011flayabilmek i\u00e7in, <strong>static kod analiz tool<\/strong>&#8216;lar\u0131na bu noktada ihtiya\u00e7 duyar\u0131z. Static kod analiz tool&#8217;lar\u0131, \u00f6nceden belirledi\u011fimiz baz\u0131 rule&#8217;lara g\u00f6re bizim i\u00e7in kodumuzu incelerler ve kodumuzun kalitesini belirli bir d\u00fczeyde tutabilmek i\u00e7in bizlere baz\u0131 metrik&#8217;ler (<strong>Code Coverage<\/strong>, <strong>Cyclomatic Complexity<\/strong>, <strong>Cohesion<\/strong> vb.) sunarlar.<\/p>\n<p>Benim bu s\u00fcre\u00e7de en \u00e7ok sevdi\u011fim nokta ise, proje bazl\u0131 belirlenebilen rule&#8217;lara g\u00f6re <strong>Quality Gate<\/strong>&#8216;lerin\u00a0olu\u015fturulabilmesidir. Yani, biz hen\u00fcz source control \u00fczerine kodumuzu commit&#8217;lemeden \u00f6nce yazd\u0131\u011f\u0131m\u0131z kod, belirledi\u011fimiz kalite d\u00fczeyininin alt\u0131nda ise, commit&#8217;lememize olanak vermemeleridir. Bir \u00e7ok yaz\u0131l\u0131m geli\u015ftirme tak\u0131m\u0131 sevmese de, nihai olarak tak\u0131mlar i\u00e7erisindeki baz\u0131 tart\u0131\u015fmalara da son verebiliyor asl\u0131nda :)<\/p>\n<p>Bu yolda kullan\u0131labilecek bir \u00e7ok tool var. Ben bug\u00fcne kadar \u00e7al\u0131\u015ft\u0131\u011f\u0131m \u015firketlerde <em>StypeCop<\/em>,\u00a0<em>ReSharper<\/em> ve <em>Sonar<\/em> ile \u00e7al\u0131\u015ft\u0131m. Bu tool&#8217;lar\u0131n baz\u0131lar\u0131 <em>Visual Studio<\/em> ile integrated mode&#8217;da \u00e7al\u0131\u015fabilirken, baz\u0131lar\u0131 ise <strong>CI<\/strong> s\u00fcre\u00e7lerinde build&#8217;lere dahil edilebilmektedir. Bu makale i\u00e7erisinde ise analysis tool&#8217;lar\u0131ndan birisi olan\u00a0<em>NDepend<\/em>&#8216;i tan\u0131yaca\u011f\u0131z.<\/p>\n<h5>NDepend&#8217;i Tan\u0131yal\u0131m<\/h5>\n<p><a href=\"\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3.jpg\"><img decoding=\"async\" class=\"aligncenter wp-image-1776 lazyload\" data-src=\"\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3.jpg\" alt=\"\" width=\"790\" height=\"461\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3.jpg 1200w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3-300x175.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3-768x448.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3-1024x597.jpg 1024w\" data-sizes=\"(max-width: 790px) 100vw, 790px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 790px; --smush-placeholder-aspect-ratio: 790\/461;\" \/><\/a><\/p>\n<p><em>NDepend<\/em>, .NET uygulamalar\u0131m\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 \u00f6l\u00e7ebilmek, s\u00fcrekli olarak kod kalitesini iyile\u015ftirebilmek ve legacy uygulamalar\u0131m\u0131z \u00fczerindeki refactoring i\u015flemlerini kolayla\u015ft\u0131rabilmek i\u00e7in 2004 y\u0131l\u0131ndan bu yana olgunla\u015fm\u0131\u015f bir <em>Visual Studio<\/em> analysis \u00a0tool&#8217;udur. Hatta kendi de\u011fimleri ile .NET proje tak\u0131mlar\u0131 i\u00e7in bir &#8220;Swiss Army Knife&#8221; d\u0131r. :)<\/p>\n<p>Kendi website&#8217;lerinde olan a\u00e7\u0131klamalar\u0131na bakarsak ise:<\/p>\n<blockquote><p><em>NDepend<\/em> is a <em>Visual Studio<\/em> tool to manage complex .NET code and achieve high Code Quality.\u00a0With <em>NDepend<\/em>, software quality can be measured using Code Metrics, visualized using Graphs, Matrix and Treemaps, and enforced using standard and custom Rules. Hence the software design becomes concrete, code reviews are effective, large refactoring are easy and evolution is mastered.<\/p><\/blockquote>\n<p><em>NDepend\u00a0<\/em>commercial bir analysis tool&#8217;udur ve\u00a0ister <em>Visual Studio<\/em> integrated mode&#8217;da, isterseniz de standalone olarak kullanabilmek m\u00fcmk\u00fcnd\u00fcr. <em>NDepend<\/em> bize kendi tan\u0131mlar\u0131nda da oldu\u011fu gibi <strong>Code Metrics<\/strong>,\u00a0<strong>Matrix ve Treemaps<\/strong>, <strong>Standard ve Custom Rule<\/strong>&#8216;lar\u0131n\u0131 kullanarak, yaz\u0131l\u0131m kalitesini \u00f6l\u00e7\u00fcmleyebilmemize yard\u0131mc\u0131 olmaktad\u0131r. Ayr\u0131ca legacy uygulamalar\u0131m\u0131z i\u00e7in <strong>Smart Technical Debt Estimation<\/strong> \u00f6zelli\u011fini kullanarak, technical-debt&#8217;ini \u00f6l\u00e7\u00fcmleyebilmeye de olanak sa\u011flamaktad\u0131r.<\/p>\n<p>NDepend&#8217;in ba\u015fl\u0131ca \u00f6zelliklerine bakacak olursak:<\/p>\n<ul>\n<li>Code Rule and Code Query over LINQ (<em>CQLinq<\/em>) (Analysis i\u015flemlerini customize edebilmemiz i\u00e7in gayet kullan\u0131\u015fl\u0131. <i>C<\/i>ode base&#8217;imizi sorgulayabilmemiz i\u00e7in ise, <em>CQLinq<\/em> ad\u0131nda <em>LINQ<\/em> tabanl\u0131 bir dil sunmaktad\u0131r.)<\/li>\n<li>Smart Technical Debt Estimation<\/li>\n<li>Quality Gates (\u00d6zellikle kullan\u0131lmal\u0131)<\/li>\n<li>Code Quality (82 Code Metrics)<\/li>\n<li>Detect Dependency Cycles<\/li>\n<li>Complexity and Diagrams<\/li>\n<li>In-Depth Issues Management (Technical-debt&#8217;i s\u00fcrekli kontrol alt\u0131nda tutabilmek i\u00e7in gayet kullan\u0131\u015fl\u0131)<\/li>\n<\/ul>\n<p>gibi ba\u015fl\u0131ca \u00f6zellikleri bulunmaktad\u0131r.<\/p>\n<p>Dilerseniz \u015fimdi \u00f6rnek bir proje \u00fczerinde\u00a0standalone mode&#8217;da \u00e7al\u0131\u015ft\u0131rarak, bir ka\u00e7 analysis sonucuna bakal\u0131m.<\/p>\n<blockquote><p><strong>NOT<\/strong>: <em>NDepend<\/em>&#8216;in 14 g\u00fcnl\u00fck deneme s\u00fcr\u00fcm\u00fcn\u00fc\u00a0<a href=\"https:\/\/www.ndepend.com\/download\" target=\"_blank\" rel=\"noopener\"><em>buradan<\/em><\/a> indirebilirsiniz.<\/p><\/blockquote>\n<p>\u0130ndirmi\u015f oldu\u011fumuz paket i\u00e7erisinden &#8220;<em>VisualNDepend<\/em>&#8221; i a\u00e7al\u0131m.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2017\/09\/ndepend-start.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1764 lazyload\" data-src=\"\/wp-content\/uploads\/2017\/09\/ndepend-start.jpg\" alt=\"\" width=\"1341\" height=\"907\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-start.jpg 1341w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-start-300x203.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-start-768x519.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-start-1024x693.jpg 1024w\" data-sizes=\"(max-width: 1341px) 100vw, 1341px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1341px; --smush-placeholder-aspect-ratio: 1341\/907;\" \/><\/a><\/p>\n<p>Sol men\u00fcden &#8220;<em>Analyze VS solutions and VS projects<\/em>&#8221; se\u00e7ene\u011fine t\u0131klayal\u0131m ve buradan istedi\u011fimiz projeyi se\u00e7erek, analyze etmek istedi\u011fimiz assembly&#8217;leri se\u00e7elim. Bu i\u015flemin ard\u0131ndan, se\u00e7mi\u015f oldu\u011fumuz assembly&#8217;ler i\u00e7in\u00a0<em>NDepend<\/em> bir analyze i\u015flemi ger\u00e7ekle\u015ftirecek.<\/p>\n<p>Analyze i\u015fleminin sonucunu ise a\u015fa\u011f\u0131daki gibi bir dashboard \u00fczerinden bize sunmaktad\u0131r.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2017\/09\/ndepend-dashboard.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1765 lazyload\" data-src=\"\/wp-content\/uploads\/2017\/09\/ndepend-dashboard.jpg\" alt=\"\" width=\"2080\" height=\"1408\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-dashboard.jpg 2080w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-dashboard-300x203.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-dashboard-768x520.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-dashboard-1024x693.jpg 1024w\" data-sizes=\"(max-width: 2080px) 100vw, 2080px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 2080px; --smush-placeholder-aspect-ratio: 2080\/1408;\" \/><\/a><\/p>\n<p>Bu dashboard \u00fczerinden projede ne kadarl\u0131k bir debt&#8217;e sahibiz, quality gate&#8217;i ge\u00e7ebiliyor muyuz, method&#8217;lar\u0131m\u0131z\u0131n complexity&#8217;si ne durumda gibi sonu\u00e7lar\u0131 h\u0131zl\u0131ca g\u00f6rebilmekteyiz. Bunun yan\u0131nda farketti isek coverage k\u0131sm\u0131 \u015fuanda bo\u015f durumda. Coverage sonucu alabilmemiz i\u00e7in &#8220;<em>JetBrains DotCover<\/em>&#8220;, &#8220;<em>NCover<\/em>&#8221; ve &#8220;<em>Visual Studio<\/em>&#8221; gibi code coverage data&#8217;lar\u0131n\u0131 import etmemiz gerekmektedir.<\/p>\n<p>Dilerseniz neymi\u015f bu <strong>4 saat 23 dakika<\/strong> s\u00fcrecek olan <strong>%11.94<\/strong> k\u0131s\u0131ml\u0131k debt bir bakal\u0131m. Bunun i\u00e7in \u00f6ncelikle &#8220;<em>Rating<\/em>&#8221; k\u0131sm\u0131ndaki &#8220;<em>C<\/em>&#8221; sonucuna t\u0131klayal\u0131m.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2017\/09\/ndepend-debt-time.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1768 lazyload\" data-src=\"\/wp-content\/uploads\/2017\/09\/ndepend-debt-time.jpg\" alt=\"\" width=\"2080\" height=\"1408\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-debt-time.jpg 2080w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-debt-time-300x203.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-debt-time-768x520.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-debt-time-1024x693.jpg 1024w\" data-sizes=\"(max-width: 2080px) 100vw, 2080px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 2080px; --smush-placeholder-aspect-ratio: 2080\/1408;\" \/><\/a><\/p>\n<p>Sol tarafda a\u00e7\u0131lan men\u00fcye bakarsak e\u011fer, hangi class&#8217;da ka\u00e7 issue var ve ka\u00e7 dakikal\u0131k bir efora sahip bilgisini g\u00f6rebilmek m\u00fcmk\u00fcn.<\/p>\n<p>Dilersek <em>NDepend<\/em>&#8216;in yukar\u0131da yer alan <em>LINQ<\/em>&#8216;ya benzer bir sorgulama dili olan <em>CQLinq<\/em> ile, sorgu \u00fczerinde baz\u0131 de\u011fi\u015fiklikler yaparak farkl\u0131 sonu\u00e7lar ve g\u00f6sterimler de elde edebilmek m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<pre class=\"lang:c# decode:true\">\/\/ Types Hot Spots\r\nfrom t in JustMyCode.Types\r\nwhere t.AllDebt() &gt; Debt.Zero &amp;&amp; \r\n      t.AllAnnualInterest() &gt; AnnualInterest.Zero\r\norderby t.AllDebt().Value.TotalMinutes descending\r\nselect new { t, \r\n   Debt = t.AllDebt(),\r\n   Issues = t.AllIssues(), \/\/ AllIssues = {types issues} union {members issues}\r\n   AnnualInterest = t.AllAnnualInterest(),\r\n   BreakingPoint = t.AllBreakingPoint(),\r\n   t.NbLinesOfCode,\r\n   \/\/ t.PercentageCoverage,  to uncomment if coverage data is imported\r\n   DebtRating = t.DebtRating(), \r\n   DebtRatio = t.DebtRatio() \r\n}<\/pre>\n<p>Yukar\u0131da g\u00f6rebildi\u011fimiz gibi <em>LINQ<\/em>&#8216;ya benzemesi ise biz developer&#8217;lar i\u00e7in b\u00fcy\u00fck bir nimet. :)<\/p>\n<p>Ayr\u0131ca efor bilgilerine ek olarak ne tarz rule&#8217;lara tak\u0131ld\u0131\u011f\u0131n\u0131 da g\u00f6rebilmek i\u00e7in, bu sefer dashboard \u00fczerinden\u00a0<strong>%11.94\u00a0<\/strong>oran\u0131n\u0131n \u00fczerine t\u0131klayal\u0131m.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2017\/09\/depend-debt-2.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1769 lazyload\" data-src=\"\/wp-content\/uploads\/2017\/09\/depend-debt-2.jpg\" alt=\"\" width=\"2080\" height=\"1408\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/depend-debt-2.jpg 2080w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/depend-debt-2-300x203.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/depend-debt-2-768x520.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/depend-debt-2-1024x693.jpg 1024w\" data-sizes=\"(max-width: 2080px) 100vw, 2080px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 2080px; --smush-placeholder-aspect-ratio: 2080\/1408;\" \/><\/a><\/p>\n<p>Tekrardan sol men\u00fcye bakt\u0131\u011f\u0131m\u0131zda ise hangi rule&#8217;lara tak\u0131ld\u0131\u011f\u0131m\u0131z\u0131 g\u00f6rebilmek m\u00fcmk\u00fcn. Bu noktada benim ho\u015fuma giden k\u0131s\u0131m ise ilgili rula&#8217;a \u00e7ift t\u0131klay\u0131p detay\u0131na gitti\u011fimde, hangi class i\u00e7erisinde de\u011fi\u015fiklik yapaca\u011f\u0131m\u0131 g\u00f6stermesi ve tekrar t\u0131klad\u0131\u011f\u0131mda <em>Visual Studio<\/em> i\u00e7erisinde a\u00e7mas\u0131d\u0131r.<\/p>\n<p>Bunlara ek olarak a\u015fa\u011f\u0131daki gibi de bir dependency graph&#8217;a sahiptir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2017\/09\/ndepend-dependency.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1770 lazyload\" data-src=\"\/wp-content\/uploads\/2017\/09\/ndepend-dependency.jpg\" alt=\"\" width=\"2080\" height=\"1408\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-dependency.jpg 2080w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-dependency-300x203.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-dependency-768x520.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-dependency-1024x693.jpg 1024w\" data-sizes=\"(max-width: 2080px) 100vw, 2080px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 2080px; --smush-placeholder-aspect-ratio: 2080\/1408;\" \/><\/a><\/p>\n<p>Metric&#8217;leri ise <em>NDepend<\/em>, color metric visualization ile bize sunmaktad\u0131r. \u00d6rne\u011fin: \u00fcst men\u00fcden &#8220;<em>Metrics &gt; Most Coupled &gt; Type<\/em>&#8221; path&#8217;ini izleyelim.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2017\/09\/ndepend-most-complex.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1771 lazyload\" data-src=\"\/wp-content\/uploads\/2017\/09\/ndepend-most-complex.jpg\" alt=\"\" width=\"2080\" height=\"1408\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-most-complex.jpg 2080w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-most-complex-300x203.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-most-complex-768x520.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/ndepend-most-complex-1024x693.jpg 1024w\" data-sizes=\"(max-width: 2080px) 100vw, 2080px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 2080px; --smush-placeholder-aspect-ratio: 2080\/1408;\" \/><\/a><\/p>\n<p>Burada ise NDepend, renklendirilmi\u015f visualization&#8217;a g\u00f6re veya sol men\u00fcy\u00fc kullanarak most coupled durumda olan type sonu\u00e7lar\u0131n\u0131 g\u00f6rebilmemizi kolayla\u015ft\u0131r\u0131yor.<\/p>\n<h5>Build Process Integration<\/h5>\n<p>En \u00f6nemli unsurlardan biriside san\u0131r\u0131m <em>NDepend<\/em>&#8216;in build s\u00fcre\u00e7lerine dahil olabilme konusu. Bir \u00e7ok zaman, build s\u00fcrecinde quality gate&#8217;leri belirleyebilme ve gerekti\u011finde build i\u015flemini yar\u0131da kesebilme konular\u0131 \u00f6nemli olmaktad\u0131r. <em>NDepend<\/em>&#8216;i <em>Jenkins<\/em>,\u00a0<em>TeamCity<\/em> ve <em>TFS<\/em>&#8216;e entegre ederek kullanabilmek m\u00fcmk\u00fcnd\u00fcr. Ayr\u0131ca <em>SonarQube<\/em> ile de tamamen uyumlu bir \u015fekilde \u00e7al\u0131\u015farak, kod kalitesini s\u00fcrekli olarak iyile\u015ftirebilmeyi m\u00fcmk\u00fcn k\u0131lmaktad\u0131r. Ayr\u0131ca <em>NDepend<\/em> issue&#8217;lar\u0131 da, <em>SonerQube<\/em> issue set&#8217;ine import edilebilmektedir. Integration hakk\u0131nda detayl\u0131 bilgiye ise\u00a0<em><a href=\"https:\/\/www.ndepend.com\/docs\/sonarqube-integration-ndepend#Introduction\" target=\"_blank\" rel=\"noopener\">buradan<\/a><\/em> ula\u015fabilirsiniz.<\/p>\n<h5>Sonu\u00e7<\/h5>\n<p>A\u00e7\u0131kcas\u0131 <em>NDepend<\/em>&#8216;i bir s\u00fcredir kurcal\u0131yorum. (Ayr\u0131ca &#8220;\u0131&#8221; karakterinden kaynaklanan bir problem i\u00e7in <em>NDepend<\/em>\u00a0tak\u0131m\u0131 ile beraber \u00e7al\u0131\u015ft\u0131m. Bu problem bir sonraki versiyonda fixlenecek.)\u00a0\u00d6zellikle <em>Visual Studio<\/em> ile integrated mode&#8217;da \u00e7al\u0131\u015fabilmesi dikkatimi \u00e7ekti. \u00c7\u00fcnk\u00fc bize geli\u015ftirdi\u011fimiz kodu hen\u00fcz source control&#8217;e g\u00f6ndermeden \u00f6nce kendi local ortam\u0131m\u0131zda neler olup bitti\u011fini, hangi rule set&#8217;lere tak\u0131ld\u0131\u011f\u0131m\u0131z\u0131 g\u00f6rebilmemize olanak sa\u011fl\u0131yor ve o \u015fekilde commit yapabilmemize de engel olabiliyor. Bu s\u00fcre\u00e7 \u00e7al\u0131\u015fmakta oldu\u011fum \u015firkette\u00a0<em>SonarQube<\/em> plugin&#8217;leri ile de denenmi\u015fti fakat yan\u0131lm\u0131yorsam, efektif bir sonu\u00e7 alamam\u0131\u015ft\u0131k. Bunun haricinde uygulamalar\u0131m\u0131z\u0131 s\u00fcrekli olarak iyile\u015ftirip, standardize edilmi\u015f kaliteli kodlar yazabilmemiz i\u00e7in biz .NET developer&#8217;lar\u0131n kullanabilece\u011fi g\u00fczel bir tool.<\/p>\n<p><a href=\"https:\/\/www.ndepend.com\" target=\"_blank\" rel=\"noopener\">https:\/\/www.ndepend.com<\/a><br \/>\n<a href=\"https:\/\/www.ndepend.com\/features\" target=\"_blank\" rel=\"noopener\">https:\/\/www.ndepend.com\/features<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba arkada\u015flar. A\u00e7\u0131kcas\u0131 uzun zamand\u0131r projelerimizin kod kalitesini art\u0131rabilmek i\u00e7in olan,\u00a0kod analiz tool&#8217;lar\u0131\u00a0\u00fczerine bir blog post yazmay\u0131 planl\u0131yordum. Fakat bir t\u00fcrl\u00fc uygun zaman\u0131 bulamad\u0131m. Ge\u00e7ti\u011fimiz g\u00fcnlerde, .NET uygulamalar\u0131m\u0131z\u0131n kod kalitesini geni\u015f bir yelpazede ele alarak, s\u00fcrekli artt\u0131rabilmemize yard\u0131mc\u0131 olan NDepend tool&#8217;unun lisans&#8217;\u0131n\u0131, free bir \u015fekilde&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/gokhan-gokalp.com\/tr\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/\">Devam\u0131n\u0131 okuyun<span class=\"screen-reader-text\">NDepend ile .NET Uygulamalar\u0131n\u0131n Kod Kalitesini Artt\u0131rmak<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":1776,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[68,231],"tags":[455,452,453,451,450,454],"class_list":["post-1595","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-architectural","category-refactoring","tag-net-code-analyzer","tag-clean-code","tag-code-analyzer","tag-code-quality","tag-ndepend","tag-static-code-analyzer","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"tr","enabled_languages":["en","tr"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"tr":{"title":true,"content":true,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>NDepend ile .NET Uygulamalar\u0131n\u0131n Kod Kalitesini Artt\u0131rmak - G\u00f6khan G\u00f6kalp<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NDepend ile .NET Uygulamalar\u0131n\u0131n Kod Kalitesini Artt\u0131rmak - G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/\" \/>\n<meta property=\"og:site_name\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-15T19:04:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-11-18T14:38:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"700\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/\"},\"author\":{\"name\":\"G\u00f6khan G\u00f6kalp\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"headline\":\"NDepend ile .NET Uygulamalar\u0131n\u0131n Kod Kalitesini Artt\u0131rmak\",\"datePublished\":\"2017-09-15T19:04:22+00:00\",\"dateModified\":\"2017-11-18T14:38:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/\"},\"wordCount\":2929,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"image\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/p18dnfifg71lie71l1gll1re136a3.jpg\",\"keywords\":[\".net code analyzer\",\"clean code\",\"code analyzer\",\"code quality\",\"ndepend\",\"static code analyzer\"],\"articleSection\":[\"Architectural\",\"Refactoring\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/\",\"name\":\"NDepend ile .NET Uygulamalar\u0131n\u0131n Kod Kalitesini Artt\u0131rmak - G\u00f6khan G\u00f6kalp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/p18dnfifg71lie71l1gll1re136a3.jpg\",\"datePublished\":\"2017-09-15T19:04:22+00:00\",\"dateModified\":\"2017-11-18T14:38:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/#primaryimage\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/p18dnfifg71lie71l1gll1re136a3.jpg\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/p18dnfifg71lie71l1gll1re136a3.jpg\",\"width\":1200,\"height\":700},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Increasing Code Quality of .NET Applications with NDepend\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"description\":\"C# &amp; Python lover\",\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gokhan-gokalp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"caption\":\"G\u00f6khan G\u00f6kalp\"},\"logo\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\"},\"sameAs\":[\"https:\\\/\\\/gokhan-gokalp.com\"],\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/tr\\\/author\\\/gok-gokalp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NDepend ile .NET Uygulamalar\u0131n\u0131n Kod Kalitesini Artt\u0131rmak - G\u00f6khan G\u00f6kalp","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/","og_locale":"tr_TR","og_type":"article","og_title":"NDepend ile .NET Uygulamalar\u0131n\u0131n Kod Kalitesini Artt\u0131rmak - G\u00f6khan G\u00f6kalp","og_url":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/","og_site_name":"G\u00f6khan G\u00f6kalp","article_published_time":"2017-09-15T19:04:22+00:00","article_modified_time":"2017-11-18T14:38:34+00:00","og_image":[{"width":1200,"height":700,"url":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3.jpg","type":"image\/jpeg"}],"author":"G\u00f6khan G\u00f6kalp","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"G\u00f6khan G\u00f6kalp","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/#article","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/"},"author":{"name":"G\u00f6khan G\u00f6kalp","@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"headline":"NDepend ile .NET Uygulamalar\u0131n\u0131n Kod Kalitesini Artt\u0131rmak","datePublished":"2017-09-15T19:04:22+00:00","dateModified":"2017-11-18T14:38:34+00:00","mainEntityOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/"},"wordCount":2929,"commentCount":0,"publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"image":{"@id":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/#primaryimage"},"thumbnailUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3.jpg","keywords":[".net code analyzer","clean code","code analyzer","code quality","ndepend","static code analyzer"],"articleSection":["Architectural","Refactoring"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/","url":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/","name":"NDepend ile .NET Uygulamalar\u0131n\u0131n Kod Kalitesini Artt\u0131rmak - G\u00f6khan G\u00f6kalp","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/#primaryimage"},"image":{"@id":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/#primaryimage"},"thumbnailUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3.jpg","datePublished":"2017-09-15T19:04:22+00:00","dateModified":"2017-11-18T14:38:34+00:00","breadcrumb":{"@id":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/#primaryimage","url":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3.jpg","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2017\/09\/p18dnfifg71lie71l1gll1re136a3.jpg","width":1200,"height":700},{"@type":"BreadcrumbList","@id":"https:\/\/gokhan-gokalp.com\/ndepend-ile-dotnet-uygulamalarinin-kod-kalitesini-arttirmak\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gokhan-gokalp.com\/"},{"@type":"ListItem","position":2,"name":"Increasing Code Quality of .NET Applications with NDepend"}]},{"@type":"WebSite","@id":"https:\/\/gokhan-gokalp.com\/#website","url":"https:\/\/gokhan-gokalp.com\/","name":"G\u00f6khan G\u00f6kalp","description":"C# &amp; Python lover","publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gokhan-gokalp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe","name":"G\u00f6khan G\u00f6kalp","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","url":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","caption":"G\u00f6khan G\u00f6kalp"},"logo":{"@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659"},"sameAs":["https:\/\/gokhan-gokalp.com"],"url":"https:\/\/gokhan-gokalp.com\/tr\/author\/gok-gokalp\/"}]}},"_links":{"self":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/1595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/comments?post=1595"}],"version-history":[{"count":48,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/1595\/revisions"}],"predecessor-version":[{"id":1862,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/1595\/revisions\/1862"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media\/1776"}],"wp:attachment":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media?parent=1595"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/categories?post=1595"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/tags?post=1595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}