2011-06-20 8 views
6

Istnieje niewiele łatwych do znalezienia informacji dotyczących niestandardowych reguł analizy kodu w Visual Studio 2010. Chociaż to jest to, co znalazłem w odniesieniu do mojego pytania ...Odwoływanie się do biblioteki reguł analizy kodów niestandardowych przy użyciu pliku zestawu reguł

W dokumencie sample library on CodePlex pokazano, jak wdrożyć niestandardową bibliotekę reguł analizy kodów, która wykorzystuje projekt instalacji do zrzutu biblioteki DLL biblioteki do Folder plików programów -> Microsoft Visual Studio 10.0 -> Narzędzia zespołów -> Narzędzia analizy statycznej - > FxCop -> Zasady.

Ponadto bardzo przydatne jak do blog post by Duke Kamstra sugeruje również skopiować biblioteki dll jest w % Program Files% \ Microsoft Visual Studio 10.0 \ Tools \ zespołu Static Analysis Tools \ FxCop \ Rules.

Ja wolę unikać przyklejania plików DLL w takiej globalnej lokalizacji. Chciałem mieć bibliotekę DLL w stosunku do moich rozwiązań Visual Studio, więc kiedy zaktualizuję bibliotekę DLL z pewnymi niestandardowymi zmianami w regułach analizy kodu, nie potrzebuję robić dodatkowego kroku, aby utrzymywać na bieżąco zależności bibliotek DLL.

Jednym z najlepszych rozwiązań dla mnie byłoby posiadanie własnego pliku * .ruleset pamiętając o względnej ścieżce do biblioteki DLL, ale nie udało mi się tego zrobić.

Wszelkie sugestie?

Odpowiedz

4

W pliku .ruleset powinieneś być w stanie dodać względne ścieżki do niestandardowych bibliotek DLL. np:

<?xml version="1.0" encoding="utf-8"?> 
<RuleSet Name="Sample" Description="Sample ruleset" ToolsVersion="10.0"> 
    <RuleHintPaths> 
    <Path>..\Tools\FxCop\SomeRules.dll</Path> 
    <Path>..\Tools\FxCop\SomeOtherRules.dll</Path> 
    </RuleHintPaths> 
    ... 
</RuleSet> 
+0

Czy zdajesz sobie sprawę, z czego ta ścieżka jest związana? Czy jest on względny względem położenia pliku .ruleset? – RobSiklos

+0

Ścieżki są względne w stosunku do projektu. – Raithlin

3

znalazłem nawet poprawną ścieżkę względną projektu względne (dostarczony jako Nicole's answer) do mojego zespołu niestandardowe reguły nie powodują moje zasady pojawić w edytorze zestawu reguł, natomiast ścieżka bezwzględna do tego samego zespołu nie sprawić, by zasady się pojawiły. Po włączeniu reguł, a następnie zmianie ścieżki z powrotem na ścieżkę względną, reguły pozostają w edytorze i są uruchamiane podczas analizy źródła. Jeśli odznaczę reguły z określoną ścieżką względną, reguły znikną - wygląda to na błąd w edytorze reguł.

Tak więc, jeśli Twoje reguły nie pojawiają się przy określaniu ścieżki względnej, spróbuj użyć wartości bezwzględnej, włączając reguły, a następnie przełączając się ponownie na ścieżkę względną (względem położenia projektu na @Raithlin).

0

Kwestia ta wydaje się mieć również wpływ VS 2013. Znalazłem że ręcznie wprowadzając ścieżkę względną do zespołu reguł i przepisy z tego zespołu spowoduje przepisy te pojawiające się podczas otwierania zestawu reguł przy użyciu Visual Studio zestaw reguł interfejs projektanta. Zasady również zostaną uruchomione.

Więc w roboczym CustomRules.ruleset może wyglądać tak, gdzie SR1000 jest regułą od SomeRules.dll i SOR1000 wynosi od SomeOtherRules.dll. Należy pamiętać, że wersja narzędzia jest 12,0 dla Visual Studio 2013.

<?xml version="1.0" encoding="utf-8"?> 
<RuleSet Name="Sample" Description="Sample ruleset" ToolsVersion="12.0"> 
    <RuleHintPaths> 
    <Path>..\Tools\FxCop\SomeRules.dll</Path> 
    <Path>..\Tools\FxCop\SomeOtherRules.dll</Path> 
    </RuleHintPaths> 
    <Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed"> 
    <Rule Id="SR1000" Action="Error" /> 
    <Rule Id="SOR1000" Action="Warning" /> 
    <!-- etc. --> 
    </Rules> 
</RuleSet> 

pamiętać, że można łatwo zawierać standardowe zasady Microsoft dodając obejmuje tak aby RuleSet:

<Include Path="minimumrecommendedrules.ruleset" Action="Default" /> 
0

Używam Visual Studio C# 2015 z aktualizacją 2.Moje reguły niestandardowe nie pojawiają się w edytorze zestawów reguł programu Visual Studio 2015. Jednak po uruchomieniu CodeAnalysis, naruszenia pojawiają się, jeśli takie istnieją. Moja RuleHintPath wygląda i jest w stosunku do lokalizacji pliku zestawu reguł:

<RuleHintPaths> 
    <Path>..\Rules</Path> 
</RuleHintPaths> 

Więc ponieważ znajdują się naruszenia, to jest fakt, że DLL reguły są uznane przez daną ścieżkę względną. Dlaczego reguły nie pojawiają się w edytorze reguł, to pytanie. Dlatego zakładam błąd redaktora.

Powiązane problemy