日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

通过FxCop来验证.NET编码规范

發(fā)布時間:2025/4/16 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过FxCop来验证.NET编码规范 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

公司用的同樣的方式進行的編碼規(guī)范,園友已經(jīng)寫好,直接轉(zhuǎn)載過來。

FxCop介紹:

??? FxCop是一個代碼分析工具,它依照微軟.NET框架的設計規(guī)范對托管代碼assembly進行檢查。它使用基于規(guī)則的引擎,來檢查出你代碼中不合規(guī)范的部分;你也可以定制自己的規(guī)則加入到這個引擎。

??? 還有一款很流行的代碼檢測工具叫做StyleCop。之所以選擇使用FxCop有兩個原因,首先是StyleCop不支持VB.Net,而我們用VB.Net做后臺開發(fā)的。第二是FxCop有非常強大的定制規(guī)則引擎的能力,這方面的能力StyleCop不如FxCop。

FxCop使用:

?? 1、下載FxCop

??? 最新版本的是FxCop 10.0。我是使用FxCop 1.36版的。FxCop 10.0可以到微軟的官網(wǎng)下載。FxCop 1.36可以到床上等你上下載。微軟的1.36這個版本的下載鏈接好像失效了。

?? 2、安裝:略

???3、運行界面:

1)、打開FxCop程序,單擊“Project”|“Add Targets”命令,添加待檢查的程序集,可添加多個。
2)、打開FxCop程序,單擊“Project”|“Add Rules”命令,添加自定義的規(guī)則,可添加多個。
3)、單擊工具欄上的“Analyze”按鈕,FxCop將自動執(zhí)行檢測,檢測完畢后,結(jié)果將在右側(cè)的列表中顯示。單擊某個列表項,FxCop下方將顯示該結(jié)果的詳細信息。如圖上圖所示。

這里使用的都是微軟自帶的規(guī)則,你還可以自定義規(guī)則,見下一節(jié)。

?FxCop自定義引擎:

??? FxCop能實現(xiàn)自定義的引擎規(guī)則,這里我用個例子來說明。例子是參數(shù)命名使用Camel命名規(guī)范,格式為:對象類型+對象描述。

1、用vs2008創(chuàng)建一個?class library。fxcop還需要一個定義規(guī)則的XML文件。TypeName表示定義一規(guī)則的類名。Description表示錯誤信息。將此xml定義成嵌入的資源。

<?xml version="1.0" encoding="utf-8"?>
<Rules FriendlyName="自定義規(guī)則">

<Rule TypeName="FunctionParametersCheck" Category="參數(shù)命名規(guī)范" CheckId="C10001">
<Name>參數(shù)命名請采用Camel命名規(guī)范</Name>
<Description>
參數(shù)命名請采用Camel命名規(guī)范,格式為:對象類型+對象描述。
</Description>
<Url>www.cnblogs.com/zhuqil</Url>
<Resolution>
函數(shù){0}的參數(shù){1}命名不符合Camel命名規(guī)范,格式為:對象類型+對象描述。
Integer int intQuantity
String str strFname
</Resolution>
<Email>zhuqi0@126.com</Email>
<MessageLevel Certainty="80">Warning</MessageLevel>
<FixCategories>NonBreaking</FixCategories>
<Owner>skylin</Owner>
</Rule>
</Rules>

2、在內(nèi)庫項目中引用Microsoft.Cci.dll和FxCopSdk.dll兩個dll文件。添加一個類FunctionParametersCheck。繼承BaseIntrospectionRule。

'功能: 參數(shù)命名請采用Camel命名規(guī)范
'
創(chuàng)建人: 朱祁林
'
創(chuàng)建時間:2010-12-07
'
修改人: 朱祁林
'
修改時間:2010-12-07

Imports Microsoft.FxCop.Sdk
Imports System
Namespace MySoftRules
Public Class FunctionParametersCheck
Inherits BaseIntrospectionRule
' Methods
Public Sub New()
MyBase.New("FunctionParametersCheck", "CustomRules.CustomXMLRules", GetType(FunctionParametersCheck).Assembly)
End Sub

Public Overrides Function Check(ByVal member As Member) As ProblemCollection
Dim method As Method = TryCast(member, Method)
If ((Not method Is Nothing) AndAlso (method.DeclaringMember Is Nothing)) Then
Dim i As Integer
For i = 0 To method.Parameters.Count - 1
'true:找到不符合規(guī)范的參數(shù),false表示沒有找到不符合規(guī)范的參數(shù)
Dim blnFoundAddString As Boolean = False
Dim strFullType As String = method.Parameters.Item(i).Type.FullName
Dim strType As String = strFullType.Substring((strFullType.LastIndexOf(".") + 1), ((strFullType.Length - strFullType.LastIndexOf(".")) - 1))
Dim strName As String = method.Parameters.Item(i).Name.Name
If strType.ToLower() = "string" Then
blnFoundAddString
= CheckField(strName, "str")
ElseIf strType.ToLower() = "int32" Then
blnFoundAddString
= CheckField(strName, "int")
End If
If blnFoundAddString Then
Dim resolu As Resolution = MyBase.GetResolution(method.ToString, strName)
MyBase.Problems.Add(New Problem(resolu))
End If
Next i
End If
Return MyBase.Problems
End Function
'檢查命名規(guī)范
Private Function CheckField(ByVal strName As String, ByVal strAbbreviation As String) As Boolean
Dim intLength As Integer = strAbbreviation.Length
Try
If (strName.Substring(0, intLength) <> strAbbreviation) Then
Return True
End If
If Char.IsLower(strName.Chars(strAbbreviation.Length)) Then
Return True
End If
Catch obj1 As Exception
Return True
End Try
Return False
End Function

End Class
End Namespace

從上面代碼可以看出,在類的構(gòu)造函數(shù)中,關聯(lián)了開始定義的XML文件。為了簡便起見,這里只對string和int兩種類型說明。

得到CustomRules.dll這個最終的輸出。

使用:有兩種方法使用。

1、使用fxcop工具,見前文

2、與vs2008集成,將這個dll放置到:VS2008安裝路徑\Microsoft Visual Studio 9.0\Team Tools\Static Analysis Tools\FxCop\Rules\目錄下。選擇一個項目,鼠標右鍵點擊“運行代碼分析”。

分析結(jié)果將顯示在”錯誤列表”的”警告”標簽頁中。雙擊其中一項,即可定位到不符合規(guī)范的源代碼行,即可進行代碼調(diào)整。

將不符合規(guī)范的代碼:

調(diào)整為:

?

調(diào)試:可以看到我們建立的是類庫項目,那么如何進行調(diào)試來進行開發(fā)呢。

1、修改類庫項目的屬性,將啟動外部程序改成安裝的FxcopCmd.exe:

2、將命令行參數(shù)修改成:out:"results.xml" /file:"C:\MyRules\TestProject\bin\Debug\TestProject.dll" /rule:"CustomRules.dll" /D:"C:\Program Files\Microsoft FxCop 1.36"

3、這樣就可以調(diào)試了。

?

總結(jié):本文詳細介紹了FxCop的使用過程,并通過一個示例來進行說明。FxCop是對中間語言進行檢測的,所以這里的代碼同樣適用于C#。

?

原文:http://www.cnblogs.com/zhuqil/archive/2010/12/07/FxCop.html

總結(jié)

以上是生活随笔為你收集整理的通过FxCop来验证.NET编码规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。