2011-02-22 8 views
5

私はStyleCopの大きなファンです。それは私の人生を楽にします。他の人が良いルールを考えていて、StyleCopを有効にして喜んでそれらをフォローします。最近、私はコード化されたUIの拡張をいじり、この記事に出くわしたされています:C#StyleCopを幸せにするインポートステートメントの場所

http://blogs.msdn.com/b/gautamg/archive/2010/01/05/2-hello-world-extension-for-coded-ui-test.aspx

using文は、名前空間の外であるため、以下のサンプルコードは、StyleCopは不幸になります。しかし、私は2つのSystem*パッケージしか動かすことができません.3番目はアセンブリ属性を定義する必要があり、assembly:を名前空間の中に投げることはできません。

このコードを再構成する明確な方法はありますか?

using System; 
using System.Diagnostics; 
using Microsoft.VisualStudio.TestTools.UITest.Common; 
using Microsoft.VisualStudio.TestTools.UITest.Extension; 

// Attribute to denote that this assembly has UITest extensions. 
[assembly: UITestExtensionPackageAttribute("HelloWorldPackage", 
      typeof(UITestHelloWorldPackage.HelloWorldPackage))] 

namespace UITestHelloWorldPackage 
{ 
    internal class HelloWorldPackage : UITestExtensionPackage 
    { 
     public override object GetService(Type serviceType) 
     { 
      Trace.WriteLine("Hello, World"); 
      return null; 
     } 
.... 

答えて

5

IMHOでは、名前空間内での使用方法は無用であり、コードを読みにくくします。

+1

間違いなく。私は常にStyleCopの設定からこのルールを削除します。 –

+0

ええと...私はあなたの意見を見ていますが、そのルールには何らかの理由があったに違いありません。 –

+1

その理由を考えることができない場合、この規則はあなたには適用されません。そして本当に:すべてのルールが意味をなさないわけではなく、あなたは自分自身をチェックする必要があります。 –

5

[assembly: UITestExtensionPackageAttribute()]属性をProperties \ AssemblyInfo.csファイルに移動できませんか。私はあなたが参照した記事を推測しているのは、ただ一つのコードブロックに例を残すために、[assembly:]という属性があるということです。

ダニエルに同意します。usingのネームスペース内のステートメントは、コードを読みにくくします。

属性をAssemblyInfo.csファイルに移動して、クラスファイルの先頭に使用することをお勧めします。それはかなり標準的なようです。

希望すると便利です。

関連する問題