2017-12-07 13 views
1

開発マシンでReSharper 2017.2.2をVisual Studio 2017.5とともに使用します。私は、TFSサーバー上で更新3.ReSharperでのカスタムパターンの使用TFSビルドでのコード品質分析

TFS 2017を使用してい

は、Visual Studioの2017.4とReSharperのCLT 2017年2月2日には、インストールされています。

私はTFSビルドを使用しています。

私の目標は、ソリューションを構築する際にコード分析を行うことです。

enter image description here Resharper Code Quality Analysisタスクを使用します。私は、ソリューションのルートにあるsln.DotSettingsファイルを使用して構成できます。

標準コードチェックReSharperは正常に動作します。私はReSharper -> Options | Code Inspection -> Custom patternsを使用し、このために、ここでhttps://marketplace.visualstudio.com/items?itemName=alanwales.resharper-code-analysis enter image description here

示すように、私はまた、警告レベルを変更することができます。 enter image description here

このルールはVisual Studioでうまくいきます。私はsln.DotSettingsにこのルールを保存すると、次の行が追加されます。

<s:Boolean x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=4E6B3830DEEA6148909C23CD21C96E28/@KeyIndexDefined">True</s:Boolean> 
<s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=4E6B3830DEEA6148909C23CD21C96E28/LanguageName/@EntryValue">JAVA_SCRIPT</s:String> 
<s:Boolean x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=4E6B3830DEEA6148909C23CD21C96E28/MatchCatchClauseWithoutExceptionFilter/@EntryValue">False</s:Boolean> 
<s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=4E6B3830DEEA6148909C23CD21C96E28/SearchPattern/@EntryValue">debugger</s:String> 
<s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=4E6B3830DEEA6148909C23CD21C96E28/Severity/@EntryValue">ERROR</s:String></wpf:ResourceDictionary> 

私はdebuggerとJSコード、特別に追加された行に。しかし私は私のカスタムパターンについて警告を出すことはありません。

TFSのResharperコード品質分析サポートでカスタムパターンを使用していますか?

UPDATE 1:私はコマンドを使用して、コンソール経由でコード分析の開始を確認:

<Issue TypeId="StructuralSearch" Severity="ERROR" File="***.WebResources\WebResources\new_\js\forms\***.js" Offset="406-415" Line="13" Message="debugger" /> 

:Results.xmlファイルでInspectCode.exe -o="C:\temp\Results.xml" --no-swea "C:\BuildAgent\Thompson\_work\23\s\***.sln"

、私は必要な行を見つけましたUPDATE 2:スクリプトコードRunResharperCodeAnalysisTool.ps1を見ました。

... 
$severityLevels = @{"Hint" = 0; "Suggestion" = 1; "Warning" = 2; "Error" = 3} 
... 
foreach($issue in $issuesElements) { 
    $severity = @($issuesTypesElements | Where-Object {$_.Attributes["Id"].Value -eq $issue.Attributes["TypeId"].Value})[0].Attributes["Severity"].Value 

    $severityLevel = $severityLevels[$severity] 

    if($severityLevel -ge $severityLevels[$failBuildLevelSelector]) { 
     $item = New-Object -TypeName PSObject -Property @{ 
      'Severity' = $severity 
      'Message' = $issue.Attributes["Message"].Value 
      'File' = $issue.Attributes["File"].Value 
      'Line' = $issue.Attributes["Line"].Value 
     } 

     $filteredElements.Add($item) 
    } 
} 

Results.xmlファイルには、次の行があります:

<?xml version="1.0" encoding="utf-8"?> 
<!-- Generated by JetBrains Inspect Code 2017.2.2 --> 
<Report ToolsVersion="109.0.20171006.123742"> 
    <Information> 
    <Solution>..\..\BuildAgent\Thompson\_work\23\s\***\***.sln</Solution> 
    <InspectionScope> 
     <Element>Solution</Element> 
    </InspectionScope> 
    </Information> 
    <IssueTypes> 
    <IssueType Id="StructuralSearch" Category="Structural Search Highlightings" CategoryId="StructuralSearch" Description="Structural Search Pattern" Severity="INVALID_SEVERITY" />  
    <IssueType Id="WebConfigErrors" Category="WebConfig Errors" CategoryId="WebConfigErrors" Description="" Severity="ERROR" /> 
    </IssueTypes> 
    <Issues> 
    <Project Name="***"> 
     <Issue TypeId="WebConfigErrors" File="***.WebResources\Web.config" Offset="531-650" Line="17" Message="Invalid module qualification: Failed to resolve assembly Microsoft.CodeDom.Providers.DotNetCompilerPlatform" /> 
     <Issue TypeId="WebConfigErrors" File="***.WebResources\Web.config" Offset="916-1035" Line="20" Message="Invalid module qualification: Failed to resolve assembly Microsoft.CodeDom.Providers.DotNetCompilerPlatform" /> 
     <Issue TypeId="StructuralSearch" Severity="ERROR" File="***.WebResources\WebResources\new_\js\forms\***.js" Offset="406-415" Line="13" Message="debugger" /> 
    </Project> 
    </Issues> 
</Report> 

マイカスタムパターン$severityLevelsリストにないSeverity="INVALID_SEVERITY"を持っているこのファイルに次の行があります。

+0

こんにちはKolya、これに関するアップデートは、あなたがそれを理解しましたか? –

+1

@ PatrickLu-MSFTこんにちは。あなたの答えは役に立ちます。私は拡張開発者の答えを待っていました。 –

答えて

1

コマンドラインでうまく動作するので、問題はTFS側に関係していないようですが、3パーティーのタスクに関連している可能性があります。

Resharper Code Quality Analysisタスクではこれが機能しない場合は、コマンドラインタスクまたは拡張機能を使用して、ビルドタスク中にInspectCode.exeコマンドを直接呼び出すことができます。次に、結果ファイルをTFSにパブリッシュします。

さらに、回避策として、logging commandsを使用して、powershellスクリプトから警告とエラーを返すこともできます。 task.logissue type=errorを使用すると、ビルドタスクが失敗し、ビルドが失敗する可能性があります。

関連する問題