2017-01-17 7 views
3

우리는 VS2015 Enterprise로 SonarLint를 시도하고 있습니다. 우리가 해결하지 못하면 쇼 스토퍼가 될 수있는 자극적 인 문제가 있습니다. 코어 i5 프로세서, 8GB 메모리, 대용량 SSD, Windows 7 Pro :SonarLint suppress 된 경고가 VS Errors 화면에 계속 나타나지 않게하는 방법

동일한 경고 코드 (예 : S1444)의 기존 경고가 많이 있습니다. 기존 코드로 살 수 있지만 향후 작업을 위해 코드를 잡으려고합니다. 따라서 코드에서 지저분한 pragma없이 기존 경고를 억제하고 싶습니다. 따라서 오류 목록 화면에서 rt를 여러 번 선택하고 억제 파일을 클릭하십시오. 해당 프로젝트에 GlobalSuppressions 파일이 생성되고 업데이트됩니다.

그러나 경고가 계속 표시됩니다. 나는 솔루션을 깨끗이하고 다시 만들었고 '억제 된'경고는 'Active'(여전히 '억제되지 않음'을 의미하는 것으로 추측 함)의 억제 상태로 계속 표시됩니다.

이것은 이전 경고를 제거하여 새로운 경고가 명확하게 드러나지 못하게하는 것을 의미합니다 (실제로는 운동의 요점 임).

이 버그는 무엇입니까? 아니면 누락 되었습니까?

또한 때로는 rt 클릭 컨텍스트 메뉴에 Suppress-> 및 그 밖의 시간이 포함되어 있음을 알 수 있습니다. 어떻게 작동합니까?

+0

[연결 모드] (http://www.sonarlint.org/visualstudio/index.html#Connected)에 대해 알고 있습니까? 연결 모드에서는 품질 프로파일에서 규칙을 제거 할 수 있습니다. 그렇게하면 팀 내에서 표준을 동기화 할 수 있습니다. – janos

+0

우리는 실제로 SonarQube 서버 접근법을 사용하고 싶지 않습니다. 우리의 요구에 너무 복잡합니다. 우리가 원하는 것은 VS 오류 목록 화면의 경고 탭에서 억제 된 경고가 사라지도록하는 것입니다. 모든 경고가 처리되거나 억제 될 때 '깨끗한'화면이 나타나고 자르는 모든 새로운 경고가 분명해집니다. 이것은 가능하지 않습니까? –

답변

2

직면 한 문제를 재현 할 수 없습니다. ConsoleApplication (C#)을 만들고 기본 코드를 사용했습니다. 그런 다음 모든 문제를 선택하고 오른쪽 클릭을 한 후 억제 파일에 표시하지 않습니다. 다시 작성하고 정리하고 VS를 다시 시작하려고 시도했지만 경고가 더 이상 표시되지 않습니다.

Program.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication14 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
     } 
    } 
} 

GlobalSuppression.cs

// This file is used by Code Analysis to maintain SuppressMessage 
// attributes that are applied to this project. 
// Project-level suppressions either have no target or are given 
// a specific target and scoped to a namespace, type, member, etc. 

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Sonar Code Smell", "S1172:Unused method parameters should be removed", Justification = "<Pending>", Scope = "member", Target = "~M:ConsoleApplication14.Program.Main(System.String[])")] 
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Sonar Code Smell", "S1186:Methods should not be empty", Justification = "<Pending>", Scope = "member", Target = "~M:ConsoleApplication14.Program.Main(System.String[])")] 
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Sonar Code Smell", "S1118:Utility classes should not have public constructors", Justification = "<Pending>", Scope = "type", Target = "~T:ConsoleApplication14.Program")] 

나는 최신 SonarLint 버전 (2.9.0.384)를 사용하고 있습니다. 간단한 재현 사례를 만들어서 어떤 일이 일어나고 있는지 알아볼 수 있습니까?

+0

스케일링 문제일까요? 저는 2.9.0.355를 최신 Nuget 패키지와 함께 C# 솔루션에 사용하고 있습니다 (주석 줄과 중괄호를 제외하고 약 500,000 줄의 실행 가능 소스 코드가 있음). 또한 느린 속도 일뿐만 아니라 앞서 설명한 문제점을 보여줍니다. –

+0

잘 모르겠지만 확인할 가치가 있습니다. 끝나면 다시 연락 할게. 그 동안 그리고 당신이 괜찮다면 작은 프로젝트를 만들어 그것이 작은 프로젝트에서 작동하고 있는지 확인할 수 있습니까? 확인하는 것 뿐이야. –

+1

훨씬 작은 솔루션 (수천 줄의 코드 만)에서 시도해 보았고 같은 경험을했습니다. 그러나 두 번의 경고 만 표시 한 다른 매우 작은 테스트 솔루션에서 시도했을 때,이 경고는 억제 된 후에 사라졌으며 이후 재구성 후에도 표시되지 않았습니다. 그것은 스케일링 문제로 보인다.큰 프로젝트 (위)에서, 오류 목록 화면에서 억제 된 경고를 하나씩 제거하고 결국 중지 할 때까지는 매우 느린 것으로 나타났습니다. –