Как каждый реализует FxCop / статический анализ существующей кодовой базы

Обновление для Swift 4.0:

override func draw(_ rect: CGRect) {
     super.draw(rect)

    // context allows you to manipulate the drawing context (i'm setup to draw or bail out)
    guard let context: CGContext = UIGraphicsGetCurrentContext() else {
        return
    }

    // Flip the coordinate system
    context.textMatrix = CGAffineTransform.identity;
    context.translateBy(x: 0, y: self.bounds.size.height);
    context.scaleBy(x: 1.0, y: -1.0);

    let path = CGMutablePath()
    path.addRect(self.bounds)

    let str = NSMutableAttributedString(string: "00:00:00")

    // set font color
    str.addAttribute(NSAttributedStringKey(rawValue: kCTForegroundColorAttributeName as String), value:UIColor.purple , range: NSMakeRange(0,str.length))
    // set font name & size
    let fontRef = UIFont.systemFont(ofSize: 20, weight: UIFont.Weight.bold)
    str.addAttribute(NSAttributedStringKey(rawValue: kCTFontAttributeName as String), value: fontRef, range:NSMakeRange(0, str.length))

    let frameSetter = CTFramesetterCreateWithAttributedString(str)
    let ctFrame = CTFramesetterCreateFrame(frameSetter, CFRangeMake(0,str.length), path, nil)

    CTFrameDraw(ctFrame, context)       
}
5
задан Trumpi 25 August 2008 в 22:04
поделиться

4 ответа

Сделайте свободное использование [SuppressMessage] атрибутом для начала. По крайней мере вначале. После того как Вы получаете количество к 0 через атрибут, Вы затем вставляете правило, что новый checkins не может представить нарушения FxCop.

Visual Studio 2008 имеет хорошую функцию анализа кода, которая позволяет Вам удостоверяться, что анализ кода работает на каждой сборке и можно рассматривать предупреждения как ошибки. Это могло бы замедлить вещи немного, таким образом, я рекомендую настроить непрерывный сервер интеграции (как CruiseControl.NET) и иметь выполненный анализ кода каждой регистрации.

После того как Вы получаете контроль над ним и не начинаете новые нарушения с каждой регистрации, начните заниматься целыми классами нарушений FxCop за один раз с целью удаления SuppressMessageAttributes, который Вы использовали.

Способ отслеживать то, которые Вы действительно хотите сохранить, состоит в том, чтобы всегда добавлять, что Выравнивание оценивает тем, Вы действительно хотите подавить.

13
ответ дан 18 December 2019 в 13:21
поделиться

Перепишите свой код в передающем стиле!

Серьезно, старая кодовая база будет иметь сотни ошибок - но вот почему у нас есть программисты новичка/интерна. Исправление нарушений FxCop является отличным способом получить обзор кодовой базы и также изучить, как написать соответствующий код.NET.

Поэтому просто стисните зубы, выпейте много кофеина и просто пройдите через него в паре дней!

2
ответ дан 18 December 2019 в 13:21
поделиться

NDepend похож на него, мог сделать то, что Вы после, но я не уверен, может ли это быть интегрировано в CruiseControl. Сеть автоматизировала сборку, и приводят сборку к сбою, если бы код не отвечает требованиям (который является тем, что я хотел бы произойти).

Какие-либо другие идеи?

0
ответ дан 18 December 2019 в 13:21
поделиться

Альтернатива FxCop должна была бы использовать инструмент NDepend. Этот инструмент позволяет Правилам Кода записи по Запросам C# LINQ (что мы называем CQLinq).Отказ от ответственности: Я - один из разработчиков инструмента

Больше чем 200 правил кода предложены по умолчанию. Настройка существующих правил или создание Ваших собственных правил просты благодаря известному синтаксису C# LINQ.

Для поддержания количества на низком уровне ложных положительных сторон CQLinq предлагает уникальные возможности определить то, что является набором JustMyCode через специальные запросы кода, снабженные префиксом notmycode. Больше объяснений об этой функции может быть найдено здесь. Вот, например, два notmycode запроса по умолчанию:

Для поддержания количества на низком уровне ложных положительных сторон с CQLinq, можно также сфокусировать результат правил только на добавленном коде или пересмотренном коде, начиная с определенной базовой линии в прошлом. См. следующее правило, которые обнаруживают методы, слишком сложные добавленный или пересмотренный начиная с базовой линии:

warnif count > 0 
from m in Methods
where m.CyclomaticComplexity > 20 &&
      m.WasAdded() || m.CodeWasChanged()
select new { m, m.CyclomaticComplexity }

Наконец, заметьте, что с правилами кода NDepend может быть проверен живой в Visual Studio и во время процесса сборки, в сгенерированном отчете о HTML+javascript.

-1
ответ дан 18 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: