C #에 사용할 수있는 정적 분석 도구는 무엇입니까? [닫은]


174

C # 코드에 대한 정적 분석을 위해 어떤 도구를 사용할 수 있습니까? FxCop과 StyleCop에 대해 알고 있습니다. 다른 사람이 있습니까? 나는 전에 NStatic을 뛰어 다녔지 만 영원히 보이는 것처럼 개발 중입니다. 내가 본 작은 것에서 꽤 매끄러운 것처럼 보이므로 하루의 빛을 볼 수 있다면 좋을 것입니다.

이 같은 줄 (주로 정적 분석에 관심이 있음)과 함께 멀티 스레딩 문제 (교착 상태, 경쟁 조건 등)를 테스트하는 도구도 약간 부족합니다. Typemock Racer가 방금 나왔습니다. 이것 이외의 것이 있습니까?

사용한 도구에 대한 실제 의견에 감사드립니다.


@IraBaxter 나는 Meta에 대한이 질문에 대해 토론 하기 시작했고 , 원한다면이 질문을 삭제해서는 안되는 이유에 대한 논증을하도록 권유한다.

답변:


341

코드 위반 탐지 도구 :

  • Fxcop 는 Microsoft의 탁월한 도구입니다. .net 프레임 워크 지침을 준수하는지 확인하십시오.

    2010 년 10 월 편집 : 더 이상 독립형 다운로드로 사용할 수 없습니다. 이제 Windows SDK에 포함되어 있으며 설치 후 Program Files \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe에 있습니다.

    2018 년 2 월 편집 :이 기능은 이제 Visual Studio 2012 이상에 코드 분석 으로 통합되었습니다.

  • 코드 소스 분석 (C # 2.0)을 기반으로하는 Clocksharp

  • Mono.Gendarme , Fxcop 와 유사하지만 오픈 소스 라이센스 ( Mono.Cecil 기반 )

  • 스모키 을 기반으로합니다 FxCop과 헌병과 유사, Mono.Cecil . 더 이상 개발을하지 않아도 주요 개발자는 현재 Gendarme 팀과 협력합니다.

  • 상용 제품 C # 용 Coverity Prevent ™

  • PRQA QA · C # , 상용 제품

  • 상용 제품 PVS-Studio

  • CAT.NET , 보안 결함을 식별하는 데 도움이되는 Visual Studio 애드2019 년 11 월 편집 : 링크가 종료되었습니다.

  • CodeIt. 오른쪽

  • 투기#

  • Pex

  • 보다 깨끗하고 안전한 코드 작성을 지원하는 SonarQube , FOSS & Commercial 옵션.

품질 측정 도구 :

  • 훌륭한 시각적 도구 인 NDepend 코드 메트릭, 규칙, diff, 커플 링 및 종속성 연구에 유용합니다.
  • Nitriq 은 무료이며 자신 만의 통계 / 제약, 멋진 시각화를 쉽게 작성할 수 있습니다. 2018 년 2 월 편집 : 다운로드 링크가 이제 종료되었습니다. 2019 년 6 월 17 일 편집 : 링크가 죽지 않았습니다.
  • 코드 소스 분석에 기반한 RSM Squared
  • C # 의 전체 구문 분석을 사용하는 C # 지표
  • 때때로 업데이트되는 오래된 도구 인 SourceMonitor
  • 코드 메트릭 하는 반사판 추가
  • .NET 2.0을 지원하지 않는 오래된 도구 인 Vil . 2018 년 1 월 편집 : 링크가 이제 죽었습니다

스타일 도구 확인 :

  • StyleCop , Microsoft 도구 (Visual Studio 내부에서 실행되거나 MSBuild 프로젝트에 통합됨) Visual Studio 2015 및 C # 6.0 의 확장으로 도 제공
  • 에이전트 Smith , ReSharper 용 코드 스타일 검증 플러그인

복제 감지 :

  • 소스 코드를 기반으로 한 Simian . 많은 언어로 작동합니다.
  • CloneDR 은 언어 경계에서만 매개 변수화 된 클론을 탐지합니다 (C # 이외의 많은 언어도 처리 함)
  • 클론 탐지 Visual Studio 플러그인. ( 내부적으로 ConQAT를 사용합니다 )
  • 소스 코드, 많은 언어, 멋진 "바퀴"시각화를 기반으로하는 Atomiq

일반 리팩토링 도구

  • ReSharper- 주로 멋진 C # 코드 분석 및 리팩토링 기능

4
FxCop에 대한 MSDN 페이지를 참조하십시오. msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "FxCop은 관리 코드 어셈블리 (.NET Framework 공용 언어 런타임을 대상으로하는 코드)를 분석하는 응용 프로그램입니다. 가능한 설계, 현지화, 성능 및 보안 개선과 같은 어셈블리에 대한 정보를보고합니다. "
Sarah Vessels

FxCop 링크가 Microsoft 사이트에서 제거되었습니다. FxCop 10.0 "다운로드"는 다음과 같습니다. microsoft.com/downloads/…
ulrichb

이 Simian : harukizaemon.com/simian/index.html 입니까? (링크가 끊어졌습니다). 또한 .NET 1.1 인 것 같습니다.
Theraot

@ Theraot 감사합니다, URL을 변경했습니다. 닷넷 버전에 관하여, 유인원은 자바 5에 .NET 1.1에서 실행할 수 있지만 그게 .NET의 다른 버전에 중복을 감지 의미하지 않는다
줄리앙 Hoarau

Nitriq는 더 이상 사용할 수없는 것 같습니다. 다운로드 링크 (현재 Telerik의 일부인 NimblePros로 리디렉션)는 "죄송합니다. 더 이상 Nitriq를 제공하지 않습니다"
Narayana

7

NDepend 도구 는 Quality Metric Tools 로 인용 되지만 코드 위반 탐지 도구 이기도합니다 . 면책 조항 : 나는 도구의 개발자 중 하나입니다

NDepend를 사용하면 LINQ 쿼리에 대한 코드 규칙 (CQLinq)을 작성할 수 있습니다 . 기본적으로 200이상의 CQLinq 코드 규칙 이 제안됩니다. CQLinq의 강점은 코드 규칙을 작성하고 즉시 결과를 얻는 것이 간단 하다는 것입니다 . 일치하는 코드 요소를 찾아보기위한 기능이 제안됩니다. 예를 들면 다음과 같습니다.

CQLinq 코드 규칙

그 외에도 NDepend는 기능 과 같은 다른 많은 정적 분석을 제공합니다. 여기에는 다음이 포함됩니다.


나는 지난 몇 주 동안 NDepend를 시험 할 기회가있었습니다. :) 작업 해 주셔서 감사합니다!
Michael Armes

1
  • Gendarme 은 오픈 소스 규칙 기반 정적 분석기입니다 (FXCop과 유사하지만 많은 다른 문제가 있음).
  • Clone Detective 는 Visual Studio 용 플러그인으로 중복 코드를 찾습니다.
  • 또한 Mono에 관해서는, Mono 컴파일러로 컴파일하는 행위를 발견합니다 (코드가 플랫폼에 독립적 인 경우, 어쨌든 노력하고 싶은 목표)는 참조되지 않은 변수와 Visual Studio가 완전히 놓친 기타 경고를 찾습니다. (경고 수준이 4로 설정된 경우에도).

1

당신은 본 적이 CAT.NET를 ?

블 러브에서-

CAT.NET은 이진 코드 분석 도구로 XSS (Cross-Site Scripting), SQL Injection 및 XPath Injection과 같은 일반적인 공격 경로를 유발할 수있는 특정 취약점의 일반적인 변형을 식별하는 데 도움이됩니다.

초기 베타 버전을 사용했는데 몇 가지 가치가있는 것으로 나타났습니다.






-1

Axivion Bauhaus Suite 는 C # (C, C ++ 및 Java)과 함께 작동하는 정적 분석 도구입니다.

다음과 같은 기능을 제공합니다.

  • 소프트웨어 아키텍처 시각화 (종속성 포함)
  • 계층화, 서브 시스템, 호출 규칙과 같은 아키텍처 규칙 시행
  • 복제 감지-복사 및 붙여 넣기 (및 수정 된 코드) 강조 표시
  • 데드 코드 감지
  • 사이클 감지
  • 소프트웨어 메트릭
  • 코드 스타일 검사

이러한 기능은 일회성으로 또는 지속적 통합 프로세스의 일부로 실행할 수 있습니다. 시스템이 소스 코드 제어 시스템과 통합 된 경우 프로젝트별로 또는 개발자별로 문제를 강조 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.