我目前正在将SonarQube引入大型遗留项目.这意味着已经有数百个警告,在第一步中我想确保没有来自我们的功能分支的新警告.
为实现这一目标,我希望在每个功能分支上运行声纳分析,将其与主分支进行比较,并在引入新警告时提醒提交者.
假设以下情况:
MyProject 1.0-SNAPSHOT是SonarQube上项目的名称和版本.它有100个警告.它代表了develop分支.这leak period是从1天前的分析.这很有效,我可以看到自昨天以来引入了哪些新的警告.
开发人员正在feature/somefeature分支机构.当他们打开拉取请求时,我希望在该分支上运行声纳分析.这工作得很好,但我不能设置leak version于MyProject 1.0-SNAPSHOT从昨天开始,因为这个分支被认为是作为一个完全独立的项目由SonarQube,即使我设置sonar.projectKey为相同的名字,我也试图与玩弄sonar.branch财产.
期望的结果是:
发展 - > 100警告
feature/somefeature - > 102警告
在SonarQube仪表板上feature/somefature显示"2个新警告".
可以用声纳本身完成,还是需要使用Sonar REST API编写自己的程序?
显然,这会导致编译错误,因为Chair与Cat无关:
class Chair {}
class Cat {}
class Test {
public static void main(String[] args) {
Chair chair = new Char(); Cat cat = new Cat();
chair = (Chair)cat; //compile error
}
}
Run Code Online (Sandbox Code Playgroud)
那么为什么我在运行时只将Cat引用转换为不相关的接口Furniture时才会出现异常,而编译器显然可以告诉Cat不实现Furniture?
interface Furniture {}
class Test {
public static void main(String[] args) {
Furniture f; Cat cat = new Cat();
f = (Furniture)cat; //runtime error
}
}
Run Code Online (Sandbox Code Playgroud) 最近我使用 create-react-app 完成了一些带有 Node 后端和 React 前端的小项目。尽管我花了很多时间研究文件夹结构的最佳实践,但我一直无法在不必弹出 react 应用程序的情况下提出令人满意的解决方案。我想知道是否有我还没有找到的解决方案。
我试图针对的文件夹结构如下所示:
package.json
src/
client/
app.js
...
server/
index.js (node.js main file, could just as well be in server/)
Run Code Online (Sandbox Code Playgroud)
这种布局允许我从根文件夹运行所有脚本,我可以将所有配置放在一个 package.json 中。例如,我希望能够npm test从根文件夹运行,然后使用 jest 运行客户端和服务器测试。
据我所知 create-react-app 是硬连线的,src/index.js在使用时期望 a npm start,这阻止我使用这个文件夹结构 - 如果我只是将 create-react-app 生成的所有样板移动到客户端文件夹中,我有一个丑陋的src/client/src文件夹再次包含它自己的 package.json。我想我可以以不同的方式拆分它,创建一个client/srcand server/src,但我仍然在每个目录中有单独的 package.json 文件。
很想听听您对此的经历,也许我错过了明显的解决方案。