日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sonar 质量扫描的输出日志--对应源码的跟踪(二){sonar engine源码}

發布時間:2023/12/19 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sonar 质量扫描的输出日志--对应源码的跟踪(二){sonar engine源码} 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個project下面module完整的sonar分析日志:

[INFO] --- sonar-maven-plugin:3.2:sonar (default-cli) @ pcaic-parent --- [INFO] User cache: /root/.sonar/cache 5.475: [GC (Metadata GC Threshold) [PSYoungGen: 124155K->16378K(212992K)] 125048K->20534K(337920K), 0.0249154 secs] [Times: user=0.08 sys=0.00, real=0.03 secs] 5.500: [Full GC (Metadata GC Threshold) [PSYoungGen: 16378K->0K(212992K)] [ParOldGen: 4156K->19951K(172032K)] 20534K->19951K(385024K), [Metaspace: 20709K->20709K(1069056K)], 0.1078064 secs] [Times: user=0.46 sys=0.01, real=0.11 secs] [INFO] Load global repositories [INFO] Load global repositories (done) | time=143ms [WARNING] Property 'sonar.jdbc.url' is not supported any more. It will be ignored. There is no longer any DB connection to the SQ database. [WARNING] Property 'sonar.jdbc.username' is not supported any more. It will be ignored. There is no longer any DB connection to the SQ database. [WARNING] Property 'sonar.jdbc.password' is not supported any more. It will be ignored. There is no longer any DB connection to the SQ database. [INFO] User cache: /root/.sonar/cache [INFO] Load plugins index [INFO] Load plugins index (done) | time=2ms [INFO] Plugin [l10nzh] defines 'l10nen' as base plugin. This metadata can be removed from manifest of l10n plugins since version 5.2. [INFO] SonarQube version: 6.2 7.243: [GC (Allocation Failure) [PSYoungGen: 196608K->21479K(318976K)] 216559K->73599K(491008K), 0.0467409 secs] [Times: user=0.14 sys=0.04, real=0.05 secs] [WARNING] Missing POM for com.suning.framework:snf-zk-client:jar:1.1.1 [WARNING] Missing POM for com.suning.framework:snf-zk-client:jar:1.1.1 8.358: [GC (Allocation Failure) [PSYoungGen: 318951K->25791K(394240K)] 371071K->77919K(566272K), 0.0259672 secs] [Times: user=0.11 sys=0.02, real=0.02 secs] [INFO] artifact org.jxls:jxls: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:jquery: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:angular: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:angular: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:eonasdan-bootstrap-datetimepicker: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:moment: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:moment: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:bootstrap: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:jquery: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:bootstrap: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:jquery: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:angular: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:codemirror: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:angular: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:angular: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:angular: checking for updates from suning_maven_repo [INFO] artifact org.webjars.bower:js-xlsx: checking for updates from suning_maven_repo 10.054: [GC (Allocation Failure) [PSYoungGen: 378047K->29227K(494080K)] 430175K->81362K(666112K), 0.0336199 secs] [Times: user=0.21 sys=0.02, real=0.04 secs] [INFO] Default locale: "zh_CN", source code encoding: "UTF-8" [INFO] Process project properties [INFO] Load project repositories [INFO] Load project repositories (done) | time=305ms 11.048: [GC (Metadata GC Threshold) [PSYoungGen: 125853K->36969K(494592K)] 177989K->89113K(666624K), 0.0228080 secs] [Times: user=0.09 sys=0.02, real=0.02 secs] 11.071: [Full GC (Metadata GC Threshold) [PSYoungGen: 36969K->0K(494592K)] [ParOldGen: 52143K->75639K(318976K)] 89113K->75639K(813568K), [Metaspace: 34292K->34292K(1081344K)], 0.1395758 secs] [Times: user=0.60 sys=0.03, real=0.14 secs] [INFO] Load quality profiles [INFO] Load quality profiles (done) | time=22ms [INFO] Load active rules [INFO] Load active rules (done) | time=647ms [INFO] Publish mode [INFO] ------------- Scan suning's pcids caic common 20180509 [INFO] Language is forced to java [INFO] Load server rules [INFO] Load server rules (done) | time=142ms [INFO] Initializer GenericCoverageSensor [INFO] Initializer GenericCoverageSensor (done) | time=1ms [INFO] Base dir: /data/jenkinsslave/workspace/pcids_caic20180509/pcaic-common [INFO] Working dir: /data/jenkinsslave/workspace/pcids_caic20180509/pcaic-common/target/sonar [INFO] Source paths: pom.xml, src/main/java [INFO] Source encoding: UTF-8, default locale: zh_CN [INFO] Index files [INFO] 47 files indexed [INFO] Quality profile for java: Sonarway54 [INFO] Sensor Lines Sensor [INFO] Sensor Lines Sensor (done) | time=17ms [INFO] Sensor JavaSquidSensor [INFO] Configured Java source version (sonar.java.source): 8 [INFO] JavaClasspath initialization [INFO] JavaClasspath initialization (done) | time=13ms [INFO] JavaTestClasspath initialization [INFO] JavaTestClasspath initialization (done) | time=3ms [INFO] Java Main Files AST scan [INFO] 47 source files to be analyzed [WARNING] Metric 'lines' is an internal metric computed by SonarQube. Provided value is ignored. 16.331: [GC (Allocation Failure) [PSYoungGen: 452608K->28914K(606208K)] 528247K->104581K(925184K), 0.0573675 secs] [Times: user=0.20 sys=0.02, real=0.06 secs] [INFO] [INFO] 47/47 source files have been analyzed Java Main Files AST scan (done) | time=3857ms [INFO] Java Test Files AST scan [INFO] 0 source files to be analyzed [INFO] Java Test Files AST scan (done) | time=0ms [INFO] Sensor JavaSquidSensor (done) | time=4341ms [INFO] [INFO] Sensor SCM Sensor 0/0 source files have been analyzed [INFO] Sensor SCM Sensor (done) | time=9ms [INFO] Sensor Coverage Report Import [INFO] Sensor Coverage Report Import (done) | time=0ms [INFO] Sensor Coverage Report Import [INFO] Sensor Coverage Report Import (done) | time=0ms [INFO] Sensor Unit Test Results Import [INFO] Sensor Unit Test Results Import (done) | time=0ms [INFO] Sensor FindBugs Sensor 18.146: [GC (Metadata GC Threshold) [PSYoungGen: 298260K->13640K(625152K)] 373927K->89315K(944128K), 0.0345552 secs] [Times: user=0.14 sys=0.01, real=0.04 secs] 18.181: [Full GC (Metadata GC Threshold) [PSYoungGen: 13640K->0K(625152K)] [ParOldGen: 75674K->81834K(407040K)] 89315K->81834K(1032192K), [Metaspace: 57175K->57175K(1099776K)], 0.3274191 secs] [Times: user=1.63 sys=0.02, real=0.33 secs] [INFO] Findbugs output report: /data/jenkinsslave/workspace/pcids_caic20180509/pcaic-common/target/sonar/findbugs-result.xml 23.374: [GC (Allocation Failure) [PSYoungGen: 580096K->34117K(734208K)] 661930K->115976K(1141248K), 0.0345130 secs] [Times: user=0.14 sys=0.01, real=0.04 secs] [INFO] Sensor FindBugs Sensor (done) | time=6416ms [INFO] Sensor SurefireSensor [INFO] parsing /data/jenkinsslave/workspace/pcids_caic20180509/pcaic-common/target/surefire-reports [INFO] Sensor SurefireSensor (done) | time=1ms [INFO] Sensor JaCoCoSensor [INFO] JaCoCoSensor: JaCoCo report not found : /data/jenkinsslave/workspace/pcids_caic20180509/pcaic-common/target/jacoco.exec [INFO] Sensor JaCoCoSensor (done) | time=0ms [INFO] Sensor JaCoCoItSensor [INFO] JaCoCoItSensor: JaCoCo IT report not found: /data/jenkinsslave/workspace/pcids_caic20180509/pcaic-common/target/jacoco-it.exec [INFO] Sensor JaCoCoItSensor (done) | time=0ms [INFO] Sensor JaCoCoOverallSensor [INFO] Sensor JaCoCoOverallSensor (done) | time=1ms [INFO] Sensor XmlFileSensor [INFO] Sensor XmlFileSensor (done) | time=0ms [INFO] Sensor Zero Coverage Sensor [INFO] Sensor Zero Coverage Sensor (done) | time=38ms [INFO] Sensor Code Colorizer Sensor [INFO] Sensor Code Colorizer Sensor (done) | time=2ms [INFO] Sensor CPD Block Indexer [INFO] JavaCpdBlockIndexer is used for java [INFO] Sensor CPD Block Indexer (done) | time=68ms

load global?repositories-> load plugin index -> load/process?project properties ->?Load project repositories

->?Load quality profiles ->?Load active rules ->?Language is forced to java ->Load server rules ->

Initializer GenericCoverageSensor

先看 sonar-scanner-protocol


GlobalRepositories bean:

public class GlobalRepositories {private long timestamp;private Collection<Metric> metrics = new ArrayList<>();private Map<String, String> globalSettings = new HashMap<>();public Map<String, String> globalSettings() {return globalSettings;}public GlobalRepositories addGlobalSetting(String key, String value) {globalSettings.put(key, value);return this;}public Collection<Metric> metrics() {return metrics;}public GlobalRepositories addMetric(Metric metric) {metrics.add(metric);return this;}public long timestamp() {return timestamp;}public void setTimestamp(long timestamp) {this.timestamp = timestamp;}public String toJson() {return GsonHelper.create().toJson(this);}public static GlobalRepositories fromJson(String json) {return GsonHelper.create().fromJson(json, GlobalRepositories.class);}}

ProjectRepositories bean 類:

public class ProjectRepositories {private long timestamp;private boolean exists;private Map<String, Map<String, String>> settingsByModule = new HashMap<>();private Map<String, Map<String, FileData>> fileDataByModuleAndPath = new HashMap<>();private Date lastAnalysisDate;public Map<String, String> settings(String moduleKey) {return settingsByModule.containsKey(moduleKey) ? settingsByModule.get(moduleKey) : Collections.<String, String>emptyMap();}public Map<String, Map<String, String>> settings() {return settingsByModule;}public ProjectRepositories addSettings(String moduleKey, Map<String, String> settings) {Map<String, String> existingSettings = settingsByModule.get(moduleKey);if (existingSettings == null) {existingSettings = new HashMap<>();settingsByModule.put(moduleKey, existingSettings);}existingSettings.putAll(settings);return this;}public boolean exists() {return exists;}public Map<String, Map<String, FileData>> fileDataByModuleAndPath() {return fileDataByModuleAndPath;}public Map<String, FileData> fileDataByPath(String moduleKey) {return fileDataByModuleAndPath.containsKey(moduleKey) ? fileDataByModuleAndPath.get(moduleKey) : Collections.<String, FileData>emptyMap();}public ProjectRepositories addFileData(String moduleKey, @Nullable String path, FileData fileData) {if (path == null || (fileData.hash() == null && fileData.revision() == null)) {return this;}Map<String, FileData> existingFileDataByPath = fileDataByModuleAndPath.get(moduleKey);if (existingFileDataByPath == null) {existingFileDataByPath = new HashMap<>();fileDataByModuleAndPath.put(moduleKey, existingFileDataByPath);}existingFileDataByPath.put(path, fileData);return this;}@CheckForNullpublic FileData fileData(String projectKey, String path) {return fileDataByPath(projectKey).get(path);}public long timestamp() {return timestamp;}public void setTimestamp(long timestamp) {this.timestamp = timestamp;}@CheckForNullpublic Date lastAnalysisDate() {return lastAnalysisDate;}public void setLastAnalysisDate(@Nullable Date lastAnalysisDate) {this.lastAnalysisDate = lastAnalysisDate;}public String toJson() {return GsonHelper.create().toJson(this);}public static ProjectRepositories fromJson(String json) {return GsonHelper.create().fromJson(json, ProjectRepositories.class);} }

sonar scanner 掃描文件讀取類ScannerReportReader

public class ScannerReportReader {private final FileStructure fileStructure;public ScannerReportReader(File dir) {this.fileStructure = new FileStructure(dir);}public ScannerReport.Metadata readMetadata() {File file = fileStructure.metadataFile();if (!fileExists(file)) {throw new IllegalStateException("Metadata file is missing in analysis report: " + file);}return Protobuf.read(file, ScannerReport.Metadata.parser());}public CloseableIterator<ScannerReport.ActiveRule> readActiveRules() {File file = fileStructure.activeRules();if (!fileExists(file)) {return emptyCloseableIterator();}return Protobuf.readStream(file, ScannerReport.ActiveRule.parser());}public CloseableIterator<ScannerReport.Measure> readComponentMeasures(int componentRef) {File file = fileStructure.fileFor(FileStructure.Domain.MEASURES, componentRef);if (fileExists(file)) {return Protobuf.readStream(file, ScannerReport.Measure.parser());}return emptyCloseableIterator();}@CheckForNullpublic ScannerReport.Changesets readChangesets(int componentRef) {File file = fileStructure.fileFor(FileStructure.Domain.CHANGESETS, componentRef);if (fileExists(file)) {return Protobuf.read(file, ScannerReport.Changesets.parser());}return null;}public ScannerReport.Component readComponent(int componentRef) {File file = fileStructure.fileFor(FileStructure.Domain.COMPONENT, componentRef);if (!fileExists(file)) {throw new IllegalStateException("Unable to find report for component #" + componentRef + ". File does not exist: " + file);}return Protobuf.read(file, ScannerReport.Component.parser());}public CloseableIterator<ScannerReport.Issue> readComponentIssues(int componentRef) {File file = fileStructure.fileFor(FileStructure.Domain.ISSUES, componentRef);if (fileExists(file)) {return Protobuf.readStream(file, ScannerReport.Issue.parser());}return emptyCloseableIterator();}public CloseableIterator<ScannerReport.Duplication> readComponentDuplications(int componentRef) {File file = fileStructure.fileFor(FileStructure.Domain.DUPLICATIONS, componentRef);if (fileExists(file)) {return Protobuf.readStream(file, ScannerReport.Duplication.parser());}return emptyCloseableIterator();}public CloseableIterator<ScannerReport.CpdTextBlock> readCpdTextBlocks(int componentRef) {File file = fileStructure.fileFor(FileStructure.Domain.CPD_TEXT_BLOCKS, componentRef);if (fileExists(file)) {return Protobuf.readStream(file, ScannerReport.CpdTextBlock.parser());}return emptyCloseableIterator();}public CloseableIterator<ScannerReport.Symbol> readComponentSymbols(int componentRef) {File file = fileStructure.fileFor(FileStructure.Domain.SYMBOLS, componentRef);if (fileExists(file)) {return Protobuf.readStream(file, ScannerReport.Symbol.parser());}return emptyCloseableIterator();}public boolean hasSyntaxHighlighting(int componentRef) {File file = fileStructure.fileFor(FileStructure.Domain.SYNTAX_HIGHLIGHTINGS, componentRef);return file.exists();}public CloseableIterator<ScannerReport.SyntaxHighlightingRule> readComponentSyntaxHighlighting(int fileRef) {File file = fileStructure.fileFor(FileStructure.Domain.SYNTAX_HIGHLIGHTINGS, fileRef);if (fileExists(file)) {return Protobuf.readStream(file, ScannerReport.SyntaxHighlightingRule.parser());}return emptyCloseableIterator();}public boolean hasCoverage(int componentRef) {File file = fileStructure.fileFor(FileStructure.Domain.COVERAGES, componentRef);return file.exists();}public CloseableIterator<ScannerReport.LineCoverage> readComponentCoverage(int fileRef) {File file = fileStructure.fileFor(FileStructure.Domain.COVERAGES, fileRef);if (fileExists(file)) {return Protobuf.readStream(file, ScannerReport.LineCoverage.parser());}return emptyCloseableIterator();}@CheckForNullpublic File readFileSource(int fileRef) {File file = fileStructure.fileFor(FileStructure.Domain.SOURCE, fileRef);if (fileExists(file)) {return file;}return null;}@CheckForNullpublic File readTests(int testFileRef) {File file = fileStructure.fileFor(FileStructure.Domain.TESTS, testFileRef);if (fileExists(file)) {return file;}return null;}@CheckForNullpublic File readCoverageDetails(int testFileRef) {File file = fileStructure.fileFor(FileStructure.Domain.COVERAGE_DETAILS, testFileRef);if (fileExists(file)) {return file;}return null;}public CloseableIterator<ScannerReport.ContextProperty> readContextProperties() {File file = fileStructure.contextProperties();if (!fileExists(file)) {return emptyCloseableIterator();}return Protobuf.readStream(file, ScannerReport.ContextProperty.parser());}private static boolean fileExists(File file) {return file.exists() && file.isFile();}public FileStructure getFileStructure() {return fileStructure;} }sonar 掃描生成的數據文件 寫類?ScannerReportWriter
public class ScannerReportWriter {private final FileStructure fileStructure;public ScannerReportWriter(File dir) {if (!dir.exists() && !dir.mkdirs()) {throw new IllegalStateException("Unable to create directory: " + dir);}this.fileStructure = new FileStructure(dir);}public FileStructure getFileStructure() {return fileStructure;}public boolean hasComponentData(FileStructure.Domain domain, int componentRef) {File file = fileStructure.fileFor(domain, componentRef);return file.exists() && file.isFile();}/*** Metadata is mandatory*/public File writeMetadata(ScannerReport.Metadata metadata) {Protobuf.write(metadata, fileStructure.metadataFile());return fileStructure.metadataFile();}public File writeActiveRules(Iterable<ScannerReport.ActiveRule> activeRules) {Protobuf.writeStream(activeRules, fileStructure.activeRules(), false);return fileStructure.metadataFile();}public File writeComponent(ScannerReport.Component component) {File file = fileStructure.fileFor(FileStructure.Domain.COMPONENT, component.getRef());Protobuf.write(component, file);return file;}public File writeComponentIssues(int componentRef, Iterable<ScannerReport.Issue> issues) {File file = fileStructure.fileFor(FileStructure.Domain.ISSUES, componentRef);Protobuf.writeStream(issues, file, false);return file;}public void appendComponentIssue(int componentRef, ScannerReport.Issue issue) {File file = fileStructure.fileFor(FileStructure.Domain.ISSUES, componentRef);try (OutputStream out = new BufferedOutputStream(new FileOutputStream(file, true))) {issue.writeDelimitedTo(out);} catch (Exception e) {throw ContextException.of("Unable to write issue", e).addContext("file", file);}}public File writeComponentMeasures(int componentRef, Iterable<ScannerReport.Measure> measures) {File file = fileStructure.fileFor(FileStructure.Domain.MEASURES, componentRef);Protobuf.writeStream(measures, file, false);return file;}public File writeComponentChangesets(ScannerReport.Changesets changesets) {File file = fileStructure.fileFor(FileStructure.Domain.CHANGESETS, changesets.getComponentRef());Protobuf.write(changesets, file);return file;}public File writeComponentDuplications(int componentRef, Iterable<ScannerReport.Duplication> duplications) {File file = fileStructure.fileFor(FileStructure.Domain.DUPLICATIONS, componentRef);Protobuf.writeStream(duplications, file, false);return file;}public File writeCpdTextBlocks(int componentRef, Iterable<ScannerReport.CpdTextBlock> blocks) {File file = fileStructure.fileFor(FileStructure.Domain.CPD_TEXT_BLOCKS, componentRef);Protobuf.writeStream(blocks, file, false);return file;}public File writeComponentSymbols(int componentRef, Iterable<ScannerReport.Symbol> symbols) {File file = fileStructure.fileFor(FileStructure.Domain.SYMBOLS, componentRef);Protobuf.writeStream(symbols, file, false);return file;}public File writeComponentSyntaxHighlighting(int componentRef, Iterable<ScannerReport.SyntaxHighlightingRule> syntaxHighlightingRules) {File file = fileStructure.fileFor(FileStructure.Domain.SYNTAX_HIGHLIGHTINGS, componentRef);Protobuf.writeStream(syntaxHighlightingRules, file, false);return file;}public File writeComponentCoverage(int componentRef, Iterable<ScannerReport.LineCoverage> coverageList) {File file = fileStructure.fileFor(FileStructure.Domain.COVERAGES, componentRef);Protobuf.writeStream(coverageList, file, false);return file;}public File writeTests(int componentRef, Iterable<ScannerReport.Test> tests) {File file = fileStructure.fileFor(FileStructure.Domain.TESTS, componentRef);Protobuf.writeStream(tests, file, false);return file;}public File writeCoverageDetails(int componentRef, Iterable<ScannerReport.CoverageDetail> tests) {File file = fileStructure.fileFor(FileStructure.Domain.COVERAGE_DETAILS, componentRef);Protobuf.writeStream(tests, file, false);return file;}public File writeContextProperties(Iterable<ScannerReport.ContextProperty> properties) {File file = fileStructure.contextProperties();Protobuf.writeStream(properties, file, false);return file;}public File getSourceFile(int componentRef) {return fileStructure.fileFor(FileStructure.Domain.SOURCE, componentRef);}}




InitializersExecutor類:

/** SonarQube* Copyright (C) 2009-2016 SonarSource SA* mailto:contact AT sonarsource DOT com** This program is free software; you can redistribute it and/or* modify it under the terms of the GNU Lesser General Public* License as published by the Free Software Foundation; either* version 3 of the License, or (at your option) any later version.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU* Lesser General Public License for more details.** You should have received a copy of the GNU Lesser General Public License* along with this program; if not, write to the Free Software Foundation,* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.*/ package org.sonar.scanner.phases;import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; import org.sonar.api.batch.Initializer; import org.sonar.api.resources.Project; import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers; import org.sonar.api.utils.log.Profiler; import org.sonar.scanner.bootstrap.BatchExtensionDictionnary; import org.sonar.scanner.events.EventBus; import java.util.Collection;public class InitializersExecutor {private static final Logger LOG = Loggers.get(SensorsExecutor.class);private Project project;private BatchExtensionDictionnary selector;private EventBus eventBus;public InitializersExecutor(BatchExtensionDictionnary selector, Project project, EventBus eventBus) {this.selector = selector;this.project = project;this.eventBus = eventBus;}public void execute() {Collection<Initializer> initializers = selector.select(Initializer.class, project, true, null);eventBus.fireEvent(new InitializersPhaseEvent(Lists.newArrayList(initializers), true));if (LOG.isDebugEnabled()) {LOG.debug("Initializers : {}", StringUtils.join(initializers, " -> "));}for (Initializer initializer : initializers) {eventBus.fireEvent(new InitializerExecutionEvent(initializer, true));Profiler profiler = Profiler.create(LOG).startInfo("Initializer " + initializer);initializer.execute(project);profiler.stopInfo();eventBus.fireEvent(new InitializerExecutionEvent(initializer, false));}eventBus.fireEvent(new InitializersPhaseEvent(Lists.newArrayList(initializers), false));}}

GenericCoverageSensor類:

package org.sonar.scanner.genericcoverage;import com.google.common.collect.ImmutableList; import java.io.File; import java.util.Arrays; import java.util.LinkedHashSet; import java.util.Set; import java.util.stream.Collectors; import org.sonar.api.batch.Initializer; import org.sonar.api.batch.sensor.Sensor; import org.sonar.api.batch.sensor.SensorContext; import org.sonar.api.batch.sensor.SensorDescriptor; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.config.Settings; import org.sonar.api.resources.Qualifiers; import org.sonar.api.utils.log.Logger; import org.sonar.api.utils.log.Loggers;import static org.sonar.api.CoreProperties.CATEGORY_CODE_COVERAGE;public class GenericCoverageSensor extends Initializer implements Sensor {private static final Logger LOG = Loggers.get(GenericCoverageSensor.class);static final String REPORT_PATHS_PROPERTY_KEY = "sonar.coverageReportPaths";/*** @deprecated since 6.2*/@Deprecatedstatic final String OLD_REPORT_PATH_PROPERTY_KEY = "sonar.genericcoverage.reportPath";/*** @deprecated since 6.2*/@Deprecatedstatic final String OLD_COVERAGE_REPORT_PATHS_PROPERTY_KEY = "sonar.genericcoverage.reportPaths";/*** @deprecated since 6.2*/@Deprecatedstatic final String OLD_IT_COVERAGE_REPORT_PATHS_PROPERTY_KEY = "sonar.genericcoverage.itReportPaths";/*** @deprecated since 6.2*/@Deprecatedstatic final String OLD_OVERALL_COVERAGE_REPORT_PATHS_PROPERTY_KEY = "sonar.genericcoverage.overallReportPaths";private final Settings settings;public GenericCoverageSensor(Settings settings) {this.settings = settings;}public static ImmutableList<PropertyDefinition> properties() {return ImmutableList.of(PropertyDefinition.builder(REPORT_PATHS_PROPERTY_KEY).name("Coverage report paths").description("List of comma-separated paths (absolute or relative) containing coverage report.").category(CATEGORY_CODE_COVERAGE).onQualifiers(Qualifiers.PROJECT).deprecatedKey(OLD_COVERAGE_REPORT_PATHS_PROPERTY_KEY).build());}/*** Use an initializer to migrate old properties to the new one before Sensor phase so that* Sensor will not be executed if there is no report (thanks to SensorDescriptor.requireProperty(REPORT_PATH_PROPERTY_KEY))*/@Overridepublic void execute() {Set<String> reportPaths = new LinkedHashSet<>();reportPaths.addAll(Arrays.asList(settings.getStringArray(REPORT_PATHS_PROPERTY_KEY)));loadDeprecated(reportPaths, OLD_REPORT_PATH_PROPERTY_KEY);loadDeprecated(reportPaths, OLD_COVERAGE_REPORT_PATHS_PROPERTY_KEY);loadDeprecated(reportPaths, OLD_IT_COVERAGE_REPORT_PATHS_PROPERTY_KEY);loadDeprecated(reportPaths, OLD_OVERALL_COVERAGE_REPORT_PATHS_PROPERTY_KEY);if (!reportPaths.isEmpty()) {settings.setProperty(REPORT_PATHS_PROPERTY_KEY, reportPaths.stream().collect(Collectors.joining(",")));}}private void loadDeprecated(Set<String> reportPaths, String propertyKey) {if (settings.hasKey(propertyKey)) {LOG.warn("Property '{}' is deprecated. Please use '{}' instead.", propertyKey, REPORT_PATHS_PROPERTY_KEY);reportPaths.addAll(Arrays.asList(settings.getStringArray(propertyKey)));}}@Overridepublic void describe(SensorDescriptor descriptor) {descriptor.name("Generic Coverage Report").requireProperty(REPORT_PATHS_PROPERTY_KEY);}@Overridepublic void execute(SensorContext context) {for (String reportPath : settings.getStringArray(REPORT_PATHS_PROPERTY_KEY)) {File reportFile = context.fileSystem().resolvePath(reportPath);LOG.info("Parsing {}", reportFile);GenericCoverageReportParser parser = new GenericCoverageReportParser();parser.parse(reportFile, context);LOG.info("Imported coverage data for {} files", parser.numberOfMatchedFiles());int numberOfUnknownFiles = parser.numberOfUnknownFiles();if (numberOfUnknownFiles > 0) {LOG.info("Coverage data ignored for " + numberOfUnknownFiles + " unknown files, including:\n" + parser.firstUnknownFiles().stream().collect(Collectors.joining("\n")));}}}}



















總結

以上是生活随笔為你收集整理的Sonar 质量扫描的输出日志--对应源码的跟踪(二){sonar engine源码}的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

99re久久资源最新地址 | 亚洲 欧美 另类人妖 | 欧美少妇影院 | 在线免费av电影 | 国产成人免费观看 | 91亚洲精品国偷拍 | 一区二区视 | 免费看黄在线观看 | 日韩欧美在线视频一区二区 | 国产精品九色 | 久久99影院| 最近日本中文字幕 | 亚洲成人网av | 精品国产一区二区三区久久久久久 | 国产精品99久久久久久久久 | 99久免费精品视频在线观看 | 亚洲精品美女视频 | 天天操天天干天天干 | 日韩网站中文字幕 | 伊人成人久久 | 日韩av快播电影网 | 色噜噜日韩精品欧美一区二区 | 婷婷色网视频在线播放 | 欧美一级特黄高清视频 | 在线观看岛国片 | 久草在线免费资源站 | 欧美一级电影片 | 日韩欧美xxxx | 美女一二三区 | 日日干天天爽 | 国产一级久久 | 久久成电影 | 日韩精品三区四区 | 精品国产免费一区二区三区五区 | 国产福利免费看 | 在线免费观看视频你懂的 | 午夜精品电影 | 99爱在线 | 综合色天天 | 免费观看www小视频的软件 | 欧美综合国产 | 欧女人精69xxxxxx | 日韩av男人的天堂 | 深爱激情开心 | 99热这里只有精品1 av中文字幕日韩 | 久久精品免费看 | 日韩av在线不卡 | 99热.com | 国产精品久久久久一区二区国产 | 色97在线| av高清免费| 亚洲婷婷丁香 | 毛片播放网站 | 2023国产精品自产拍在线观看 | 69国产盗摄一区二区三区五区 | 久久精品黄 | 伊人天天色 | 国产精品网站一区二区三区 | 日本三级国产 | 久久精品国产成人精品 | 在线观看韩国av | 99在线热播精品免费 | 国产精品刺激对白麻豆99 | 欧美一级裸体视频 | 一本一本久久a久久精品综合 | 欧美analxxxx| 欧美成人中文字幕 | 看av免费 | 黄色一区二区在线观看 | 国产亚洲精品久久久久久网站 | 高潮毛片无遮挡高清免费 | 69精品在线| 久久手机免费视频 | 一级黄毛片 | 在线观看日韩av | 色五婷婷| 久久午夜色播影院免费高清 | 久久草网站 | 国产精品久久久久久av | 在线免费观看麻豆 | 国产精品高潮呻吟久久久久 | 天天干夜夜操视频 | 四虎成人精品永久免费av | 欧美日韩性 | 91成人免费观看视频 | 91精品少妇偷拍99 | 日本中文乱码卡一卡二新区 | 久久精品一区二区三区四区 | 亚洲成aⅴ人片久久青草影院 | 亚洲最新在线视频 | 亚洲aaa级| 免费看毛片网站 | 91免费在线| 国产精品久久久久久欧美 | www五月| 亚洲天堂免费视频 | 亚洲九九九 | 探花系列在线 | 中文字幕在线观看网址 | 亚洲高清久久久 | 69国产精品成人在线播放 | 激情图片久久 | 亚洲a网| 国产99亚洲 | 午夜精品久久久久久久爽 | 国产精品理论片在线播放 | 欧美精品乱码久久久久久 | 国产在线免费 | 91av久久| av电影一区 | 国产高清福利在线 | 国产高清专区 | 久久久伦理| 精品国产一区二区三区久久久蜜月 | 精品一区二区免费在线观看 | 免费在线观看不卡av | 日韩午夜一级片 | 国产专区在线视频 | 三级在线视频播放 | 久久99最新地址 | 亚洲成a人片77777kkkk1在线观看 | 大型av综合网站 | 三级av免费看 | 在线观看日本韩国电影 | 日韩videos| 中文字幕av一区二区三区四区 | av中文字幕在线看 | 91人人澡人人爽人人精品 | 免费中午字幕无吗 | 黄色精品免费 | 久久一区国产 | 色婷婷免费视频 | 中文字幕色综合网 | 九九在线国产视频 | 色噜噜在线观看 | 在线午夜 | 人人插人人草 | 69国产成人综合久久精品欧美 | 免费在线黄色av | 高清中文字幕av | 在线免费观看视频一区 | 国产特级毛片aaaaaa高清 | 精品a在线| 国产999| 欧美久久成人 | 在线观看视频97 | 奇米影视在线99精品 | 色综合久久88色综合天天 | 国产高清网站 | 成年人视频在线免费播放 | 久久综合视频网 | 久久久午夜精品福利内容 | 国产在线观看地址 | 天天操天天综合网 | 精品国产一区二区三区噜噜噜 | 五月综合激情 | 激情电影影院 | 成年人免费在线看 | 久久爽久久爽久久av东京爽 | 欧美 日韩 国产 中文字幕 | 欧美色图一区 | 久久久久久久久久福利 | 最近中文字幕mv | 欧美性生活小视频 | 四虎永久精品在线 | 国产一二三在线视频 | 婷婷激情av| 欧美日韩精品在线观看 | 日韩 国产| 欧美激情视频一区二区三区免费 | 免费视频97 | 91精品国产91久久久久 | 97超碰成人在线 | 久久人人爽人人爽人人 | 国产成人精品午夜在线播放 | 国产婷婷视频在线 | 亚洲色图色 | 色婷婷激婷婷情综天天 | 日日骑| 国产色久| 免费在线观看成人 | 一区二区三区四区影院 | 最近日韩免费视频 | 欧美日韩国产网站 | 成人a大片 | 香蕉影视app| 狠狠躁夜夜躁人人爽超碰97香蕉 | a在线观看国产 | 亚洲电影影音先锋 | 日韩视频免费观看高清完整版在线 | 亚洲精品国产精品乱码在线观看 | 国产裸体无遮挡 | 久久免费公开视频 | 国产精品成人国产乱一区 | 亚洲精品欧洲精品 | 亚洲午夜久久久久 | 午夜精品电影一区二区在线 | 天天爱天天草 | 69国产成人综合久久精品欧美 | 91超碰免费在线 | 黄在线| 麻豆91精品视频 | 久久精品亚洲综合专区 | 欧美精品久久久久久久久免 | 久久精品电影网 | 97视频在线观看视频免费视频 | 男女免费av | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 亚洲精品美女 | 国产一区二区在线观看免费 | 国产精品午夜av | 99产精品成人啪免费网站 | 精品成人在线 | 天天插天天狠 | 精品影院一区二区久久久 | 蜜桃av人人夜夜澡人人爽 | 不卡的一区二区三区 | 九九久久久久99精品 | 丰满少妇在线观看资源站 | 国产高清久久久 | 成人全视频免费观看在线看 | 成人久久18免费网站 | 黄色1级毛片 | 亚洲精品久久久久久中文传媒 | 久久国色夜色精品国产 | 中文字幕中文中文字幕 | av成人免费网站 | 国产精品成人一区 | 国产不卡在线观看 | 少妇高潮冒白浆 | 天天干夜夜爽 | www.亚洲视频.com | 国产又粗又猛又爽 | 日韩网站在线观看 | 美女视频黄在线观看 | 草久在线观看 | av在线一二三区 | 91黄色免费网站 | 精品国产一区在线观看 | 91在线视频免费播放 | 色婷丁香 | 亚洲综合色丁香婷婷六月图片 | 久久只有精品 | 成人av久久 | 日韩婷婷| 成年人app网址 | 在线观看免费福利 | 欧美日韩视频在线观看一区二区 | 丁香六月av| 久草在线费播放视频 | 欧美午夜久久久 | av天天澡天天爽天天av | 美女视频黄,久久 | 久久电影国产免费久久电影 | 国产资源在线视频 | 在线观看911视频 | 四月婷婷在线观看 | 日韩视频中文字幕在线观看 | 91在线精品播放 | 免费福利在线视频 | 91久久精 | 伊人影院av | 欧美亚洲国产一卡 | 日本久久久久久久久久 | 国产又粗又猛又黄又爽视频 | 国产精品免费一区二区三区在线观看 | 色的网站在线观看 | 色综合天天爱 | 波多野结衣资源 | 精品人人爽 | 天天干 夜夜操 | 毛片视频电影 | 免费观看一区 | 91av免费观看 | 精品自拍sae8—视频 | 免费黄色激情视频 | 国产五月色婷婷六月丁香视频 | 成年人在线播放视频 | 色婷婷亚洲综合 | 日韩精品一区二 | 免费99| 91麻豆操| 国产一级免费片 | 成年性视频 | 亚洲综合少妇 | 亚洲最大免费成人网 | 韩国精品在线 | 国产中文视 | 日日添夜夜添 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 不卡视频国产 | 精品国内自产拍在线观看视频 | 日韩理论片中文字幕 | 午夜av不卡 | 在线观看免费黄视频 | 黄在线免费观看 | 日韩女同av | 日韩一区二区三区免费视频 | 欧美极品少妇xxxx | 一区二区欧美在线观看 | 欧美精品在线观看免费 | 国产一区二区三区免费视频 | 中文字幕一区2区3区 | 天天草av | 国产精品九九热 | 欧美热久久 | 色狠狠久久av五月综合 | 色射爱 | 国产精品s色 | 日韩欧美在线高清 | 91精品久久久久久久久久入口 | 国产中文伊人 | 国产精品一级在线 | 99精品国产成人一区二区 | 国产一性一爱一乱一交 | 中文av网 | 欧美日韩aa | 一二区精品 | 久久综合在线 | 免费观看黄色12片一级视频 | 亚洲小视频在线观看 | 国产区精品 | 91夜夜夜| 伊人狠狠| 超碰97在线资源 | 狠狠干天天 | 深夜精品福利 | 久久乐九色婷婷综合色狠狠182 | 免费高清男女打扑克视频 | 日韩有码中文字幕在线 | 亚洲国内在线 | 国产精品 国产精品 | 久久在线播放 | 成人免费观看在线视频 | 免费在线黄色av | 国产精品久久精品国产 | 九九九九热精品免费视频点播观看 | 成年人免费看片网站 | 精品亚洲视频在线 | 精品国产乱码久久久久久天美 | 色狠狠干 | 色老板在线视频 | 热九九精品 | 99精品偷拍视频一区二区三区 | 欧美福利久久 | 精品亚洲国产视频 | 色综合久久88色综合天天人守婷 | 99久久精品免费看国产一区二区三区 | 国产高清在线精品 | 国产1区2区3区精品美女 | 久久大片网站 | 久久久久亚洲精品中文字幕 | 天天综合网 天天 | 免费观看v片在线观看 | 狠狠色丁香婷婷综合久小说久 | 日韩在线免费不卡 | 久久99精品国产一区二区三区 | 国产精品麻豆视频 | 中文字幕一区2区3区 | 色香蕉在线 | 欧美少妇的秘密 | 久久99在线 | 国产亚洲精品日韩在线tv黄 | 黄色看片| 久久这里只有精品视频99 | 亚洲男男gaygay无套 | 中文字幕无吗 | 亚洲精品午夜国产va久久成人 | 日韩网页| 成人欧美一区二区三区在线观看 | 久久人人爽人人爽人人片av软件 | 日韩在线第一区 | 伊人www22综合色 | 欧美孕妇与黑人孕交 | 在线观看免费中文字幕 | 国产精品麻豆99久久久久久 | 91在线九色 | 免费亚洲视频在线观看 | 97在线看片| 久久xxxx| 日韩,精品电影 | 天天操天天干天天综合网 | 国产久草在线观看 | 看片一区二区三区 | 久久99精品久久久久久秒播蜜臀 | 亚洲黄色在线免费观看 | 久久国产欧美日韩 | 91麻豆精品一区二区三区 | 伊人永久在线 | 成人午夜精品 | 久久国产电影院 | 国产成人高清av | www.国产在线观看 | 国产精品女教师 | 婷婷婷国产在线视频 | 欧美日本中文字幕 | 狠狠色噜噜狠狠狠狠2022 | 色婷婷激情五月 | 97色狠狠| 精品国产乱码久久久久久浪潮 | 精品久久久久久久久久 | 青青草国产精品 | 美女视频黄网站 | 久久精品99国产精品酒店日本 | 国产中文字幕视频在线观看 | 69视频永久免费观看 | 免费视频一区二区 | 黄色成人影院 | 久久99视频免费 | 久久综合精品国产一区二区三区 | 波多野结衣日韩 | 亚洲天堂网视频在线观看 | 射射射综合网 | 国产特级毛片 | 精品久久久久国产 | 国产精品2区 | 免费观看v片在线观看 | 最新av网站在线观看 | 人人操日日干 | 亚洲dvd| 日韩一级黄色av | 国产伦精品一区二区三区照片91 | 久久国色夜色精品国产 | 97在线观看视频国产 | 色综合人人 | 在线观看视频你懂得 | 色视频在线看 | 黄色大片av | 91在线你懂的 | 日本韩国在线不卡 | 色婷婷一区 | 超碰在线中文字幕 | 天天色草| 亚洲一级片在线观看 | 91av视频在线观看 | av先锋中文字幕 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 日韩精品第一区 | 在线视频久 | 国产精品欧美久久久久无广告 | 91欧美视频网站 | 99在线观看免费视频精品观看 | www久久九 | 精品不卡视频 | 精品成人国产 | 国产手机在线观看视频 | 999久久久久久久久 69av视频在线观看 | 伊人热| 超碰在线资源 | 久久免费精品国产 | 国产免费人人看 | 五月综合激情婷婷 | 国语久久| 午夜av在线电影 | 亚洲视频aaa| 国产久草在线观看 | www.888.av| 蜜臀av性久久久久蜜臀aⅴ四虎 | 91精品国产综合久久福利 | 亚洲精选在线观看 | 国产精品久久久久久av | 久久精品精品电影网 | 一本一道久久a久久综合蜜桃 | 97色婷婷 | 免费在线精品视频 | 色爱成人网 | 99这里只有精品99 | 夜夜高潮夜夜爽国产伦精品 | 久久久网页 | 九九久久免费 | 婷婷色视频 | 亚洲精选视频在线 | 激情丁香综合五月 | 亚洲成 人精品 | 成人久久久久久久久久 | 国产午夜免费视频 | 97在线免费观看视频 | 日韩在观看线 | 国产午夜三级一区二区三桃花影视 | 成人资源在线观看 | 97超碰超碰久久福利超碰 | av资源在线看 | 欧美日韩高清一区二区 国产亚洲免费看 | 欧美激情综合五月色丁香小说 | av综合av| 亚洲 成人 欧美 | 91久久丝袜国产露脸动漫 | 色播五月激情五月 | 毛片在线播放网址 | 天天爽夜夜爽人人爽曰av | 麻豆久久一区二区 | 国产精品欧美一区二区 | 国产精品一区久久久久 | 国产一级黄色av | 国产美女精品在线 | 日韩区欧美久久久无人区 | 国产成人一区二区三区电影 | 久久99精品国产 | 亚洲午夜激情网 | 一区二区三区在线播放 | 久久精品网站视频 | 国产成人一区在线 | 国产精品一区二区av日韩在线 | 免费看的黄色录像 | 啪啪免费试看 | 五月天亚洲激情 | 国产精品国产自产拍高清av | 欧美成人亚洲成人 | 精品国精品自拍自在线 | 欧美日韩精品影院 | 玖玖视频网 | 九九视频免费在线观看 | 久久永久免费 | 免费观看www小视频的软件 | 9999毛片 | 国产精品综合在线观看 | 天天天综合 | 亚洲涩涩一区 | 久久综合久久综合这里只有精品 | 国产午夜精品一区 | 欧美日韩国产精品一区 | 日韩在观看线 | 99热最新精品 | 久久综合狠狠综合久久激情 | av福利网址导航 | 欧美在线视频不卡 | 免费看一级 | 久久久国产精品人人片99精片欧美一 | 国产一二三区在线观看 | 日韩精品久久久久久中文字幕8 | www天天干com | 91日韩精品视频 | 国产一区影院 | 久久97超碰| 欧美日韩亚洲在线观看 | 91人网站| 精品美女久久久久久免费 | 国产高清在线一区 | 激情久久小说 | 丁香激情视频 | 国产成人免费观看 | 久草在线免费看视频 | 国产精品大片免费观看 | 色99之美女主播在线视频 | 久久久久9999亚洲精品 | 日韩欧美精品在线观看 | 中文字幕av全部资源www中文字幕在线观看 | 天天操天天射天天爱 | 国产在线久草 | 成年人在线观看免费视频 | 91在线视频 | 亚洲国产日韩欧美 | 久久国产精品一国产精品 | 色综合五月天 | 欧美影院久久 | 亚洲精品美女久久久 | 最新中文字幕在线资源 | 日韩在线播放欧美字幕 | 婷婷五综合 | 丁香色天天 | 久久久久国产精品厨房 | 国产精品免费观看久久 | 国产一级做a爱片久久毛片a | 亚洲狠狠操 | 国产生活一级片 | 狠狠色丁香婷婷综合久小说久 | 成年人在线看视频 | 免费观看视频的网站 | 国产麻豆果冻传媒在线观看 | 91精品国产乱码久久桃 | 97国产在线播放 | 久久久在线视频 | 精品国产自在精品国产精野外直播 | 中文字幕综合在线 | 日韩影视精品 | 成人在线播放网站 | 91中文字幕永久在线 | 久久艹综合 | 国产视频一区二区在线观看 | 欧美日韩不卡在线视频 | 亚洲最新视频在线 | 日韩欧美在线中文字幕 | 97网站| 精品国产伦一区二区三区免费 | 久久天堂网站 | 成年人电影毛片 | 中文字幕色婷婷在线视频 | 久久亚洲婷婷 | 中文字幕在线看视频国产 | 中文字幕日韩伦理 | 欧美在线观看视频 | 午夜电影av | 97**国产露脸精品国产 | 欧美一二三视频 | 国产高清无av久久 | 欧美日韩视频免费看 | 国产91精品一区二区绿帽 | 天天玩天天操天天射 | 免费看黄20分钟 | avav片| 视频福利在线 | www.婷婷色 | 久久国产精品区 | 中文字幕一区二区三区久久 | 欧美日韩二区在线 | 香蕉视频在线观看免费 | 国产亚洲婷婷 | 精品视频不卡 | 欧美久久久久久久久久久 | 综合色站导航 | 97超碰在线人人 | 91爱爱视频| 免费在线观看成人av | 久草在线费播放视频 | 日本字幕网 | 色网站在线| 夜夜躁日日躁狠狠久久88av | 久久成人资源 | 911久久香蕉国产线看观看 | 欧美一区二视频在线免费观看 | 欧美二区在线播放 | 欧美黄污视频 | 国产69久久久欧美一级 | 久久视频6 | 天堂av最新网址 | av高清免费 | 国产精品99在线播放 | 三级黄色免费片 | 日本午夜在线观看 | 国产婷婷色| 永久免费观看视频 | 国产日韩精品一区二区三区在线 | 人人草在线视频 | 国内精品久久久久久久影视麻豆 | 亚洲欧洲成人精品av97 | 亚洲精品国偷自产在线91正片 | 中国一区二区视频 | 人成免费网站 | 成人av在线观 | 久久精品毛片 | 18国产精品白浆在线观看免费 | 亚洲精品综合欧美二区变态 | 操操碰| 欧美 亚洲 另类 激情 另类 | 香蕉在线观看视频 | 国产 欧美 日本 | 欧美最爽乱淫视频播放 | 精品福利网站 | 久久久久久久久久久精 | 日韩女同一区二区三区在线观看 | 色视频网站免费观看 | 激情影院在线 | 人人爽人人爽人人 | 中文字幕亚洲在线观看 | 96视频在线| 涩涩网站在线观看 | 国产小视频福利在线 | 性色av免费观看 | a级片在线播放 | 欧美男同视频网站 | 六月婷操 | 中文字幕在线不卡国产视频 | 开心综合网 | 一区二区三区中文字幕在线观看 | 丁香花在线视频观看免费 | 午夜视频免费在线观看 | 精品一区二区免费 | 欧美成人黄色片 | 国产精品久久久久久久久费观看 | 又黄又刺激视频 | 久产久精国产品 | 天天做天天看 | 国产成人福利片 | 久久天天躁狠狠躁亚洲综合公司 | 色综合网 | 综合色在线 | 国产一区二区三区高清播放 | 一区二区三区www | 久操操| 国产 欧美 日产久久 | 国产黄免费在线观看 | 免费观看一区 | 人人看看人人 | 国产精品岛国久久久久久久久红粉 | 免费99精品国产自在在线 | 欧美性极品xxxx娇小 | 欧美日韩超碰 | 成人免费视频网站 | 欧美a级免费视频 | 久久亚洲综合色 | 在线视频区 | 最新中文在线视频 | 亚洲最新av在线网站 | 97视频免费观看2区 亚洲视屏 | 麻豆国产视频 | 69久久99精品久久久久婷婷 | 日韩精品一卡 | 99婷婷狠狠成为人免费视频 | 特黄特色特刺激视频免费播放 | bbw av| 久久久国产精品人人片99精片欧美一 | 综合色影院 | 国产精品免费小视频 | 在线观看国产亚洲 | 欧美一区,二区 | 日韩欧美国产激情在线播放 | 国产粉嫩在线观看 | 最新极品jizzhd欧美 | 久久看视频 | 天天干天天干天天色 | 欧美老人xxxx18 | 色婷婷88av视频一二三区 | 婷婷在线色 | 国产精品视频免费在线观看 | 男女拍拍免费视频 | 色婷婷狠狠五月综合天色拍 | 精品久久一二三区 | 999视频在线观看 | 亚洲另类人人澡 | 欧美男同视频网站 | 午夜精品久久久久久中宇69 | 日韩av午夜在线观看 | www.人人干| 一级成人免费视频 | 日本一区二区不卡高清 | 五月天亚洲激情 | 国产呻吟在线 | 99re8这里有精品热视频免费 | 天天干夜夜爱 | 中文字幕在线播放一区二区 | 色吧av色av | 蜜臀精品久久久久久蜜臀 | 久久久久久国产一区二区三区 | 五月激情综合婷婷 | 天天干干 | 日本公乱妇视频 | 国产精品久久久久久久免费观看 | 中文字幕文字幕一区二区 | 日韩在线色 | 色91在线| 久久草精品| 久久视频这里有精品 | 国内揄拍国产精品 | 成人网在线免费视频 | 五月天,com| 精品在线小视频 | 97超碰在线资源 | 在线视频 成人 | 日韩精品免费一区二区在线观看 | 天天综合91 | 天天操天天操天天 | 不卡视频国产 | 亚洲精品视频网站在线观看 | 天天射网 | 国产理论免费 | 一区二区av | 国产乱码精品一区二区三区介绍 | 亚洲日本在线视频观看 | 国产又粗又猛又爽又黄的视频免费 | 色天堂在线视频 | 久草视频在线看 | 手机av看片 | 成人中文字幕在线 | 日日干av| 成人手机在线视频 | 亚洲免费在线观看视频 | 成片免费观看视频 | 日韩精品欧美专区 | 国产高清黄色 | 韩国av一区二区三区在线观看 | 亚洲国产成人高清精品 | 2024av在线播放 | 久久国产经典视频 | 日日夜夜天天射 | 日本久久久久 | 国内精品久久久久久久久久清纯 | 国产精品久久久久久久久久免费看 | 97自拍超碰| 中文字幕在线视频精品 | 午夜精品久久久久久久99水蜜桃 | 欧美日韩视频在线一区 | 亚洲国产丝袜在线观看 | 久久草视频 | 成人av播放 | 99高清视频有精品视频 | 国产中文字幕一区 | 人人玩人人添人人澡超碰 | 99这里只有 | 久久久香蕉视频 | 国产视频一区在线免费观看 | 97日日碰人人模人人澡分享吧 | 久久久精品欧美一区二区免费 | 91人人澡人人爽 | 日韩免费在线观看视频 | av在线最新 | 一区二区精品久久 | 99视频精品 | 国产黄色观看 | 久一网站| 免费看高清毛片 | 88av视频 | 久久精品国产第一区二区三区 | 日产中文字幕 | 日日夜夜中文字幕 | 91香蕉国产在线观看软件 | 五月天激情综合 | 国产精品久久久久久久久久久久午夜片 | 欧美激情第28页 | 四季av综合网站 | 久久国内精品视频 | 91精品在线免费 | 干 操 插| 久久免费a| 久草香蕉在线视频 | 日韩国产精品毛片 | 97超碰人人在线 | 性色av一区二区 | 久久伊99综合婷婷久久伊 | 久久蜜桃av | 国产精品毛片一区二区三区 | 在线免费观看涩涩 | 日韩高清不卡一区二区三区 | 日本久久片 | 亚洲免费在线视频 | 国产高清视频在线播放一区 | 国产一区自拍视频 | 欧美国产日韩在线观看 | 久久久精品久久日韩一区综合 | 亚洲精品一区中文字幕乱码 | 亚洲综合激情五月 | 久久精品播放 | 久久久久99精品国产片 | 99在线热播精品免费 | 中文字幕专区高清在线观看 | 日本精品视频在线观看 | 日本精品一区二区三区在线播放视频 | 中文字幕免费高清在线 | www.五月激情.com| 亚洲精品一区二区三区高潮 | 久草在线手机视频 | 国产又粗又猛又色又黄视频 | 久久精品网站视频 | 欧美色就是色 | 天天干,天天操,天天射 | 日本黄色免费在线观看 | 久久精品国产亚洲精品2020 | 国产精品手机视频 | 精品国产伦一区二区三区观看体验 | www178ccom视频在线| 成人免费观看在线视频 | 美女一二三区 | 97在线观看视频国产 | 色五月色开心色婷婷色丁香 | 日日干夜夜草 | 97成人资源站 | 成人作爱视频 | 视频在线观看入口黄最新永久免费国产 | 中文字幕视频免费观看 | 久久,天天综合 | 96在线| 国产精品国产亚洲精品看不卡 | 日韩综合视频在线观看 | 免费午夜视频在线观看 | 国产在线自 | 婷婷六月综合亚洲 | 色在线国产 | 欧美老人xxxx18 | 91精品小视频 | 免费a网址| 成人免费视频在线观看 | 天天爽人人爽 | 在线播放日韩 | 五月精品 | 亚洲午夜久久久影院 | 亚洲黄色成人网 | 国产99区 | 国产美女免费看 | 中文字幕免费观看视频 | 国产精品久久久久永久免费观看 | 一本色道久久精品 | 日韩欧美在线免费 | 日本91在线 | 久久免费精彩视频 | 成人片在线播放 | 日日干综合 | 色狠狠狠| 久久午夜视频 | 久久久久免费精品国产 | 亚洲 欧美 国产 va在线影院 | 九九热免费观看 | 免费色网 | 国产.精品.日韩.另类.中文.在线.播放 | 久久这里只有精品首页 | 国产一区二区不卡在线 | 亚洲午夜精品福利 | 久久精品一二区 | 69久久久久久久 | 国产玖玖精品视频 | 国产原厂视频在线观看 | 天天操天天射天天 | 欧美激情在线看 | 97国产大学生情侣白嫩酒店 | 亚洲成av人片在线观看www | 久久亚洲影视 | 婷婷色在线观看 | 五月婷婷激情综合网 | 国产色视频网站 | 日本中文字幕网站 | 国产精品久久久久久五月尺 | 亚洲一区二区精品3399 | 97精品一区二区三区 | 亚洲我射av | 成人a级网站 | 黄色一区二区在线观看 | 美女av在线免费 | 综合天天| 丝袜美腿av | 韩国一区二区av | 日本久久免费视频 | 久久久免费av | 免费视频三区 | 国产精品久久久久久吹潮天美传媒 | 99re8这里有精品热视频免费 | 国产精品18毛片一区二区 | 久久综合久久综合这里只有精品 | 7799av | 97成人资源 | 日韩欧美视频一区二区 | 丁香激情五月 | 国产精品成人久久久久 | 久草www| av在线观| 亚洲一级特黄 | 国模视频一区二区三区 | 91亚洲精 | 久久精品国产一区二区 | 99久热在线精品视频 | 91资源在线免费观看 | 色婷婷国产在线 | 激情欧美一区二区三区免费看 | 日本精品午夜 | 国产精品理论在线观看 | 成人动漫一区二区 | 超碰在线99 | 欧美一区二区三区在线观看 | 久久久国产精品人人片99精片欧美一 | 黄色综合 | 久久免费精品一区二区三区 | 国产91精品看黄网站在线观看动漫 | 久草在线视频在线 | 亚洲九九| 久久久激情网 | 91精品在线视频 | 99色视频 | 99色国产| 久久不卡日韩美女 | av导航福利 | 91av在线看 | 国产三级视频在线 | 米奇四色影视 | 你操综合| 国产视频日韩视频欧美视频 | 在线观看色网站 | 日韩久久久久久久 | 综合天天色 | 超碰97免费 | 91成人免费看片 | 亚洲精选在线 | 亚洲激精日韩激精欧美精品 | 97日日碰人人模人人澡分享吧 | 欧美伦理电影一区二区 | av高清网站在线观看 | 日韩在线国产精品 | 国产视频亚洲精品 | 91精品国自产拍天天拍 | 中文字幕91视频 | 久久久一本精品99久久精品 | 99久久久久成人国产免费 | 一区三区视频 | 免费高清在线视频一区· | 久久999精品 | 在线一区电影 | 国产特级毛片aaaaaa | 国产在线精品一区二区 | av经典在线 | 麻豆视频www | 日韩美女一级片 | 99麻豆视频 | 欧美色婷婷 | 天天操天天干天天 | 亚洲国产日韩精品 | 久久不卡日韩美女 | 国产精品电影一区 | 精品国产乱码久久久久久三级人 | 蜜臀91丨九色丨蝌蚪老版 | 国产精品99久久久久久大便 | 最新在线你懂的 | 国产一区二区三区免费在线 |