ofields / sonar-android Goto Github PK
View Code? Open in Web Editor NEWThis project forked from peter-budo/sonar-android-lint-plugin
Extension plugin for Android Lint in SonarQube
This project forked from peter-budo/sonar-android-lint-plugin
Extension plugin for Android Lint in SonarQube
I'm getting the following violation:
"Possible overdraw: Root element paints background @color/colorPrimary
with a theme that also paints a background (inferred theme is @style/AppTheme_NoActionBar
)"
Note: I added "@null" to the theme in the hope that it would fix the issue but it's the same situation with and without this row.
My setup:
Android plugin version 1.1
Relevant part of my code below:
styles.xml:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:background">@null</item>
<item name="android:textColorSecondary">@color/white</item>
</style>
AndroidManifest.xml:
<activity
android:label=""
android:name=".accounts.AccountHandlingActivity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize|stateHidden"
>
activity_account_handling.xml:
Note: the violation is on the row which sets "android:background":
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:fitsSystemWindows="true"
>
what is the best way to analyze multi flavor projects?
I'm getting exceptions while analyzing with SonarQube 6.7.4 LTS (using Android Lint 1.1 plugin):
lint-results-debug.xml:
<?xml version="1.0" encoding="UTF-8"?>
<issues format="4" by="lint 3.1.3">
</issues>
Stacktrace:
09:16:30.663 [main] INFO o.s.p.a.lint.AndroidLintProcessor - Processing android lint report: /builds/commons/android/xxx-android/ble/build/reports/lint-results-debug.xml
09:16:30.823 [main] ERROR o.s.p.a.lint.AndroidLintProcessor - Exception reading /builds/commons/android/xxx-android/ble/build/reports/lint-results-debug.xml
org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.ElementList(entry=, data=false, inline=true, name=, type=void, required=true, empty=true) on field 'issues' java.util.List org.sonar.plugins.android.lint.AndroidLintProcessor$LintIssues.issues for class org.sonar.plugins.android.lint.AndroidLintProcessor$LintIssues at line 2
at org.simpleframework.xml.core.Composite.validate(Composite.java:644) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Composite.readElements(Composite.java:449) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Composite.access$400(Composite.java:59) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1383) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Composite.read(Composite.java:201) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Composite.read(Composite.java:148) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Traverser.read(Traverser.java:92) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:625) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:606) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:584) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:543) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:521) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:426) ~[simple-xml-2.7.1.jar:na]
at org.sonar.plugins.android.lint.AndroidLintProcessor.process(AndroidLintProcessor.java:57) ~[sonar-android-plugin-1.1.jar:na]
at org.sonar.plugins.android.lint.AndroidLintSensor.analyse(AndroidLintSensor.java:53) [sonar-android-plugin-1.1.jar:na]
at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:88) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:177) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:291) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:286) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:284) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:264) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:48) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:84) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:121) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.batch.bootstrapper.Batch.doExecuteTask(Batch.java:116) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:111) [sonar-scanner-engine-shaded-6.7.4.jar:na]
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63) [sonar-scanner-api-batch8211812785396755378.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60) [sonar-scanner-api-2.9.0.887.jar:na]
at com.sun.proxy.$Proxy95.execute(Unknown Source) [na:na]
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233) [sonar-scanner-api-2.9.0.887.jar:na]
at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151) [sonar-scanner-api-2.9.0.887.jar:na]
at org.sonarqube.gradle.SonarQubeTask.run(SonarQubeTask.java:99) [sonarqube-gradle-plugin-2.6.2.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) [gradle-base-services-4.6.jar:4.6]
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:788) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:755) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:59) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:130) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:46) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30) [gradle-core-4.6.jar:4.6]
at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:336) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) [gradle-core-4.6.jar:4.6]
at org.gradle.initialization.DefaultGradleLauncher.runTasks(DefaultGradleLauncher.java:210) [gradle-core-4.6.jar:4.6]
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:140) [gradle-core-4.6.jar:4.6]
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:115) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:78) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:75) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152) [gradle-base-services-4.6.jar:4.6]
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:75) [gradle-core-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43) [gradle-launcher-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) [gradle-core-4.6.jar:4.6]
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:49) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:32) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:39) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.exec.BuildTreeScopeBuildActionExecuter.execute(BuildTreeScopeBuildActionExecuter.java:25) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:80) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:53) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:57) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:43) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.ParallelismConfigurationBuildActionExecuter.execute(ParallelismConfigurationBuildActionExecuter.java:29) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:59) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:44) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:45) [gradle-launcher-4.6.jar:4.6]
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51) [gradle-launcher-4.6.jar:4.6]
at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173) [gradle-base-services-4.6.jar:4.6]
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:285) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:258) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:251) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:185) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.Main.doAction(Main.java:36) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) [gradle-launcher-4.6.jar:4.6]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37) [gradle-launcher-4.6.jar:4.6]
at org.gradle.launcher.GradleMain.main(GradleMain.java:23) [gradle-launcher-4.6.jar:4.6]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:31) [gradle-wrapper.jar:3.3]
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:108) [gradle-wrapper.jar:3.3]
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61) [gradle-wrapper.jar:3.3]
Hi,
I'm seeing this problem in my multi-module Gradle project when analysing with SonarQube.
My setup:
0:41:43.080 [Task worker for ':' Thread 2] ERROR o.s.p.a.lint.AndroidLintProcessor - Exception reading /builds/MYPROJECT/build/reports/lint-results-debug.xml
org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.ElementList(entry=, inline=true, data=false, name=, type=void, required=true, empty=true) on field 'issues' java.util.List org.sonar.plugins.android.lint.AndroidLintProcessor$LintIssues.issues for class org.sonar.plugins.android.lint.AndroidLintProcessor$LintIssues at line 2
at org.simpleframework.xml.core.Composite.validate(Composite.java:644) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Composite.readElements(Composite.java:449) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Composite.access$400(Composite.java:59) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Composite$Builder.read(Composite.java:1383) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Composite.read(Composite.java:201) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Composite.read(Composite.java:148) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Traverser.read(Traverser.java:92) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:625) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:606) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:584) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:543) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:521) ~[simple-xml-2.7.1.jar:na]
at org.simpleframework.xml.core.Persister.read(Persister.java:426) ~[simple-xml-2.7.1.jar:na]
at org.sonar.plugins.android.lint.AndroidLintProcessor.process(AndroidLintProcessor.java:57) ~[sonar-android-plugin-1.1.jar:na]
at org.sonar.plugins.android.lint.AndroidLintSensor.analyse(AndroidLintSensor.java:53) [sonar-android-plugin-1.1.jar:na]
at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:88) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:180) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:288) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:283) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:281) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:261) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:48) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:84) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:135) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:121) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:121) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.batch.bootstrapper.Batch.doExecuteTask(Batch.java:116) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:111) [sonar-scanner-engine-shaded-6.7.jar:na]
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63) [sonar-scanner-api-batch3409968465006685507.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60) [sonar-scanner-api-2.9.0.887.jar:na]
at com.sun.proxy.$Proxy95.execute(Unknown Source) [na:na]
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233) [sonar-scanner-api-2.9.0.887.jar:na]
at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151) [sonar-scanner-api-2.9.0.887.jar:na]
at org.sonarqube.gradle.SonarQubeTask.run(SonarQubeTask.java:99) [sonarqube-gradle-plugin-2.6.1.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73) [gradle-base-services-4.6.jar:4.6]
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:788) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:755) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) [gradle-core-4.6.jar:4.6]
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597) [gradle-core-4.6.jar:4.6]
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98) [gradle-core-4.6.jar:4.6]
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) [gradle-base-services-4.6.jar:4.6]
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) [gradle-base-services-4.6.jar:4.6]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_111]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_111]
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) [gradle-base-services-4.6.jar:4.6]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111]
Hello,
After some uses of sonar-android plugin, reviewing the level of this issue could be relevant:
Issue | Current severity | New severity | Justification |
---|---|---|---|
Minimum SDK and target SDK attributes not defined | Major | Blocker | These attributes are required for an application deployment on the PlayStore. |
I can provide a PR if considered as relevant.
Best regards
Hello,
After some uses of sonar-android plugin, reviewing the level of this issue could be relevant:
Issue | Current severity | New severity | Justification |
---|---|---|---|
Using a fixed seed with SecureRandom | Major | Critical | It is a security breach which open a vector of attack. A random number must be used. |
I can provide a PR if considered as relevant.
Best regards
This plugin is not compatible with sonar LTS anymore.
check -> https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/
Please change the README.md to notice people that this repo is maintained by no one.
I would like to contribute to make this plugin working again but first I need some documentation to understand how to help.
I really like this plugin and I would like to have it in sonarcloud.io as part of java+kotlin languages.
Currently the plugin is not working with the newest Sonarqube server, because there was some API deprecations. Is anyone started a fix to make it compatible?
Indeed, the property 'sonar.pluginName' has not been updated in the pom.xml file
Hello,
After some uses of sonar-android plugin, reviewing the level of this issue could be relevant:
Issue | Current severity | New severity | Justification |
---|---|---|---|
Receiver does not require permission | Minor | Major | In a company, the "receivers" are usually internal to an app or callable only from other applications of the company. They must not be discoverable and callable without restriction. |
I can provide a PR if considered as relevant.
Best regards
It would be great if travis could create a github release (or similar) so that the JAR can easily be downloaded. At the moment, I would need to compile, myself, I think? I'd like to be able to grab the plugin via curl
so that I can automate standing up my sonarqube webserver.
Or have I missed it somewhere obvious? How does the update center itself grab the binary?
Hello,
After some uses of sonar-android plugin, reviewing the level of this issue could be relevant:
Issue | Current severity | New severity | Justification |
---|---|---|---|
Missing allowBackup attribute | Minor | Major | It's a security breach. In 99% of cases this option is useless because applications retrieve data from web services. The project must be aware of the problem. |
I can provide a PR if considered as relevant.
Best regards
Hello,
After some uses of sonar-android plugin, reviewing the level of this issue could be relevant:
Issue | Current severity | New severity | Justification |
---|---|---|---|
Target SDK attribute is not targeting latest version | Minor | Blocker | Google requires that all apps on the store have the highest existing SDK target. |
I can provide a PR if considered as relevant.
Best regards
As per audit rule, we require to know who is vendor for Andriod Import Android Lint reports (v1.1) for SonarQube & who can support issues related to this plugin.
Can anyone will help me to understand support model for this plugin (Andriod Import Android Lint reports (v1.1)) for an organization who has/will installed this plugin?
Appreciate your quick response.
When android lint encounters some non fatal errors it can reports them in the report file with the "LintError" issue id.
Those error should be reported in the log of analysis to improve user experience.
Source : http://stackoverflow.com/questions/30196812/linterror-found-processing-android-lint-report
This should lead to have an architecture with lint generator as a module, the plugin as a module and an integration test module.
Hi i tried using this plugin with sonar following the provided instructions but it throws this error:
sonar.profile was set to 'Android Lint' but didn't match any profile for any language. please check your configuration.
And when i restarted sonar it turns off after a while claiming that it lost the connection.
Can anyone tell me what's wrong?
Update:
I added Android Lint as Quality profile for java from SonarQube UI and made sonar way as its parent.
Android Lint had no rules in the first place and now is only using sonar way rules (identical to using sonar way default profile).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.