SlideShare a Scribd company logo
开放源代码软件 MediaWiKi 成熟度评估




         作者: 陈越
开放源代码软件成熟度评估




目录

目录.............................................................................................................................................................................2
概述.............................................................................................................................................................................3
开源软件成熟度评估案例........................................................................................................................................3
  MediaWiKi 软件成熟度评估报告....................................................................................................................3
          MediaWiKi 数据库软件介绍....................................................................................................................3
          MediaWiKi 软件代码质量评测................................................................................................................7
          软件测试..................................................................................................................................................10
          MediaWiKi 易用性研究...........................................................................................................................11
  软件成熟度评估..............................................................................................................................................11
          软件成熟度属性定义与量化..................................................................................................................11
          成熟度评估..............................................................................................................................................13
          MediaWiKi 软件成熟度评估结论..........................................................................................................16




                                                                                                                                第 2 页 共 20 页
开放源代码软件成熟度评估




概述

    21 世纪的计算机世界是丰富多彩的,不仅计算机硬件性能有了质的飞跃,计算机软件
在功能性、复杂度上都是以前无法比拟的。尤其是互联网及网络应用的出现,极大的丰富了
人们的计算机应用,拓展了应用的领域,将应用水平提高到一个崭新的水平。   对于复杂应用,
如何来保障应用软件的质量,如何评估那些纷繁复杂的应用系统呢。   人们进行了多方面的探
索,形成了众多软件成熟度评价模型。中国也为此颁布了软件质量国家标准 GB-T8566--
2001G,从而指导软件开发者和使用者正确的评价一个软件的质量及其应用的成熟度。那么,
对于开源世界,我们如何看待,又如何正确评价一个软件的成熟度状况呢。
  我们知道,软件成熟度评估的最终目标是帮助软件的可持续发展,并为用户应用提供
必要的技术参考。开放源代码软件成熟度评估也不例外。我们通过软件的成熟度评估,形成
全面的涉及技术、应用、法律等层面的评价报告,帮助那些正在或潜在的开源软件使用者准
确的了解软件的技术特性和应用特性,从而为他们选择适合自身需求的开源软件提供参考。
同时报告中涉及的大量评测数据,为开源软件的开发者提供帮助,促进他们有效的改善软
件在技术方面和使用方面的质量,使软件不断成熟和可持续的发展。
  开放源代码软件由于开发模式和运作模式的独特性,其软件带有鲜明的特点。开放源码
软件成熟度评估的方法需要我们在实践中不断的探索。我们将提出一些基本的原则和方法,
并建立我们自己的评估体系和计算模型。


开源软件成熟度评估案例

    根据以上描述,我们初步制定了一个适合于开放源代码软件成熟度评估的评价体系和
实施方法。接下来我们将通过两个案例说明我们的评价体系是如何工作的。我们选取
MediaWiKi 数据库软件进行评估。从这些软件的案例评估当中可以看到,我们的评估体系会
对不同类别的软件做针对性判别,从而得出基于该类软件的可比较的评估结果。
  技术架构分析和代码评测是开源软件成熟度评估中最重要、也是区别于传统商业软件评
估最有特色的部分。我们将做重点说明。




MediaWiKi 软件成熟度评估报告


MediaWiKi 数据库软件介绍




                                第 3 页 共 20 页
开放源代码软件成熟度评估




MediaWiKi
软件名称        MediaWiKi
主页          http://www.mediaWiKi.org/WiKi/MediaWiKi
社区          http://www.mediaWiKi.org/WiKi/Talk:MediaWiKi
支持公司        维基媒体基金会
公司简介        维 基 媒 体 基 金 会 ( WiKimedia Foundation Inc. ) , 简 称 维 基 媒 体
            (WiKimedia),是负责维基百科、             维基词典、    维基语录、维基教科书、  维基
            文 库 、 维 基 物 种 、 维 基 新 闻 、 维 基 共 享 资 源 、 In Memoriam 9/11 和
            Nupedia(已停止)计划的非盈利组织,在美国佛罗里达州注册。
成熟度         B
评价          一套基于网络的 WiKi 引擎,维基媒体基金会的所有项目乃至众多 WiKi
            网站皆采用了这一软件。MediaWiKi 软件最初是为自由内容百科全书维
            基百科所开发,今日已被一些公司机构部署为内部的知识管理和内容管
            理系统。Novell 甚而还在多个高流量的网站中使用了该软件。

软件简介

 基本介绍
   MediaWiKi 采用 PHP 编程语言写成,并可使用 MySQL 或 PostgreSQL 之一作为其关系数
据库管理系统。MediaWiKi 在 GNU 通用公共许可证第 2 版及其后续版本的条款下分发,其文
档则按知识共享-署名-相同方式共享 3.0 版协议发布,部分文档还发布于公有领域,这使其
成为了自由开源的软件。
   MediaWiKi 具有很丰富的功能,并被维基百科及其他维基媒体基金会的计划所采用,亦
为世界上很多不同的维基所采用。 MediaWiKi 采用 PHP 语言写成,并以 MySQL 作为其资料
库。它的徽标图像化了它如何运用标记语言即双括号 ("","") 来连结不同的文章。MediaWiKi
具有很高的相容性和可塑性,现在的版本支持 memcached 及 Squid cache 系统,亦支持 TeX
数学公式。其扩展系统允许用户自行添加他们需要的特性及定制化程序界面。
   MediaWiKi 是一个运行在服务器端的自由软件,基于 GNU General Public License(GPL
协议)发行。   它能够平稳地运行在日访问量上百万的网站服务器集群中。              MediaWiKi 是一个强
大、可扩展、   功能丰富的维基套件,它使用 PHP 技术来访问和显示存储在 MySQL 数据库中的
数据。
   使用 MediaWiKi 的维基文本格式,用户不必懂得 XHTML 或是 CSS 也可以很容易的编辑
内容。
   当用户对页面进行编辑之后,MediaWiKi 将它写入数据库,但是不会删除这个页面的先
前版本,这使得页面遭到故意破坏或垃圾信息干扰时可以快速恢复。MediaWiKi 也可以管理
                                                  第 4 页 共 20 页
开放源代码软件成熟度评估


图像和多媒体文件,这些文件存储在文件系统中。对于拥有大量用户的大型维基网站 ,
MediaWiKi 支持缓存并且可以很容易的外加 Squid 代理服务器软件。
 历史
    在科隆大学的学生及开发者马格努斯·曼斯克(Magnus Manske)设计的用户界面基础
上,李·丹尼尔·克罗克(Lee Daniel Crocker)为维基百科编写了现在的这一软件。                维基百科最
初曾经使用 Perl 语言编写的小型 WiKi 引擎 UseModWiKi 作为后台,其后则换用了 Manske 用
PHP 编写的软件来提供更多的功能。随着使用量的日益增长,页面加载的问题日益严重,这
促使克罗克重写了该软件,采用了扩展性更强的 MySQL 后台数据库。后来,维基媒体基金
会的首席技术官布里昂·维伯(Brion Vibber)成为了该软件的发布经理及其最活跃的开发者。
随着曼斯克程序第一版的发布,该软件曾被赋予了多项昵称,以表示当时的开发状态——
“PHP 脚本”(the PHP script)、“第二期”(phase II)、   “第三期”(phase III)、    “新代码
库”(the new codebase)——但并无正式的产品名称。          2003 年 6 月 20 日,随着维基媒体基
金会的宣布成立,作为对“WiKimedia”(维基媒体)的戏称,维基百科贡献者丹尼尔·迈耶
(Daniel Mayer)创造了“MediaWiKi”一词来称呼这一软件,并在 2003 年 8 月开始逐步得到
采 用 。 由 于 这 一 名 称 有 意 地 相 似 于 “ WiKimedia” 一 名 ( 而 “ WiKimedia” 还 相 似 于
“WiKipedia”),因而经常造成混淆。该软件的标志由埃里克·默勒(Erik Möller)基于弗洛
朗丝·尼巴尔-德伍阿尔拍摄的太阳花照片制作,最初用于参加维基百科在 2003 年年中举行
的国际性标志竞赛。该标志被评为第三名,并被选作 MediaWiKi 的标志;第二名的标志则被
选为维基媒体基金会的标志。太阳花两侧的双重方括号象征着 MediaWiKi 用来创建超链接到
其他 WiKi 页面的语法。

架构




功能特性
                                                  第 5 页 共 20 页
开放源代码软件成熟度评估


 基本功能
编辑功能:具有容易书写(并且功能齐全)的格式规则,具备所见即所得功能,可以分章
节编辑,能够方便地参阅以前的版本,并且具有上传文本,插入图像,和书写科学公式的
能力。
阅览功能:包含目录,检索,导航条,访问统计,文章评分,高品位打印输出等功能。
用户管理:包含个人页面,工具条的个人定义,个人偏好的设置等功能。
群件功能:包含论坛,图库,信息传递系统等功能。
访问控制:这对必须考虑安全因素的企业内部网络来说很重要。
格式转换:文件导入(HTML、DOC)和文件导出(DOC、PDF)。
个人界面:可设置个人的主页,顶边栏,底边栏,侧边栏;还有模板。
多国语言:多国语言的支持。
可扩展性:具有什么样的第三方插件,什么样的机构使你制作的插件得以运行。
可移植性:支持多种平台。
可延拓性:当页面变得数量庞大时,此 WiKi 引擎是否可行。大多数可扩展的 WiKi 引擎都用
一个后端数据库来存储页面。
系统特色
1、记录所有的改动版本,能方便的查阅历史更新记录,这使得开放性编辑成为可能
2、自动产生链接,编辑文本中中括号中的内容(如“[[X 条目]]”)将自动产生链接   
3、允许使用模板,方便对相同内容的重复使用、更新   
4、支持分类,并根据分类在不同的文章之间自动产生关联   
5、允许每个用户自行选择系统外观   
6、中文支持好,但是中文名附件会有乱码问题

 技术特性
1 、 经受过重量级应用的考验,功能丰富却架设简单 
2、 全世界最大的 WiKi 项目维基百科是使用 MediaWiKi 的成功范例,数据量、访问量都超级庞
大   
3 、 MediaWiKi 的功能非常丰富,支持多语言版本,充分满足知识站点的需要   
4 、运行环境要求很低,架设过程简洁,即使新手也可以迅速建立自己的站点   
5、MediaWiKi 是目前应用最广的 WiKi 程序,数以万计的网站在使用它,很容易找到范例站点
6、有大量的热心参与人员参与研究,资料多,容易找到互相交流的朋友 
7、 持续开发,程序特性功能不断完善,保证未来的支持

 运行环境
操作系统及应用环境:
任何一种可以运行 PHP5 与 MySQL 的操作系统:
Microsoft Windows,例如: Windows 2000、Windows Server 2003、Windows Server 2008
Linux(例如,Fedora……)
BSD(例如,FreeBSD……)
数据库:MySQL 或 PostgreSQL
动态网页技术:PHP5
                                                       第 6 页 共 20 页
开放源代码软件成熟度评估


网页服务器:Apache 或 IIS


MediaWiKi 软件代码质量评测



评测工具介绍


  市场上有多种软件质量分析软件,但大多数都价格昂贵,并且一般分析软件的性能很
难支持大规模的代码量。我们与智诚创新科技有限公司合作,通过该公司提供的 Klocwork
静态分析软件对 MediaWiKi 进行系统的代码分析,按级别整理分析结果,找出代码缺陷和
安全漏洞,提高 MediaWiKi 的软件质量。
   RATS(Rough Auditing Tool for Security)是一个开源的静态代码分析工具,它由
Secure Software 公司开发和维护,Secure Software 公司已被 Fortify 软件公司收购
(Fortify 软件公司现已被 HP 公司收购)。RATS 可对 C,C++,Perl,PHP,Python 等语言
的源代码进行静态分析,可标注出编程中经常出现的安全性错误,例如:缓存溢出,
TOCTOU (Time Of Check, Time Of Use) race conditions 等。
  RATS 扫描工具提供了一个安全分析模块,这个模块含有一个列表,此列表存储的是可
能出现的安全问题以及处理建议。RATS 还对每个安全问题的潜在危险程度进行评估,为评
估人员提供参考。RATS 还提供一些基本的分析以消除一些伪错误。
  正如 RATS 这个软件的名称所示,该工具只是对源代码进行一个粗略的分析,它不能找
到所有的错误同时也不能保证找到的错误都是真正的错误,所以人工的手动审查是必须的,
可以将该工具视为有力的辅助工具。
该软件的主要功能有:
软件缺陷检测
    提供多角度的各种缺陷类型分析。         自动化的缺陷检测功能易于使用,定制灵活,具有图
形化的构建和报表管理图形界面,拥有先进的消息过虑器,强大的学习调整知识库 。
Klocwork 能够分析 C/C++和 Java 代码,生成代码问题报告。
安全漏洞检测
  软件安全性时软件质量中一个重要的、并越来越收到重视的方面。Klocwork 安全漏洞分
析基于其先进的软件缺陷分析能力,分离出单独的安全漏洞和违反推荐的安全代码的缺陷
程序。
软件架构分析
  通过架构分析能够使设计人员及开发人员重新认识他们对该软件的架构理解,并结合
代码分析进行功能强大的影响分析,帮助开发人员找出软件的架构可能会对高质量代码的
开发有何种影响。
软件度量分析


                                          第 7 页 共 20 页
开放源代码软件成熟度评估


  搜集统计软件的代码信息,比如,文件数,代码行数,代码复杂度,继承或循环数量
等。帮助开发者和维护着宏观上掌握程序开发的复杂度,便于有针对性的进行代码管理。
可定制的代码分析
  许多组织有自己独特的编码标准、安全策略和质量目标。可利用 klocwork 为一些特殊问
题的分析进行单独定制,用户也可以编制自己的扩展检查器来完成特定任务。
开发人员 IDE 集成
klocwork 可以和现在大多是主流的 IDE 开发环境集成,在开发的早期及时发现可能的代码
漏洞从而有效降低开发成本。


代码评测报告摘要:


Summary:
Project name: MediaWiKi
Build name: build_1
Created on: Oct 31, 2007
Files analyzed: 531
Lines of code (Source LOC): 124,534
Defects Overview

Defects Overview:
Number of defects 192
Defect Density: 1.54


Header File Problems Overview:
Number of defects 1,648
Defect Density: 3.23


Security Vulnerabilities Overview:
Number of defects 47
Defect Density: .38


Dependent Headers Overview:
Number of dependent header files: 142


Unnecessary Compile Expansion Overview:
Unnecessary compile expansion: 539,192

                                             第 8 页 共 20 页
开放源代码软件成熟度评估


Compile expansion before include optimization: 4,393,144
Compile expansion after include optimization: 3,853,952


System Complexity Overview:
Complexity (function average): 8.58
Complexity (per file peak averaged across system): 32.57
Number of highly complex functions: 362
Number of files with highly complex functions: 103


Project configuration details:
Creation date: Oct 31, 2007
Creation time: 1:55:39 PM
Software Intelligence Engine version: 7.7.2.3
Number of filter files used: 0
Project name: MediaWiKi
Build name: build_1

Total   lines of code (Source LOC): 124,534
Total   lines of comments (in c/c++ files): 37,739
Total   number of files analyzed: 531
Total   number of defects: 1,887
Total   number of entities: 24,674
Total   number of relationships:
Total   number of functions / methods: 3,695
Total   number of classes / types: 1,520


Error Distribution




                                                           第 9 页 共 20 页
开放源代码软件成熟度评估


 Type                                   #     %
 Null pointer may be dereferenced       4     2.08
 Result of function that may return     164   85.42
 NULL will be dereferenced
 Suspicious dereference of pointer in   2     1.04
 function call before NULL check
 Memory Leak - possible                 2     1.04
 Pointer may be dereferenced after it   2     1.04
 was positively checked for NULL
 Null pointer may be passed to          1     0.52
 function that may dereference it
 Null pointer will be dereferenced      2     1.04
 Result of function that can return     12    6.25
 NULL may be dereferenced
 Suspicious dereference of pointer      2     1.04
 before
 NULL check



Warning Distribution

 Type                                   #     %
 Inconsistent Case Labels               1     0.52




评测分析


  通过对 MediaWiKi 模块的分析,我们得出评测结论。代码的整体风格统一,格式工整,
总体质量较好。程序结构复杂度合理,出现较多的问题主要是代码中潜在的对 NULL 对象的
引用。注释方面,注释丰富,每个程序文件有基本说明,某些重要的代码有详细解释,给社
区参与创造了较好的代码环境。


软件测试


  MediaWiKi 项目有专门的 Quality Assurance 组织,并且存在专门的商业公司负责软件
的商业支持与问题反馈。     在网站有专门的用户报告错误或参与测试的页面,错误的报告也可
通过 Mail Lis 进行。项目提供了一个批处理自动测试环境和一些工具供测试者使用,可以
方便的对软件的主要模块进行自动仿真测试。




                                                     第 10 页 共 20 页
开放源代码软件成熟度评估



MediaWiKi 易用性研究


  MediaWiKi 无图形配置、使用、监控环境。软件的主要配置和管理靠修改配置文件进行,
不过,软件提供了一些功能丰富的命令行工具,这也是服务器软件的一般做法。      软件的部署
和配置非常灵活,缺点是缺乏好的监控工具。


软件成熟度评估


软件成熟度属性定义与量化

ID                   Class Name            Weight
01                   技术架构设计                4
02                   代码质量                  4
03                   软件易用性                 1
04                   软件可用性                 4
05                   项目建设与管理               2
06                   项目的活跃程度               4
07                   项目测试情况                2
08                   软件应用支持                4
09                   软件法律问题                1

以下为各属性类的属性定义:
ID      Class Name   Entry        Weight   Value        Memo
01      技术架构设计       合理性          4        4
02      技术架构设计       可扩展性         3        5
03      技术架构设计       可移植性         2        4
04
05
06

ID      Class Name   Entry        Weight   Value        Memo
01      代码质量         代码错误率        4        4
02      代码质量         代码可读性        4        5
03      代码质量         代码复杂度        2        4
04
05
06

ID      Class Name   Entry        Weight   Value        Memo
01      软件易用性        易理解性         2        3
02      软件易用性        易学习性         2        3
03      软件易用性        易操作性         4        4
04
05
06


                                               第 11 页 共 20 页
开放源代码软件成熟度评估


ID   Class Name   Entry    Weight   Value        Memo
01   软件可用性        完备性      3        4
02   软件可用性        正确性      4        4
03   软件可用性        可靠性      4        5
04   软件可用性        安全性      2        3
05
06

ID   Class Name   Entry    Weight   Value        Memo
01   项目建设与管       组织架构     2        2
     理
02   项目建设与管       开发管理     4        4
     理
03   项目建设与管       网站建设     3        4
     理
04
05

ID   Class Name   Entry    Weight   Value        Memo
01   项目的活跃程       版本发布周期   2        4
     度
02   项目的活跃程       软件下载量    3        4
     度
03   项目的活跃程       交流机制     4        4
     度
04
05

ID   Class Name   Entry    Weight   Value        Memo
01   项目测试情况       测试方法(工   3        4
                  具)
02   项目测试情况       测试人员     4        4
03   项目测试情况       测试反馈     2        3
04
05

ID   Class Name   Entry    Weight   Value        Memo
01   软件应用支持       社区支持度    4        4
02   软件应用支持       企业支持度    3        5
03   软件应用支持       应用成熟度    3        4
04   软件应用支持       书籍或文档指   2        3            新版本中文较
                  南                              少
05

ID   Class Name   Entry    Weight   Value        Memo
01   软件法律问题       软件版权协议   4        4
02   软件法律问题       专利与纠纷    1        3
03
04
05




                                        第 12 页 共 20 页
开放源代码软件成熟度评估



成熟度评估

     评估项           软件              MediaWiKi
分 子类   收集项目        类别              Web 应用
类 别               子类别              WiKi 维基
授 授权  授权许可协议        -           通用公共许可(GNU)
权 许可
许    是否与 GNU 通用    -                     兼容
可     公共授权许可
      (GPL)兼容


开 主要    开发类型       -                    社区
发 开发 主要开发人员名称      -            WiKimedia Foundation,
状 者                                  Tim Starling
况
     主要开发 人员数      -                       ?
           量
  其他 其他开发人员数量      -                       ?
  开发
   者
  软件      来源       -                     WiKi
  历史      派生       -                      否
版 历史 第一版发布时间       -                  2003-12-08
本
        发行历史       -                     7年
  版本     最新版       -                     1.19
  信息   最新稳定版       -                     1.18
     主要版本时间间隔      -                    2 个月

        (调查范围)    版本跨度                 1.9 - 1.10

     升级版本时间间隔      -                    2 个月

         (调查间隔)   版本跨度                 1.8 - 1.9
  支持    社区支持版本      -                     是
  策略
交 官方 官方网站的 URL     -     http://www.mediaWiKi.org/WiKi/MediaWi
流 网站                                      Ki
工    官方网站的搭建工      -                   MediaWiKi
具        具
  源代 源代码仓库的 URL    -     http://www.mediaWiKi.org/WiKi/Downloa
  码库                                     d/zh

     源代码库的搭建工      -                  MediaWiKi
         具

                                          第 13 页 共 20 页
开放源代码软件成熟度评估


 开发 开发组邮件列表地           -         mediaWiKi-l@lists.WiKimedia.org.
 组邮     址
 件列 开发组邮件存档信           -      https://lists.WiKimedia.org/mailman/listinf
  表  息页面的 URL                                o/mediaWiKi-l

        开发组邮件列表搭       -                       MailMan
           建工具

        开发组邮件列表的       1年                         ?
          邮件数量

 用户 用户邮件列表的地           -                          无
 邮件     址
 列表 用户邮件存档信息           -                          无
     页面的 URL

        用户邮件列表搭建       -                          无
            工具
        用户邮件列表的邮       1年                         无
           件数量
 BBS     BBS'的 URL     -      http://www.mediaWiKi.org/WiKi/Talk:Medi
 (电                                           aWiKi
 子公
        BBS 搭建工具       -                     MediaWiKi
 告板
  系     BBS 发帖数量       -                          ?
 统)
 BTS:    BTS 的 URL     -             https://bugzilla.gnome.org/
 漏洞
 追踪
        BTS 搭建工具       -                          ?
 系统
 本地     本地化/国际化        中国                       是
  化                    总计                  超过 300 种语言
 OS:       Linux        -                       是
 操作       Mac OS        -                       是
 系统       Windows       -                       是
           BSD       列举具体系统                     是
 支持
                       名称
           UNIX      列举具体系统                       是
                       名称
程 编程  编程语言              -                        PHP
序 语言
组 源代  文件数量             -                        1589
成 码 有评论代码行数量           -                        6108

        无评论代码行数量       -                        25777

                                                 第 14 页 共 20 页
开放源代码软件成熟度评估


   构架      插件支持           -                是
   GUI    官方设置工具          -                无
   设置
   工具    非官方设置工具          -                无

   GUI    官方管理工具          -                无
   管理
   工具    非官方管理工具          -                无

质 漏洞      严重漏洞数量          -                ?
量 数量
          其他漏洞数量          -                ?

   问题      修复比率           -                ?
   修复
   官方      使用手册           中文               是
   信息                   英语,其他   15(英语、德语、 西班牙语、芬兰语、法语、
                                印度尼西亚语、  意大利语、日本语、韩语、荷
                                兰语、 波兰语、葡萄牙语、巴西葡萄牙语、 越
                                         南、中文)



   非官      网页数量           中国            8,970,000
   方信                     全球           139,000,000
    息      书籍数量           中文                0
                        英文,其他               0
            用户组           中国                ?
                          其他                是
  获奖       获奖              -                ?
组 作为    红帽 Linux           -                是
件 系统   SUSE Linux          -                是
  的标      Asianux          -                是
        Turbolinux         -                是
  准安
     Debian GNU Linux      -                是
  装组
   件     FreeBSD          -                是
          Fedora          -                是
          Ubuntu          -                是
          Solaris         -                是
  安装 rpm 类型安装包            -                否
   包
      deb 类型安装包           -                否

         ports 类型安装包      -                否

         pkg 类型安装包        -                否


                                           第 15 页 共 20 页
开放源代码软件成熟度评估


               windows 安装包         -                       是

               其他类型安装包             -                       否

    商 内置 有内置于其它软件                  -                       无
    业 于其  或方案套件中
      他软
       件
      服务 技术支持维护服务                中国                        是
                                 其他                        是
                 教育培训服务          中国                        无
                                 其他                        无
                     云服务         中国                        无
                                 其他                        无
    案 案例              案例         中国                        ?
    例                            其他                        ?



MediaWiKi 软件成熟度评估结论


  按照我们的开放源代码软件评估体系计算模型的公司进行计算,最终该软件的评估结果
显示,软件成熟度较好。



参考

1   http://www.mediaWiKi.org/WiKi/MediaWiKi
2   http://www.weekeeweekee.org/mediaWiKi/
3   http://www.knowtive.com/index.php/MediaWiKi
4   http://gnuradio.microembedded.com/ GNU Radio 中文社区
5   http://ossie.microembedded.com/ OSSIE 中文维客

附录:
代码检测
Entries in perl database: 33
Entries in ruby database: 46
Entries in python database: 62
Entries in c database: 334
Entries in php database: 55

Severity: Medium
Issue: is_dir


                                                           第 16 页 共 20 页
开放源代码软件成熟度评估


A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 126 (mkdir)

    File: mediaWiKi-1.17.0//maintenance/language/lang2po.php Line:126[5]
    if ( !is_dir( $dir ) ) { mkdir( $dir, 0770 ); }

Severity: Medium
Issue: is_readable
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 57 (unlink)

    File: mediaWiKi-1.17.0//maintenance/updateSearchIndex.php Line:53[9]
    } elseif ( is_readable( 'searchUpdate.pos' ) ) {

Severity: Medium
Issue: is_file
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 2657 (unlink)

    File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2657[4]
    if ( is_file( $prefix . DATA_FILE ) ) unlink( $prefix . DATA_FILE );

Severity: Medium
Issue: is_file
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 2658 (unlink)

    File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2658[4]
    if ( is_file( $prefix . PHP_TEST ) ) unlink( $prefix . PHP_TEST );

Severity: Medium
Issue: is_file
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 2659 (unlink)

    File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2659[4]
    if ( is_file( $prefix . CURL_TEST ) ) unlink( $prefix . CURL_TEST );

Severity: Medium
Issue: is_file
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 2660 (unlink)

    File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2660[4]
    if ( is_file( $prefix . INFO_FILE ) ) unlink( $prefix . INFO_FILE );
                                                                                第 17 页 共 20 页
开放源代码软件成熟度评估



Severity: Medium
Issue: chdir
When using this function, it is important to be sure that the string being passed in does not contain relative path
elements (../ for example), or a null, which may cause underlying C calls to behave in ways you do not expect.
This is especially important if the string is in any way constructed from a user supplied value.

     File: mediaWiKi-1.17.0//maintenance/postgres/compare_schemas.pl Line:455[9]
     chdir("../..");

Severity: Medium
Issue: is_writable
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 76 (dirname) , 79 (basename) , 79
(dirname) , 81 (basename) , 81 (dirname)

     File: mediaWiKi-1.17.0//includes/installer/SqliteInstaller.php Line:98[5]
     if ( !is_writable( $dir ) ) {

Severity: Medium
Issue: is_file
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 381 (dirname)

     File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:411[4]
     if ( is_file( $archivePath ) ) {

Severity: Medium
Issue: is_file
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 582 (unlink)

     File: mediaWiKi-1.17.0//includes/filerepo/LocalFile.php Line:580[4]
     if ( is_file( $thumbDir ) ) {

Severity: Medium
Issue: is_dir
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 566 (opendir)

     File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:563[26]
     if ( !file_exists( $path ) || !is_dir( $path ) ) {

Severity: Medium
Issue: pfsockopen
                                                                                   第 18 页 共 20 页
开放源代码软件成熟度评估


Argument 1 to this function call should be checked to ensure that it does not come from an untrusted source
without first verifying that it contains nothing dangerous.

    File: mediaWiKi-1.17.0//includes/memcached-client.php Line:699[7]
    $sock = pfsockopen( $ip, $port, $errno, $errstr, $timeout );

Severity: Medium
Issue: fsockopen
Argument 1 to this function call should be checked to ensure that it does not come from an untrusted source
without first verifying that it contains nothing dangerous.

    File: mediaWiKi-1.17.0//includes/memcached-client.php Line:701[7]
    $sock = fsockopen( $ip, $port, $errno, $errstr, $timeout );

Severity: Medium
Issue: is_dir
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 182 (opendir)

    File: mediaWiKi-1.17.0//includes/filerepo/ForeignAPIFile.php Line:181[4]
    if ( is_dir( $dir ) ) {

Severity: Medium
Issue: is_dir
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 572 (rename)

    File: mediaWiKi-1.17.0//includes/filerepo/LocalFile.php Line:565[4]
    if ( is_dir( $thumbPath ) ) {

Severity: Medium
Issue: is_dir
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 602 (opendir)

    File: mediaWiKi-1.17.0//includes/filerepo/LocalFile.php Line:601[4]
    if ( is_dir( $dir ) ) {

Severity: Medium
Issue: is_file
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 216 (rename)

    File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:244[5]
    if ( !is_file( $srcPath ) )
                                                                                第 19 页 共 20 页
开放源代码软件成熟度评估



Severity: Medium
Issue: is_file
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 227 (chmod)

     File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:405[4]
     if( is_file( $dstPath ) ) {

Severity: Medium
Issue: is_file
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 267 (unlink)

     File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:247[5]
     if ( !is_file( $toAppendPath ) )

Severity: Medium
Issue: is_dir
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 34 (fopen)

     File: mediaWiKi-1.17.0//includes/media/PNGMetadataExtractor.php Line:31[33]
     elseif ( !file_exists($filename) || is_dir($filename) )

Severity: Medium
Issue: fsockopen
Argument 1 to this function call should be checked to ensure that it does not come from an untrusted source
without first verifying that it contains nothing dangerous.

     File: mediaWiKi-1.17.0//includes/proxy_check.php Line:33[8]
     $sock = @fsockopen($ip, $port, $errno, $errstr, 5);

     File: mediaWiKi-1.17.0//includes/ZhClient.php Line:36[12]
     $this->mFP = fsockopen($this->mHost, $this->mPort, $errno, $errstr, 30);

Severity: Medium
Issue: is_dir
A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has
occured. The following line(s) contain uses that may match up with this check: 38 (fopen)

     File: mediaWiKi-1.17.0//includes/media/GIFMetadataExtractor.php Line:35[33]
     elseif ( !file_exists($filename) || is_dir($filename) )

Inputs detected at the following points
                                                                                第 20 页 共 20 页

More Related Content

Similar to 开放源代码软件Media wiki成熟度评估

Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Gelis Wu
 
常用开发工具介绍
常用开发工具介绍常用开发工具介绍
常用开发工具介绍
haozes
 
Picoway Company Profile 1.5
Picoway Company Profile 1.5Picoway Company Profile 1.5
Picoway Company Profile 1.5
picoway
 
Picoway Company Profile V1.5
Picoway Company Profile V1.5Picoway Company Profile V1.5
Picoway Company Profile V1.5
picoway
 
校園共筆應用 20070725
校園共筆應用 20070725校園共筆應用 20070725
校園共筆應用 20070725
Planetoid Hsu
 
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
twMVC
 
今日如何建立一个安全的私有云
今日如何建立一个安全的私有云今日如何建立一个安全的私有云
今日如何建立一个安全的私有云
ITband
 
做好开源软件安全管理 帮您移开IoT认证的挡路石
做好开源软件安全管理 帮您移开IoT认证的挡路石做好开源软件安全管理 帮您移开IoT认证的挡路石
做好开源软件安全管理 帮您移开IoT认证的挡路石
Onward Security
 
Android ADK
Android ADKAndroid ADK
Android ADK
艾鍗科技
 
Android应用开发 - 沈大海
Android应用开发 - 沈大海Android应用开发 - 沈大海
Android应用开发 - 沈大海
Shaoning Pan
 
How to Use Trac
How to Use TracHow to Use Trac
Jira 4.0 白皮书
Jira 4.0 白皮书Jira 4.0 白皮书
Jira 4.0 白皮书YUCHENG HU
 
NPO 網站改造觀摩賽 - Day 3 - Drupal Team Report by TKY
NPO 網站改造觀摩賽 - Day 3 - Drupal Team Report by TKYNPO 網站改造觀摩賽 - Day 3 - Drupal Team Report by TKY
NPO 網站改造觀摩賽 - Day 3 - Drupal Team Report by TKY
Charles Chuang
 
安博士Asec 2010年8月安全报告
安博士Asec 2010年8月安全报告安博士Asec 2010年8月安全报告
安博士Asec 2010年8月安全报告ahnlabchina
 
学习 CodeIgniter
学习 CodeIgniter学习 CodeIgniter
学习 CodeIgniter
BruceWolf
 
20170108 微軟大數據整合解決方案- cortana intelligence suite
20170108 微軟大數據整合解決方案- cortana intelligence suite20170108 微軟大數據整合解決方案- cortana intelligence suite
20170108 微軟大數據整合解決方案- cortana intelligence suite
Meng-Ru (Raymond) Tsai
 
美国云计算发展现状及趋势-2010
美国云计算发展现状及趋势-2010美国云计算发展现状及趋势-2010
美国云计算发展现状及趋势-2010Jiang Zhu
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 long
Meng-Ru (Raymond) Tsai
 
Ria lqj
Ria lqjRia lqj
Ria lqj
huzilqj
 

Similar to 开放源代码软件Media wiki成熟度评估 (20)

Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
 
常用开发工具介绍
常用开发工具介绍常用开发工具介绍
常用开发工具介绍
 
Picoway Company Profile 1.5
Picoway Company Profile 1.5Picoway Company Profile 1.5
Picoway Company Profile 1.5
 
Picoway Company Profile V1.5
Picoway Company Profile V1.5Picoway Company Profile V1.5
Picoway Company Profile V1.5
 
行動技術開發概論
行動技術開發概論行動技術開發概論
行動技術開發概論
 
校園共筆應用 20070725
校園共筆應用 20070725校園共筆應用 20070725
校園共筆應用 20070725
 
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
 
今日如何建立一个安全的私有云
今日如何建立一个安全的私有云今日如何建立一个安全的私有云
今日如何建立一个安全的私有云
 
做好开源软件安全管理 帮您移开IoT认证的挡路石
做好开源软件安全管理 帮您移开IoT认证的挡路石做好开源软件安全管理 帮您移开IoT认证的挡路石
做好开源软件安全管理 帮您移开IoT认证的挡路石
 
Android ADK
Android ADKAndroid ADK
Android ADK
 
Android应用开发 - 沈大海
Android应用开发 - 沈大海Android应用开发 - 沈大海
Android应用开发 - 沈大海
 
How to Use Trac
How to Use TracHow to Use Trac
How to Use Trac
 
Jira 4.0 白皮书
Jira 4.0 白皮书Jira 4.0 白皮书
Jira 4.0 白皮书
 
NPO 網站改造觀摩賽 - Day 3 - Drupal Team Report by TKY
NPO 網站改造觀摩賽 - Day 3 - Drupal Team Report by TKYNPO 網站改造觀摩賽 - Day 3 - Drupal Team Report by TKY
NPO 網站改造觀摩賽 - Day 3 - Drupal Team Report by TKY
 
安博士Asec 2010年8月安全报告
安博士Asec 2010年8月安全报告安博士Asec 2010年8月安全报告
安博士Asec 2010年8月安全报告
 
学习 CodeIgniter
学习 CodeIgniter学习 CodeIgniter
学习 CodeIgniter
 
20170108 微軟大數據整合解決方案- cortana intelligence suite
20170108 微軟大數據整合解決方案- cortana intelligence suite20170108 微軟大數據整合解決方案- cortana intelligence suite
20170108 微軟大數據整合解決方案- cortana intelligence suite
 
美国云计算发展现状及趋势-2010
美国云计算发展现状及趋势-2010美国云计算发展现状及趋势-2010
美国云计算发展现状及趋势-2010
 
20141212 html5 及微軟跨平台佈局 long
20141212 html5 及微軟跨平台佈局   long20141212 html5 及微軟跨平台佈局   long
20141212 html5 及微軟跨平台佈局 long
 
Ria lqj
Ria lqjRia lqj
Ria lqj
 

More from YUCHENG HU

Confluencewiki 使用空间
Confluencewiki 使用空间Confluencewiki 使用空间
Confluencewiki 使用空间
YUCHENG HU
 
Git
GitGit
Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件
YUCHENG HU
 
Logback 介绍
Logback 介绍Logback 介绍
Logback 介绍
YUCHENG HU
 
Presta shop 1.6 详细安装指南
Presta shop 1.6 详细安装指南Presta shop 1.6 详细安装指南
Presta shop 1.6 详细安装指南
YUCHENG HU
 
Presta shop 1.6 的安装环境
Presta shop 1.6 的安装环境Presta shop 1.6 的安装环境
Presta shop 1.6 的安装环境
YUCHENG HU
 
Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件
YUCHENG HU
 
Presta shop 1.6 图文安装教程
Presta shop 1.6 图文安装教程Presta shop 1.6 图文安装教程
Presta shop 1.6 图文安装教程
YUCHENG HU
 
V tiger 5.4.0 图文安装教程
V tiger 5.4.0 图文安装教程V tiger 5.4.0 图文安装教程
V tiger 5.4.0 图文安装教程
YUCHENG HU
 
Confluence 回顾(retrospectives) 蓝图 cwikiossez
Confluence 回顾(retrospectives) 蓝图   cwikiossezConfluence 回顾(retrospectives) 蓝图   cwikiossez
Confluence 回顾(retrospectives) 蓝图 cwikiossezYUCHENG HU
 
Confluence 会议记录(meeting notes)蓝图 cwikiossez
Confluence 会议记录(meeting notes)蓝图   cwikiossezConfluence 会议记录(meeting notes)蓝图   cwikiossez
Confluence 会议记录(meeting notes)蓝图 cwikiossez
YUCHENG HU
 
VTIGER - 销售机会 - CWIKIOSSEZ
VTIGER - 销售机会 - CWIKIOSSEZ VTIGER - 销售机会 - CWIKIOSSEZ
VTIGER - 销售机会 - CWIKIOSSEZ
YUCHENG HU
 
Confluence 使用一个模板新建一个页面 cwikiossez
Confluence 使用一个模板新建一个页面     cwikiossezConfluence 使用一个模板新建一个页面     cwikiossez
Confluence 使用一个模板新建一个页面 cwikiossez
YUCHENG HU
 
Confluence 使用模板
Confluence 使用模板Confluence 使用模板
Confluence 使用模板
YUCHENG HU
 
Cwikiossez confluence 订阅页面更新邮件通知
Cwikiossez confluence 订阅页面更新邮件通知Cwikiossez confluence 订阅页面更新邮件通知
Cwikiossez confluence 订阅页面更新邮件通知
YUCHENG HU
 
Cwikiossez confluence 关注页面 博客页面和空间
Cwikiossez confluence 关注页面 博客页面和空间Cwikiossez confluence 关注页面 博客页面和空间
Cwikiossez confluence 关注页面 博客页面和空间
YUCHENG HU
 
My sql università di enna a.a. 2005-06
My sql   università di enna a.a. 2005-06My sql   università di enna a.a. 2005-06
My sql università di enna a.a. 2005-06
YUCHENG HU
 
My sql would you like transactions
My sql would you like transactionsMy sql would you like transactions
My sql would you like transactions
YUCHENG HU
 
MySQL 指南
MySQL 指南MySQL 指南
MySQL 指南
YUCHENG HU
 
MySQL 简要介绍
MySQL 简要介绍MySQL 简要介绍
MySQL 简要介绍
YUCHENG HU
 

More from YUCHENG HU (20)

Confluencewiki 使用空间
Confluencewiki 使用空间Confluencewiki 使用空间
Confluencewiki 使用空间
 
Git
GitGit
Git
 
Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件
 
Logback 介绍
Logback 介绍Logback 介绍
Logback 介绍
 
Presta shop 1.6 详细安装指南
Presta shop 1.6 详细安装指南Presta shop 1.6 详细安装指南
Presta shop 1.6 详细安装指南
 
Presta shop 1.6 的安装环境
Presta shop 1.6 的安装环境Presta shop 1.6 的安装环境
Presta shop 1.6 的安装环境
 
Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件Presta shop 1.6 如何安装简体中文语言文件
Presta shop 1.6 如何安装简体中文语言文件
 
Presta shop 1.6 图文安装教程
Presta shop 1.6 图文安装教程Presta shop 1.6 图文安装教程
Presta shop 1.6 图文安装教程
 
V tiger 5.4.0 图文安装教程
V tiger 5.4.0 图文安装教程V tiger 5.4.0 图文安装教程
V tiger 5.4.0 图文安装教程
 
Confluence 回顾(retrospectives) 蓝图 cwikiossez
Confluence 回顾(retrospectives) 蓝图   cwikiossezConfluence 回顾(retrospectives) 蓝图   cwikiossez
Confluence 回顾(retrospectives) 蓝图 cwikiossez
 
Confluence 会议记录(meeting notes)蓝图 cwikiossez
Confluence 会议记录(meeting notes)蓝图   cwikiossezConfluence 会议记录(meeting notes)蓝图   cwikiossez
Confluence 会议记录(meeting notes)蓝图 cwikiossez
 
VTIGER - 销售机会 - CWIKIOSSEZ
VTIGER - 销售机会 - CWIKIOSSEZ VTIGER - 销售机会 - CWIKIOSSEZ
VTIGER - 销售机会 - CWIKIOSSEZ
 
Confluence 使用一个模板新建一个页面 cwikiossez
Confluence 使用一个模板新建一个页面     cwikiossezConfluence 使用一个模板新建一个页面     cwikiossez
Confluence 使用一个模板新建一个页面 cwikiossez
 
Confluence 使用模板
Confluence 使用模板Confluence 使用模板
Confluence 使用模板
 
Cwikiossez confluence 订阅页面更新邮件通知
Cwikiossez confluence 订阅页面更新邮件通知Cwikiossez confluence 订阅页面更新邮件通知
Cwikiossez confluence 订阅页面更新邮件通知
 
Cwikiossez confluence 关注页面 博客页面和空间
Cwikiossez confluence 关注页面 博客页面和空间Cwikiossez confluence 关注页面 博客页面和空间
Cwikiossez confluence 关注页面 博客页面和空间
 
My sql università di enna a.a. 2005-06
My sql   università di enna a.a. 2005-06My sql   università di enna a.a. 2005-06
My sql università di enna a.a. 2005-06
 
My sql would you like transactions
My sql would you like transactionsMy sql would you like transactions
My sql would you like transactions
 
MySQL 指南
MySQL 指南MySQL 指南
MySQL 指南
 
MySQL 简要介绍
MySQL 简要介绍MySQL 简要介绍
MySQL 简要介绍
 

开放源代码软件Media wiki成熟度评估

  • 2. 开放源代码软件成熟度评估 目录 目录.............................................................................................................................................................................2 概述.............................................................................................................................................................................3 开源软件成熟度评估案例........................................................................................................................................3 MediaWiKi 软件成熟度评估报告....................................................................................................................3 MediaWiKi 数据库软件介绍....................................................................................................................3 MediaWiKi 软件代码质量评测................................................................................................................7 软件测试..................................................................................................................................................10 MediaWiKi 易用性研究...........................................................................................................................11 软件成熟度评估..............................................................................................................................................11 软件成熟度属性定义与量化..................................................................................................................11 成熟度评估..............................................................................................................................................13 MediaWiKi 软件成熟度评估结论..........................................................................................................16 第 2 页 共 20 页
  • 3. 开放源代码软件成熟度评估 概述 21 世纪的计算机世界是丰富多彩的,不仅计算机硬件性能有了质的飞跃,计算机软件 在功能性、复杂度上都是以前无法比拟的。尤其是互联网及网络应用的出现,极大的丰富了 人们的计算机应用,拓展了应用的领域,将应用水平提高到一个崭新的水平。 对于复杂应用, 如何来保障应用软件的质量,如何评估那些纷繁复杂的应用系统呢。 人们进行了多方面的探 索,形成了众多软件成熟度评价模型。中国也为此颁布了软件质量国家标准 GB-T8566-- 2001G,从而指导软件开发者和使用者正确的评价一个软件的质量及其应用的成熟度。那么, 对于开源世界,我们如何看待,又如何正确评价一个软件的成熟度状况呢。 我们知道,软件成熟度评估的最终目标是帮助软件的可持续发展,并为用户应用提供 必要的技术参考。开放源代码软件成熟度评估也不例外。我们通过软件的成熟度评估,形成 全面的涉及技术、应用、法律等层面的评价报告,帮助那些正在或潜在的开源软件使用者准 确的了解软件的技术特性和应用特性,从而为他们选择适合自身需求的开源软件提供参考。 同时报告中涉及的大量评测数据,为开源软件的开发者提供帮助,促进他们有效的改善软 件在技术方面和使用方面的质量,使软件不断成熟和可持续的发展。 开放源代码软件由于开发模式和运作模式的独特性,其软件带有鲜明的特点。开放源码 软件成熟度评估的方法需要我们在实践中不断的探索。我们将提出一些基本的原则和方法, 并建立我们自己的评估体系和计算模型。 开源软件成熟度评估案例 根据以上描述,我们初步制定了一个适合于开放源代码软件成熟度评估的评价体系和 实施方法。接下来我们将通过两个案例说明我们的评价体系是如何工作的。我们选取 MediaWiKi 数据库软件进行评估。从这些软件的案例评估当中可以看到,我们的评估体系会 对不同类别的软件做针对性判别,从而得出基于该类软件的可比较的评估结果。 技术架构分析和代码评测是开源软件成熟度评估中最重要、也是区别于传统商业软件评 估最有特色的部分。我们将做重点说明。 MediaWiKi 软件成熟度评估报告 MediaWiKi 数据库软件介绍 第 3 页 共 20 页
  • 4. 开放源代码软件成熟度评估 MediaWiKi 软件名称 MediaWiKi 主页 http://www.mediaWiKi.org/WiKi/MediaWiKi 社区 http://www.mediaWiKi.org/WiKi/Talk:MediaWiKi 支持公司 维基媒体基金会 公司简介 维 基 媒 体 基 金 会 ( WiKimedia Foundation Inc. ) , 简 称 维 基 媒 体 (WiKimedia),是负责维基百科、 维基词典、 维基语录、维基教科书、 维基 文 库 、 维 基 物 种 、 维 基 新 闻 、 维 基 共 享 资 源 、 In Memoriam 9/11 和 Nupedia(已停止)计划的非盈利组织,在美国佛罗里达州注册。 成熟度 B 评价 一套基于网络的 WiKi 引擎,维基媒体基金会的所有项目乃至众多 WiKi 网站皆采用了这一软件。MediaWiKi 软件最初是为自由内容百科全书维 基百科所开发,今日已被一些公司机构部署为内部的知识管理和内容管 理系统。Novell 甚而还在多个高流量的网站中使用了该软件。 软件简介  基本介绍 MediaWiKi 采用 PHP 编程语言写成,并可使用 MySQL 或 PostgreSQL 之一作为其关系数 据库管理系统。MediaWiKi 在 GNU 通用公共许可证第 2 版及其后续版本的条款下分发,其文 档则按知识共享-署名-相同方式共享 3.0 版协议发布,部分文档还发布于公有领域,这使其 成为了自由开源的软件。 MediaWiKi 具有很丰富的功能,并被维基百科及其他维基媒体基金会的计划所采用,亦 为世界上很多不同的维基所采用。 MediaWiKi 采用 PHP 语言写成,并以 MySQL 作为其资料 库。它的徽标图像化了它如何运用标记语言即双括号 ("","") 来连结不同的文章。MediaWiKi 具有很高的相容性和可塑性,现在的版本支持 memcached 及 Squid cache 系统,亦支持 TeX 数学公式。其扩展系统允许用户自行添加他们需要的特性及定制化程序界面。 MediaWiKi 是一个运行在服务器端的自由软件,基于 GNU General Public License(GPL 协议)发行。 它能够平稳地运行在日访问量上百万的网站服务器集群中。 MediaWiKi 是一个强 大、可扩展、 功能丰富的维基套件,它使用 PHP 技术来访问和显示存储在 MySQL 数据库中的 数据。 使用 MediaWiKi 的维基文本格式,用户不必懂得 XHTML 或是 CSS 也可以很容易的编辑 内容。 当用户对页面进行编辑之后,MediaWiKi 将它写入数据库,但是不会删除这个页面的先 前版本,这使得页面遭到故意破坏或垃圾信息干扰时可以快速恢复。MediaWiKi 也可以管理 第 4 页 共 20 页
  • 5. 开放源代码软件成熟度评估 图像和多媒体文件,这些文件存储在文件系统中。对于拥有大量用户的大型维基网站 , MediaWiKi 支持缓存并且可以很容易的外加 Squid 代理服务器软件。  历史 在科隆大学的学生及开发者马格努斯·曼斯克(Magnus Manske)设计的用户界面基础 上,李·丹尼尔·克罗克(Lee Daniel Crocker)为维基百科编写了现在的这一软件。 维基百科最 初曾经使用 Perl 语言编写的小型 WiKi 引擎 UseModWiKi 作为后台,其后则换用了 Manske 用 PHP 编写的软件来提供更多的功能。随着使用量的日益增长,页面加载的问题日益严重,这 促使克罗克重写了该软件,采用了扩展性更强的 MySQL 后台数据库。后来,维基媒体基金 会的首席技术官布里昂·维伯(Brion Vibber)成为了该软件的发布经理及其最活跃的开发者。 随着曼斯克程序第一版的发布,该软件曾被赋予了多项昵称,以表示当时的开发状态—— “PHP 脚本”(the PHP script)、“第二期”(phase II)、 “第三期”(phase III)、 “新代码 库”(the new codebase)——但并无正式的产品名称。 2003 年 6 月 20 日,随着维基媒体基 金会的宣布成立,作为对“WiKimedia”(维基媒体)的戏称,维基百科贡献者丹尼尔·迈耶 (Daniel Mayer)创造了“MediaWiKi”一词来称呼这一软件,并在 2003 年 8 月开始逐步得到 采 用 。 由 于 这 一 名 称 有 意 地 相 似 于 “ WiKimedia” 一 名 ( 而 “ WiKimedia” 还 相 似 于 “WiKipedia”),因而经常造成混淆。该软件的标志由埃里克·默勒(Erik Möller)基于弗洛 朗丝·尼巴尔-德伍阿尔拍摄的太阳花照片制作,最初用于参加维基百科在 2003 年年中举行 的国际性标志竞赛。该标志被评为第三名,并被选作 MediaWiKi 的标志;第二名的标志则被 选为维基媒体基金会的标志。太阳花两侧的双重方括号象征着 MediaWiKi 用来创建超链接到 其他 WiKi 页面的语法。 架构 功能特性 第 5 页 共 20 页
  • 6. 开放源代码软件成熟度评估  基本功能 编辑功能:具有容易书写(并且功能齐全)的格式规则,具备所见即所得功能,可以分章 节编辑,能够方便地参阅以前的版本,并且具有上传文本,插入图像,和书写科学公式的 能力。 阅览功能:包含目录,检索,导航条,访问统计,文章评分,高品位打印输出等功能。 用户管理:包含个人页面,工具条的个人定义,个人偏好的设置等功能。 群件功能:包含论坛,图库,信息传递系统等功能。 访问控制:这对必须考虑安全因素的企业内部网络来说很重要。 格式转换:文件导入(HTML、DOC)和文件导出(DOC、PDF)。 个人界面:可设置个人的主页,顶边栏,底边栏,侧边栏;还有模板。 多国语言:多国语言的支持。 可扩展性:具有什么样的第三方插件,什么样的机构使你制作的插件得以运行。 可移植性:支持多种平台。 可延拓性:当页面变得数量庞大时,此 WiKi 引擎是否可行。大多数可扩展的 WiKi 引擎都用 一个后端数据库来存储页面。 系统特色 1、记录所有的改动版本,能方便的查阅历史更新记录,这使得开放性编辑成为可能 2、自动产生链接,编辑文本中中括号中的内容(如“[[X 条目]]”)将自动产生链接    3、允许使用模板,方便对相同内容的重复使用、更新    4、支持分类,并根据分类在不同的文章之间自动产生关联    5、允许每个用户自行选择系统外观    6、中文支持好,但是中文名附件会有乱码问题  技术特性 1 、 经受过重量级应用的考验,功能丰富却架设简单  2、 全世界最大的 WiKi 项目维基百科是使用 MediaWiKi 的成功范例,数据量、访问量都超级庞 大    3 、 MediaWiKi 的功能非常丰富,支持多语言版本,充分满足知识站点的需要    4 、运行环境要求很低,架设过程简洁,即使新手也可以迅速建立自己的站点    5、MediaWiKi 是目前应用最广的 WiKi 程序,数以万计的网站在使用它,很容易找到范例站点 6、有大量的热心参与人员参与研究,资料多,容易找到互相交流的朋友  7、 持续开发,程序特性功能不断完善,保证未来的支持  运行环境 操作系统及应用环境: 任何一种可以运行 PHP5 与 MySQL 的操作系统: Microsoft Windows,例如: Windows 2000、Windows Server 2003、Windows Server 2008 Linux(例如,Fedora……) BSD(例如,FreeBSD……) 数据库:MySQL 或 PostgreSQL 动态网页技术:PHP5 第 6 页 共 20 页
  • 7. 开放源代码软件成熟度评估 网页服务器:Apache 或 IIS MediaWiKi 软件代码质量评测 评测工具介绍 市场上有多种软件质量分析软件,但大多数都价格昂贵,并且一般分析软件的性能很 难支持大规模的代码量。我们与智诚创新科技有限公司合作,通过该公司提供的 Klocwork 静态分析软件对 MediaWiKi 进行系统的代码分析,按级别整理分析结果,找出代码缺陷和 安全漏洞,提高 MediaWiKi 的软件质量。 RATS(Rough Auditing Tool for Security)是一个开源的静态代码分析工具,它由 Secure Software 公司开发和维护,Secure Software 公司已被 Fortify 软件公司收购 (Fortify 软件公司现已被 HP 公司收购)。RATS 可对 C,C++,Perl,PHP,Python 等语言 的源代码进行静态分析,可标注出编程中经常出现的安全性错误,例如:缓存溢出, TOCTOU (Time Of Check, Time Of Use) race conditions 等。 RATS 扫描工具提供了一个安全分析模块,这个模块含有一个列表,此列表存储的是可 能出现的安全问题以及处理建议。RATS 还对每个安全问题的潜在危险程度进行评估,为评 估人员提供参考。RATS 还提供一些基本的分析以消除一些伪错误。 正如 RATS 这个软件的名称所示,该工具只是对源代码进行一个粗略的分析,它不能找 到所有的错误同时也不能保证找到的错误都是真正的错误,所以人工的手动审查是必须的, 可以将该工具视为有力的辅助工具。 该软件的主要功能有: 软件缺陷检测 提供多角度的各种缺陷类型分析。 自动化的缺陷检测功能易于使用,定制灵活,具有图 形化的构建和报表管理图形界面,拥有先进的消息过虑器,强大的学习调整知识库 。 Klocwork 能够分析 C/C++和 Java 代码,生成代码问题报告。 安全漏洞检测 软件安全性时软件质量中一个重要的、并越来越收到重视的方面。Klocwork 安全漏洞分 析基于其先进的软件缺陷分析能力,分离出单独的安全漏洞和违反推荐的安全代码的缺陷 程序。 软件架构分析 通过架构分析能够使设计人员及开发人员重新认识他们对该软件的架构理解,并结合 代码分析进行功能强大的影响分析,帮助开发人员找出软件的架构可能会对高质量代码的 开发有何种影响。 软件度量分析 第 7 页 共 20 页
  • 8. 开放源代码软件成熟度评估 搜集统计软件的代码信息,比如,文件数,代码行数,代码复杂度,继承或循环数量 等。帮助开发者和维护着宏观上掌握程序开发的复杂度,便于有针对性的进行代码管理。 可定制的代码分析 许多组织有自己独特的编码标准、安全策略和质量目标。可利用 klocwork 为一些特殊问 题的分析进行单独定制,用户也可以编制自己的扩展检查器来完成特定任务。 开发人员 IDE 集成 klocwork 可以和现在大多是主流的 IDE 开发环境集成,在开发的早期及时发现可能的代码 漏洞从而有效降低开发成本。 代码评测报告摘要: Summary: Project name: MediaWiKi Build name: build_1 Created on: Oct 31, 2007 Files analyzed: 531 Lines of code (Source LOC): 124,534 Defects Overview Defects Overview: Number of defects 192 Defect Density: 1.54 Header File Problems Overview: Number of defects 1,648 Defect Density: 3.23 Security Vulnerabilities Overview: Number of defects 47 Defect Density: .38 Dependent Headers Overview: Number of dependent header files: 142 Unnecessary Compile Expansion Overview: Unnecessary compile expansion: 539,192 第 8 页 共 20 页
  • 9. 开放源代码软件成熟度评估 Compile expansion before include optimization: 4,393,144 Compile expansion after include optimization: 3,853,952 System Complexity Overview: Complexity (function average): 8.58 Complexity (per file peak averaged across system): 32.57 Number of highly complex functions: 362 Number of files with highly complex functions: 103 Project configuration details: Creation date: Oct 31, 2007 Creation time: 1:55:39 PM Software Intelligence Engine version: 7.7.2.3 Number of filter files used: 0 Project name: MediaWiKi Build name: build_1 Total lines of code (Source LOC): 124,534 Total lines of comments (in c/c++ files): 37,739 Total number of files analyzed: 531 Total number of defects: 1,887 Total number of entities: 24,674 Total number of relationships: Total number of functions / methods: 3,695 Total number of classes / types: 1,520 Error Distribution 第 9 页 共 20 页
  • 10. 开放源代码软件成熟度评估 Type # % Null pointer may be dereferenced 4 2.08 Result of function that may return 164 85.42 NULL will be dereferenced Suspicious dereference of pointer in 2 1.04 function call before NULL check Memory Leak - possible 2 1.04 Pointer may be dereferenced after it 2 1.04 was positively checked for NULL Null pointer may be passed to 1 0.52 function that may dereference it Null pointer will be dereferenced 2 1.04 Result of function that can return 12 6.25 NULL may be dereferenced Suspicious dereference of pointer 2 1.04 before NULL check Warning Distribution Type # % Inconsistent Case Labels 1 0.52 评测分析 通过对 MediaWiKi 模块的分析,我们得出评测结论。代码的整体风格统一,格式工整, 总体质量较好。程序结构复杂度合理,出现较多的问题主要是代码中潜在的对 NULL 对象的 引用。注释方面,注释丰富,每个程序文件有基本说明,某些重要的代码有详细解释,给社 区参与创造了较好的代码环境。 软件测试 MediaWiKi 项目有专门的 Quality Assurance 组织,并且存在专门的商业公司负责软件 的商业支持与问题反馈。 在网站有专门的用户报告错误或参与测试的页面,错误的报告也可 通过 Mail Lis 进行。项目提供了一个批处理自动测试环境和一些工具供测试者使用,可以 方便的对软件的主要模块进行自动仿真测试。 第 10 页 共 20 页
  • 11. 开放源代码软件成熟度评估 MediaWiKi 易用性研究 MediaWiKi 无图形配置、使用、监控环境。软件的主要配置和管理靠修改配置文件进行, 不过,软件提供了一些功能丰富的命令行工具,这也是服务器软件的一般做法。 软件的部署 和配置非常灵活,缺点是缺乏好的监控工具。 软件成熟度评估 软件成熟度属性定义与量化 ID Class Name Weight 01 技术架构设计 4 02 代码质量 4 03 软件易用性 1 04 软件可用性 4 05 项目建设与管理 2 06 项目的活跃程度 4 07 项目测试情况 2 08 软件应用支持 4 09 软件法律问题 1 以下为各属性类的属性定义: ID Class Name Entry Weight Value Memo 01 技术架构设计 合理性 4 4 02 技术架构设计 可扩展性 3 5 03 技术架构设计 可移植性 2 4 04 05 06 ID Class Name Entry Weight Value Memo 01 代码质量 代码错误率 4 4 02 代码质量 代码可读性 4 5 03 代码质量 代码复杂度 2 4 04 05 06 ID Class Name Entry Weight Value Memo 01 软件易用性 易理解性 2 3 02 软件易用性 易学习性 2 3 03 软件易用性 易操作性 4 4 04 05 06 第 11 页 共 20 页
  • 12. 开放源代码软件成熟度评估 ID Class Name Entry Weight Value Memo 01 软件可用性 完备性 3 4 02 软件可用性 正确性 4 4 03 软件可用性 可靠性 4 5 04 软件可用性 安全性 2 3 05 06 ID Class Name Entry Weight Value Memo 01 项目建设与管 组织架构 2 2 理 02 项目建设与管 开发管理 4 4 理 03 项目建设与管 网站建设 3 4 理 04 05 ID Class Name Entry Weight Value Memo 01 项目的活跃程 版本发布周期 2 4 度 02 项目的活跃程 软件下载量 3 4 度 03 项目的活跃程 交流机制 4 4 度 04 05 ID Class Name Entry Weight Value Memo 01 项目测试情况 测试方法(工 3 4 具) 02 项目测试情况 测试人员 4 4 03 项目测试情况 测试反馈 2 3 04 05 ID Class Name Entry Weight Value Memo 01 软件应用支持 社区支持度 4 4 02 软件应用支持 企业支持度 3 5 03 软件应用支持 应用成熟度 3 4 04 软件应用支持 书籍或文档指 2 3 新版本中文较 南 少 05 ID Class Name Entry Weight Value Memo 01 软件法律问题 软件版权协议 4 4 02 软件法律问题 专利与纠纷 1 3 03 04 05 第 12 页 共 20 页
  • 13. 开放源代码软件成熟度评估 成熟度评估 评估项 软件 MediaWiKi 分 子类 收集项目 类别 Web 应用 类 别 子类别 WiKi 维基 授 授权 授权许可协议 - 通用公共许可(GNU) 权 许可 许 是否与 GNU 通用 - 兼容 可 公共授权许可 (GPL)兼容 开 主要 开发类型 - 社区 发 开发 主要开发人员名称 - WiKimedia Foundation, 状 者 Tim Starling 况 主要开发 人员数 - ? 量 其他 其他开发人员数量 - ? 开发 者 软件 来源 - WiKi 历史 派生 - 否 版 历史 第一版发布时间 - 2003-12-08 本 发行历史 - 7年 版本 最新版 - 1.19 信息 最新稳定版 - 1.18 主要版本时间间隔 - 2 个月 (调查范围) 版本跨度 1.9 - 1.10 升级版本时间间隔 - 2 个月 (调查间隔) 版本跨度 1.8 - 1.9 支持 社区支持版本 - 是 策略 交 官方 官方网站的 URL - http://www.mediaWiKi.org/WiKi/MediaWi 流 网站 Ki 工 官方网站的搭建工 - MediaWiKi 具 具 源代 源代码仓库的 URL - http://www.mediaWiKi.org/WiKi/Downloa 码库 d/zh 源代码库的搭建工 - MediaWiKi 具 第 13 页 共 20 页
  • 14. 开放源代码软件成熟度评估 开发 开发组邮件列表地 - mediaWiKi-l@lists.WiKimedia.org. 组邮 址 件列 开发组邮件存档信 - https://lists.WiKimedia.org/mailman/listinf 表 息页面的 URL o/mediaWiKi-l 开发组邮件列表搭 - MailMan 建工具 开发组邮件列表的 1年 ? 邮件数量 用户 用户邮件列表的地 - 无 邮件 址 列表 用户邮件存档信息 - 无 页面的 URL 用户邮件列表搭建 - 无 工具 用户邮件列表的邮 1年 无 件数量 BBS BBS'的 URL - http://www.mediaWiKi.org/WiKi/Talk:Medi (电 aWiKi 子公 BBS 搭建工具 - MediaWiKi 告板 系 BBS 发帖数量 - ? 统) BTS: BTS 的 URL - https://bugzilla.gnome.org/ 漏洞 追踪 BTS 搭建工具 - ? 系统 本地 本地化/国际化 中国 是 化 总计 超过 300 种语言 OS: Linux - 是 操作 Mac OS - 是 系统 Windows - 是 BSD 列举具体系统 是 支持 名称 UNIX 列举具体系统 是 名称 程 编程 编程语言 - PHP 序 语言 组 源代 文件数量 - 1589 成 码 有评论代码行数量 - 6108 无评论代码行数量 - 25777 第 14 页 共 20 页
  • 15. 开放源代码软件成熟度评估 构架 插件支持 - 是 GUI 官方设置工具 - 无 设置 工具 非官方设置工具 - 无 GUI 官方管理工具 - 无 管理 工具 非官方管理工具 - 无 质 漏洞 严重漏洞数量 - ? 量 数量 其他漏洞数量 - ? 问题 修复比率 - ? 修复 官方 使用手册 中文 是 信息 英语,其他 15(英语、德语、 西班牙语、芬兰语、法语、 印度尼西亚语、 意大利语、日本语、韩语、荷 兰语、 波兰语、葡萄牙语、巴西葡萄牙语、 越 南、中文) 非官 网页数量 中国 8,970,000 方信 全球 139,000,000 息 书籍数量 中文 0 英文,其他 0 用户组 中国 ? 其他 是 获奖 获奖 - ? 组 作为 红帽 Linux - 是 件 系统 SUSE Linux - 是 的标 Asianux - 是 Turbolinux - 是 准安 Debian GNU Linux - 是 装组 件 FreeBSD - 是 Fedora - 是 Ubuntu - 是 Solaris - 是 安装 rpm 类型安装包 - 否 包 deb 类型安装包 - 否 ports 类型安装包 - 否 pkg 类型安装包 - 否 第 15 页 共 20 页
  • 16. 开放源代码软件成熟度评估 windows 安装包 - 是 其他类型安装包 - 否 商 内置 有内置于其它软件 - 无 业 于其 或方案套件中 他软 件 服务 技术支持维护服务 中国 是 其他 是 教育培训服务 中国 无 其他 无 云服务 中国 无 其他 无 案 案例 案例 中国 ? 例 其他 ? MediaWiKi 软件成熟度评估结论 按照我们的开放源代码软件评估体系计算模型的公司进行计算,最终该软件的评估结果 显示,软件成熟度较好。 参考 1 http://www.mediaWiKi.org/WiKi/MediaWiKi 2 http://www.weekeeweekee.org/mediaWiKi/ 3 http://www.knowtive.com/index.php/MediaWiKi 4 http://gnuradio.microembedded.com/ GNU Radio 中文社区 5 http://ossie.microembedded.com/ OSSIE 中文维客 附录: 代码检测 Entries in perl database: 33 Entries in ruby database: 46 Entries in python database: 62 Entries in c database: 334 Entries in php database: 55 Severity: Medium Issue: is_dir 第 16 页 共 20 页
  • 17. 开放源代码软件成熟度评估 A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 126 (mkdir) File: mediaWiKi-1.17.0//maintenance/language/lang2po.php Line:126[5] if ( !is_dir( $dir ) ) { mkdir( $dir, 0770 ); } Severity: Medium Issue: is_readable A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 57 (unlink) File: mediaWiKi-1.17.0//maintenance/updateSearchIndex.php Line:53[9] } elseif ( is_readable( 'searchUpdate.pos' ) ) { Severity: Medium Issue: is_file A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 2657 (unlink) File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2657[4] if ( is_file( $prefix . DATA_FILE ) ) unlink( $prefix . DATA_FILE ); Severity: Medium Issue: is_file A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 2658 (unlink) File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2658[4] if ( is_file( $prefix . PHP_TEST ) ) unlink( $prefix . PHP_TEST ); Severity: Medium Issue: is_file A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 2659 (unlink) File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2659[4] if ( is_file( $prefix . CURL_TEST ) ) unlink( $prefix . CURL_TEST ); Severity: Medium Issue: is_file A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 2660 (unlink) File: mediaWiKi-1.17.0//maintenance/fuzz-tester.php Line:2660[4] if ( is_file( $prefix . INFO_FILE ) ) unlink( $prefix . INFO_FILE ); 第 17 页 共 20 页
  • 18. 开放源代码软件成熟度评估 Severity: Medium Issue: chdir When using this function, it is important to be sure that the string being passed in does not contain relative path elements (../ for example), or a null, which may cause underlying C calls to behave in ways you do not expect. This is especially important if the string is in any way constructed from a user supplied value. File: mediaWiKi-1.17.0//maintenance/postgres/compare_schemas.pl Line:455[9] chdir("../.."); Severity: Medium Issue: is_writable A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 76 (dirname) , 79 (basename) , 79 (dirname) , 81 (basename) , 81 (dirname) File: mediaWiKi-1.17.0//includes/installer/SqliteInstaller.php Line:98[5] if ( !is_writable( $dir ) ) { Severity: Medium Issue: is_file A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 381 (dirname) File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:411[4] if ( is_file( $archivePath ) ) { Severity: Medium Issue: is_file A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 582 (unlink) File: mediaWiKi-1.17.0//includes/filerepo/LocalFile.php Line:580[4] if ( is_file( $thumbDir ) ) { Severity: Medium Issue: is_dir A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 566 (opendir) File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:563[26] if ( !file_exists( $path ) || !is_dir( $path ) ) { Severity: Medium Issue: pfsockopen 第 18 页 共 20 页
  • 19. 开放源代码软件成熟度评估 Argument 1 to this function call should be checked to ensure that it does not come from an untrusted source without first verifying that it contains nothing dangerous. File: mediaWiKi-1.17.0//includes/memcached-client.php Line:699[7] $sock = pfsockopen( $ip, $port, $errno, $errstr, $timeout ); Severity: Medium Issue: fsockopen Argument 1 to this function call should be checked to ensure that it does not come from an untrusted source without first verifying that it contains nothing dangerous. File: mediaWiKi-1.17.0//includes/memcached-client.php Line:701[7] $sock = fsockopen( $ip, $port, $errno, $errstr, $timeout ); Severity: Medium Issue: is_dir A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 182 (opendir) File: mediaWiKi-1.17.0//includes/filerepo/ForeignAPIFile.php Line:181[4] if ( is_dir( $dir ) ) { Severity: Medium Issue: is_dir A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 572 (rename) File: mediaWiKi-1.17.0//includes/filerepo/LocalFile.php Line:565[4] if ( is_dir( $thumbPath ) ) { Severity: Medium Issue: is_dir A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 602 (opendir) File: mediaWiKi-1.17.0//includes/filerepo/LocalFile.php Line:601[4] if ( is_dir( $dir ) ) { Severity: Medium Issue: is_file A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 216 (rename) File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:244[5] if ( !is_file( $srcPath ) ) 第 19 页 共 20 页
  • 20. 开放源代码软件成熟度评估 Severity: Medium Issue: is_file A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 227 (chmod) File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:405[4] if( is_file( $dstPath ) ) { Severity: Medium Issue: is_file A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 267 (unlink) File: mediaWiKi-1.17.0//includes/filerepo/FSRepo.php Line:247[5] if ( !is_file( $toAppendPath ) ) Severity: Medium Issue: is_dir A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 34 (fopen) File: mediaWiKi-1.17.0//includes/media/PNGMetadataExtractor.php Line:31[33] elseif ( !file_exists($filename) || is_dir($filename) ) Severity: Medium Issue: fsockopen Argument 1 to this function call should be checked to ensure that it does not come from an untrusted source without first verifying that it contains nothing dangerous. File: mediaWiKi-1.17.0//includes/proxy_check.php Line:33[8] $sock = @fsockopen($ip, $port, $errno, $errstr, 5); File: mediaWiKi-1.17.0//includes/ZhClient.php Line:36[12] $this->mFP = fsockopen($this->mHost, $this->mPort, $errno, $errstr, 30); Severity: Medium Issue: is_dir A potential TOCTOU (Time Of Check, Time Of Use) vulnerability exists. This is the first line where a check has occured. The following line(s) contain uses that may match up with this check: 38 (fopen) File: mediaWiKi-1.17.0//includes/media/GIFMetadataExtractor.php Line:35[33] elseif ( !file_exists($filename) || is_dir($filename) ) Inputs detected at the following points 第 20 页 共 20 页