我已经设法使用 grunt-tslint 来分析我的打字稿项目。我有几个问题。
默认情况下,为每个输入 TS 文件创建一个输出文件。这会失败,因为所有输出文件的文件名都相同,并且保存第二个输出文件失败,因为该文件已经存在。这个问题可以通过使用 appendOutput 来避免。这会将每个文件的分析输出附加到现有文件中。使用此选项会生成一个文件用于分析整个项目。
问题在于,如果您使用本文中提到的 pmd 格式化程序。如果分析一个文件就可以了。一个 pmd.xml 文件被创建并且是有效的。如果创建了多个文件并且您使用 appendOutput 选项,您会在同一个文件中获得多个带有多个根标签的 xml 文档,类似于:
<pmd>content</pmd>
<pmd>content</pmd>
<pmd>content</pmd>
<pmd>content</pmd>
(我无法粘贴实际的文件内容,因为我无法从我的工作 PC 上发布)。当 jenkins 分析此文件时,它会失败,因为它不是有效的 xml 文档。
在我看来,这个问题有几个解决方案:
- 输出一个非 pmd 文件(可能是 json)并创建一个新的 grunt 任务以将该 json 文件转换为一个有效的 pmd 任务
- 修复 grunt-tslint 以便它可以输出多个具有不同名称的文件(从代码的角度来看,这不会太难)
- 创建一个 grunt 任务来修复损坏的 xml(这可以通过一些正则表达式查找和替换来完成)
有没有人对此问题有任何经验或有任何其他解决方案?