SonarSource关键挑战代码质量管理
按设计, 按规定的时间间隔, 不间断地进行准时审核。这种代码的方法质量管理有四主要类型的缺点, 这将在本节详述。
太少, 太迟准时审计确定了两种改进: 化妆品和结构变化。而外观更改需要稍加修改, 结构更改可能包括主要软件设计.虽然可能需要进行此类更改, 但由准时审核产生的行动计划在过程中定义得太晚, 无法做任何事情, 但会打乱开发周期;无论是软件发布日期需要扩展, 以包括软件重新设计, 或更糟糕的软件将被推送到质量不达标的生产, 因此降低了可维护性和适应性, 当新的业务需求出现。
来自开发团队的推回组织内部的质量过程显然缺乏所有权。审计员不能自己的过程, 因为他们既不拥有代码也不控制问题解决。同样,模型的命令和控制特性阻止开发团队拥有过程, 因为它没有参与审查。因此, 您有两个断开的组这些都是质量的责任, 而不是他们的责任。开发人员倾向于从准时审核中产生的行动计划, 因为他们:√是在团队之外生成的, 在日常工作中被视为一种新的约束√是主观的;调查结果依赖于审计师的判断, 而非客观措施√小姐的背景和历史信息, 因此被视为无关√因正在进行的更改而失效, 并很快变得过时√不要让和其他利益相关者参与审核和审核过程√介入的过程太晚;在审核功能时, 开发人员需要 "重新学习"用于解决查找的代码
缺少过程所有权
组织内部的质量过程显然缺乏所有权。审计员不能自己的过程,中国sonarqube 扫描报告, 因为他们既不拥有代码也不控制问题解决。同样,模型的命令和控制特性阻止开发团队拥有过程, 因为它没有参与审查。因此, 您有两个断开的组这些都是质量的责任, 而不是他们的责任。
异构需求衡量软件绝dui价值的传统方法,中国sonarqube 扫描报告, 如问题总数在质量门中发现, 强制评估人员对不同的应用程序进行测量要求取决于其来源。例如, 遗留项目可能不会保持在相同的高度一个绿地项目的质量标准, 和 in-house 的发展可能被判断不同于外包代码。这是由于您仍然需要允许软件运送到生产, 并要求每个项目达到相同的绝dui价值的质量阈值之前释放通常是不切实际的。使用这些绝dui值, 几乎不可能解决共同的对所有应用程序的要求, 因此很难在整个委yuan会中采用良好的做法。
Ansible SonarQube 升级的角色
你可能知道, 并希望使用 SonarQube。这是一个伟大的工具, 是积极的发展和改善。这是伟大的, 如果你是一个开发使用 SonarQube。但是, 如果您碰巧管理 SonarQube 实例, 则由于升级指南由11步骤组成, 因此不断升级非常麻烦。
停止旧的 SonarQube 服务器
并解压新的 SonarQube 分布在一个新鲜的目录, 让我们说 NEW_SONARQUBE_HOME
使用默认的 H2 数据库启动它, 并使用更新中心安装您需要的插件
手动安装任何自定义插件
停止新服务器
更新声纳的内容. 属性和包装. 配置文件位于 NEW_SONARQUBE_HOME/配置目录中, 其内容与 OLD_SONARQUBE_HOME/配置目录中的相关文件 (web 服务器 URL、数据库设置等) 有关。不-粘贴旧文件
如果使用了自定义 JDBC 驱动程序, 请将其到 NEW_SONARQUBE_HOME/扩展/jdbc 驱动程序/lt;dialectgt;
备份数据库
删除数据/es 目录
启动新的 web 服务器
//localhost:9000/setup (用您自己的 URL 替换 "localhost:9000") 来浏览并按照安装说明进行操作
这是一个太多的步骤, 手动执行。因此, 我决定通过为它编写一个 Ansible 的角色来实现自动化。
初始设置
在我开始编写 Ansible 剧本之前, 我需要找到一种方法来测试我的代码。所以我开始与流浪汉旋转了一个虚拟机, 并提供了一个简单的脚本。这是需要有类似的环境, 以我们的实际 SonarQube 生产实例。我能够增量地构建我的 Ansible 剧本并在这个 VM 上测试它。很快我就明白了, 与流浪汉一起工作会减慢我的速度, 因为我需要重置环境, 而不是的预期。所以我决定考虑泊坞窗。
用于测试的泊坞窗
我找到了正式的 SonarQube 泊坞窗图像, 但无法使用, 因为我们的 SonarQube 实例安装在 CentOS 和官fang图像使用不同的基础图像。另外, 我需要自定义特定的 SonarQube 版本我想开始。因此, 我创建了我们自己的 Dockerfile 与 CentOS 6 基地和 Ansible 安装。
此泊坞窗映像不需要启动 SonarQube, 因为我只是想验证是否进行了正确的文件更改, 而我的 Ansible 手册没有错误。升级的第yi步之一就是关闭服务器。
我将我的剧本装入容器, 并在该容器内运行 Ansible, 对该本地环境进行了更改。
当前脚本的路径
TESTS_DIR = $ (cd "$ (dirname" $ {BASH_SOURCE [0]} ")" amp;amp; amp;amp; 密码 "
# 命令测试剧本
TEST_COMMAND = "cd/行动 amp;amp; amp;amp; ansible-剧本 $ @
-我 " 本地主机 "-c
升级-声纳 database.yml "
# 运行容器安装行动为卷
泊坞 run-v "$ TESTS_DIR/.。/行动/:/行动 "
"声纳-升级-测试"/"垃圾/bash-c" $ {TEST_COMMAND} "
在泊坞窗中运行我的剧本大大减少了反馈回路, 所以我决定泊坞窗是走的路。你可以看看我所有的脚本在 GitHub
Ansible 角色
我一步一步地往前走, 我到达了一个点, 一切似乎都在工作, 我有一个非常有用的 Ansible 的角色在我的手中。它尚未发布到 Ansible Galaxy, 但您可以在 GitHub 的 SonarQube 升级 Ansible 角色项目下找到源文件和文档。
当前 Ansible 角色通过在当前位置旁边创建新安装来升级 SonarQube。这提供了回滚的方法 (如果需要)。
此时, 角色执行以下任务:
确保特定的根用户存在于声纳安装
在所有安装所在的目录中创建声纳. sh
确保 SonarQube 服务存在
停止 SonarQube
新版本
备份数据库
和安装插件
将自定义配置应用于新实例
确保删除数据/es
重新 SonarQube 服务启动新版本
开始 SonarQube
手动步骤
这个过程仍然需要几个手动步骤。
在运行升级手册之前, 应手动确保在升级过程中要安装的插件列表是xin的。您可以从 SonarQube 的管理视图中获得xin支持的版本号。
根据 SonarQube 的建议,代理商sonarqube 扫描报告, 此 Ansible 角色不仅以前安装的配置, 而且使用带有变量的模板来为新实例创建配置。这意味着在执行升级之前, 开发人员可以将模板和基本配置与新的 SonarQube 进行比较。虽然这是一个手动步骤, 但与以前的操作相比, 它更容易, 因为可以使用 IDE 而不仅仅是从命令行中的 diff 工具进行比较。
这两个步骤都需要后续的手动升级, 我认为这些升级准备活动。
SonarSource
代码质量是一个不断增长的市场, 它是分析师对其大规模采用和大量投资回报的雷达。
介绍麦凯布的圈复杂度长期以来一直是事实上的标准测量方法的控制流的复杂性。它的目的是 "确定软件模块将很难测试或维护 "[1], 但当它准确地计算xiao的测试用例需要完全覆盖的方法, 它不是一个令人满意的测量理解。这是因为具有相等圈复杂度的方法不一定存在同样的困难, 维护, 导致一种感觉,测量 "啼狼" 由 over-valuing 一些结构,华北sonarqube 扫描报告, 而 under-valuing 其他构造.同时, 圈复杂度不再是全mian的。制定的Fortran 环境在 1976年, 它不包括现代语言结构, 如尝试/捕zhuo,和 lambda。后, 因为每个方法都有一个xiao的圈复杂度得分, 它是不可能知道任何具有高聚合圈复杂度的给定类是否一个大的、易于维护的域类, 或一个具有复杂控制流的小类。在类级别之外, 人们普遍承认, 圈复杂度的分数应用程序与它们的代码总计行相关联。换言之, 圈复杂度是在方法级别上很少使用。作为对这些问题的一种补救, 认知复杂性已经被制定来解决现代语言结构, 并产生的价值是有意义的类和应用程序级别。更重要的是, 它背离了基于数学模型, 使其能够产生控制流的评估, 对应于程序员的直觉的精神, 或认知的努力, 需要了解这些流动.
华北sonarqube 扫描报告-华克斯(推荐商家)由苏州华克斯信息科技有限公司提供。苏州华克斯信息科技有限公司为客户提供“Loadrunner,Fortify,源代码审计,源代码扫描”等业务,公司拥有“Loadrunner,Fortify,Webinspect”等品牌,专注于行业软件等行业。,在苏州工业园区新平街388号的名声不错。欢迎来电垂询,联系人:华克斯。