标签: code-coverage

PHP中的死代码检测

我有一个代码非常混乱的项目 - 这里和那里有很多重复和死代码.

前一段时间单元测试的代码覆盖率为零,但现在我们尝试以TDD方式编写所有新代码,并通过单元测试覆盖"旧"代码来降低技术债务(测试最后技术).

业务逻辑的复杂性非常高,有时候没有人可以回答是否使用了某些方法.

如何找到这种死代码方法?广泛的伐木?更高的测试覆盖率?(这不是很容易,因为客户想要新的功能出来)

php refactoring code-coverage legacy-code

33
推荐指数
2
解决办法
1万
查看次数

使用Xcode5,iOS7模拟器和XCTest生成gcda文件

受到这个问题解决方案的启发,我尝试使用与XCTest相同的方法.

我设置了'Generate Test Coverage Files = YES'和'Instrument Program Flow = YES'.

XCode仍然不会生成任何gcda文件.任何人有任何想法如何解决这个问题?

码:

#import <XCTest/XCTestLog.h>

@interface VATestObserver : XCTestLog

@end

static id mainSuite = nil;

@implementation VATestObserver

+ (void)initialize {
    [[NSUserDefaults standardUserDefaults] setValue:@"VATestObserver"
                                             forKey:XCTestObserverClassKey];
    [super initialize];
}

- (void)testSuiteDidStart:(XCTestRun *)testRun {
    [super testSuiteDidStart:testRun];

    XCTestSuiteRun *suite = [[XCTestSuiteRun alloc] init];
    [suite addTestRun:testRun];

    if (mainSuite == nil) {
        mainSuite = suite;
    }
}

- (void)testSuiteDidStop:(XCTestRun *)testRun {
    [super testSuiteDidStop:testRun];

    XCTestSuiteRun *suite = [[XCTestSuiteRun alloc] init];
    [suite addTestRun:testRun];

    if …
Run Code Online (Sandbox Code Playgroud)

code-coverage ios7 xcode5

33
推荐指数
1
解决办法
2万
查看次数

使用JaCoCo Gradle插件的Android测试代码覆盖率

我是Gradle和Android测试的新手,但我已经将我的Android项目转换为使用Gradle构建.

现在,我正在尝试使用Gradle的JaCoCo插件执行Android项目的测试覆盖.

我已将以下内容添加到build.gradle文件中:

apply plugin: 'jacoco'
Run Code Online (Sandbox Code Playgroud)

当我运行"gradle jacocoTestReport"时出现以下错误:

Task 'jacocoTestReport' not found in root project '<project name>'.
Run Code Online (Sandbox Code Playgroud)

从文档我应该也应用插件'java'但它与插件'android'冲突.

有没有解决的办法?

提前致谢.

testing android code-coverage gradle jacoco

32
推荐指数
2
解决办法
2万
查看次数

防止python覆盖包括虚拟环境站点包

我是新来的报道并遇到了一个奇怪的问题.我的报道是将我的虚拟环境站点包考虑在内.以下是覆盖率运行的输出:

coverage run test.py
....................
----------------------------------------------------------------------
Ran 20 tests in 0.060s

OK
(atcatalog)- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -jmfrank63@fullstack-audio-text-catalog:~/workspace (git master)       [19:58:45]
$ coverage report
Name                                                                              Stmts   Miss  Cover
-----------------------------------------------------------------------------------------------------
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/__init__               18      0   100%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/_compat                38     20    47%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/app                   528    255    52%
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/flask/blueprints            156    118    24%
                             .
                             .
                             .
/home/ubuntu/Envs/atcatalog/lib/python2.7/site-packages/werkzeug/urls               412    215 …
Run Code Online (Sandbox Code Playgroud)

python testing code-coverage virtualenv python-coverage

32
推荐指数
3
解决办法
1万
查看次数

代码覆盖的陷阱

我正在寻找代码覆盖的一些不良副作用的真实世界的例子.

我注意到最近在工作中发生了这种情况,因为有一项政策可以实现100%的代码覆盖率.代码质量肯定在提高,但相反,测试人员似乎正在编写更宽松的测试计划,因为"代码完全经过单元测试".因此,一些逻辑错误成功.它们是一个非常难以调试的因为"代码完全经过单元测试".

我认为这部分是因为我们的工具只进行了声明覆盖.不过,它本来可以花更多时间.

如果有任何人有代码覆盖政策的其他负面影响请分享.我想知道在现实世界中发生了什么样的其他"问题".

提前致谢.

编辑:感谢所有非常好的回应.有一些我会将其标记为答案,但遗憾的是我只能标记一个.

unit-testing code-coverage

31
推荐指数
5
解决办法
5458
查看次数

软件开发指标和报告

最近我有一些关于软件开发指标的有趣对话,特别是它们如何在一个相当大的组织中使用,以帮助开发团队更好地工作.我知道有一些关于哪些指标可以使用的Stack Overflow问题 - 比如这个,但我的问题更多的是关于哪些指标对哪些利益相关者有用,以及在什么级别的聚合.

作为一个例子,我的观点是代码覆盖率在以下方面(也可能是其他方式)是一个有用的指标:

  • 当与其他测量结合使用时,团队自己的内部使用.
  • 对于促进/启用/指导团队而言,在逐个团队的基础上考虑作为趋势可能是有益的(例如,如果团队A和B在本月75和50的覆盖范围内,我会更关心团队如果前一个月他们有80和40,那么比B还要多.
  • 对于高级管理人员,在多个团队或整个部门中作为汇总统计数据呈现.

但我认为高级管理层在逐个团队的基础上看到这一点是有用的,因为这鼓励人为尝试通过仅运用而不是测试代码的测试来支持覆盖.

我在一个管理层次结构中有几个级别的组织中,但绝大多数管理人员都具有技术头脑和能力(许多人仍然沾沾自喜).一些开发团队在推动敏捷开发实践方面处于领先地位,但其他开发团队则落后,现在有一个严格的要求从最高层开始,以便组织的工作方式.我们中的一些人正在启动一项计划来鼓励这一点.在这种组织中,您认为哪种指标有用,对谁,为什么以及在什么级别的聚合?

我不希望人们根据他们可以人为影响的指标来评估他们的表现.与此同时,高级管理层将需要某种证据证明正在取得进展.根据您自己组织的经验,您可以提供哪些建议或警告?

编辑

我们绝对希望将指标用作组织改进的工具,而不是作为个人绩效评估的工具.

metrics code-coverage

31
推荐指数
2
解决办法
6901
查看次数

如何使Intellij Idea Coverage显示全彩色线条?

在Eclipse中,大多数覆盖插件,显示带有不同颜色的覆盖/部分覆盖/未覆盖的线(即整条线涂有颜色)

在IntelliJ Idea中,我找不到用描述性颜色绘制整条线的方法,在左侧只添加一个小的,几乎察觉不到的标记,使得部分覆盖/未覆盖线的可视化非常困难.

任何的想法?

code-coverage intellij-idea

31
推荐指数
2
解决办法
7193
查看次数

如何使用nosetests从python覆盖率报告中排除模拟包

我目前尝试使用模拟库在python中编写一些基本的鼻子单元测试.

在完成了一些基本的例子后,我现在尝试使用nosetests --with-coverage,现在我有了模拟包,我试图'模拟掉'的包显示在覆盖率报告中.是否有可能排除这些?

这是我要测试的类:

from imaplib import IMAP4

class ImapProxy:
    def __init__(self, host):
        self._client = IMAP4(host)
Run Code Online (Sandbox Code Playgroud)

和测试用例:来自模拟导入补丁

from ImapProxy import ImapProxy

class TestImap:
    def test_connect(self):
        with patch('ImapProxy.IMAP4') as imapMock:
            proxy = ImapProxy("testhost")
            imapMock.assert_called_once_with("testhost")
Run Code Online (Sandbox Code Playgroud)

我现在得到以下输出 nosetests --with-coverage

.
Name         Stmts   Miss  Cover   Missing
------------------------------------------
ImapProxy        4      0   100%   
imaplib        675    675     0%   23-1519
mock          1240    810    35%   [ a lot of lines]
Run Code Online (Sandbox Code Playgroud)

有没有办法排除模拟包和imaplib包,不必手动将除了那些包之外的所有包列入白名单--cover-package=PACKAGE

感谢Ned Batchelder,我现在知道.coveragerc文件了,谢谢!

我创建了一个包含以下内容的.coveragerc文件:

[report]
omit = *mock*
Run Code Online (Sandbox Code Playgroud)

现在我在覆盖率报告中的模拟输出是:

mock                     1240   1240     0%   16-2356 …
Run Code Online (Sandbox Code Playgroud)

python code-coverage mocking nose python-mock

30
推荐指数
2
解决办法
1万
查看次数

无法使用Karma运行Coverage

我正试图用业力运行覆盖,我得到警告:WARN [preprocess]:无法加载"覆盖",它没有注册!

当我跑'npm install -g karma-coverage --save-dev'时,我以为我安装了报道

这是我的配置文件:

module.exports = function(config) {
      config.set({
        // base path, that will be used to resolve files and exclude
        basePath: '',

        frameworks: ['jasmine'],

        // list of files / patterns to load in the browser
        files: [
                bunch of files..
        ],

        // list of files to exclude
        exclude: [],

        // use dots reporter, as travis terminal does not support escaping sequences
        // possible values: 'dots', 'progress'
        // CLI --reporters progress
        reporters: ['progress', 'coverage'],

        junitReporter: { …
Run Code Online (Sandbox Code Playgroud)

javascript code-coverage karma-runner

30
推荐指数
4
解决办法
3万
查看次数

使用gitlab-ci.yml文件的代码覆盖率报告

我需要在Gitlab中看到java maven项目的代码覆盖率报告.根据这个,这个和其他一些来源:

  1. 我添加jacoco到插件列表中pom.xml.
  2. 在我的.gitlab-ci.yml文件中添加了页面作业.
  3. 添加Total.*?([0-9]{1,3})%到项目设置中的代码覆盖解析.

但是没有任何报道报道,或者至少我看不到它.没有覆盖百分比或覆盖率报告页面.

.gitlab-ci.yml文件内容:

image: maven:latest

variables:
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"

cache:
  paths:
    - .m2/repository/

build:
  stage: build
  script:
    - mvn $MAVEN_CLI_OPTS compile

test:
  stage: test
  script:
    - mvn $MAVEN_CLI_OPTS test
  artifacts:
    paths:
      - target/site/jacoco/
pages:
  stage: deploy
  dependencies:
    - test
  script:
   - mkdir public
   - mv target/site/jacoco/index.html public
  artifacts:
    paths:
      - public

deploy:
  stage: deploy …
Run Code Online (Sandbox Code Playgroud)

code-coverage maven jacoco gitlab gitlab-ci

30
推荐指数
6
解决办法
2万
查看次数